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/managedblockchain/ManagedBlockchain_EXPORTS.h>
8 #include <aws/managedblockchain/ManagedBlockchainErrors.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/managedblockchain/model/CreateMemberResult.h>
15 #include <aws/managedblockchain/model/CreateNetworkResult.h>
16 #include <aws/managedblockchain/model/CreateNodeResult.h>
17 #include <aws/managedblockchain/model/CreateProposalResult.h>
18 #include <aws/managedblockchain/model/DeleteMemberResult.h>
19 #include <aws/managedblockchain/model/DeleteNodeResult.h>
20 #include <aws/managedblockchain/model/GetMemberResult.h>
21 #include <aws/managedblockchain/model/GetNetworkResult.h>
22 #include <aws/managedblockchain/model/GetNodeResult.h>
23 #include <aws/managedblockchain/model/GetProposalResult.h>
24 #include <aws/managedblockchain/model/ListInvitationsResult.h>
25 #include <aws/managedblockchain/model/ListMembersResult.h>
26 #include <aws/managedblockchain/model/ListNetworksResult.h>
27 #include <aws/managedblockchain/model/ListNodesResult.h>
28 #include <aws/managedblockchain/model/ListProposalVotesResult.h>
29 #include <aws/managedblockchain/model/ListProposalsResult.h>
30 #include <aws/managedblockchain/model/ListTagsForResourceResult.h>
31 #include <aws/managedblockchain/model/RejectInvitationResult.h>
32 #include <aws/managedblockchain/model/TagResourceResult.h>
33 #include <aws/managedblockchain/model/UntagResourceResult.h>
34 #include <aws/managedblockchain/model/UpdateMemberResult.h>
35 #include <aws/managedblockchain/model/UpdateNodeResult.h>
36 #include <aws/managedblockchain/model/VoteOnProposalResult.h>
37 #include <aws/core/client/AsyncCallerContext.h>
38 #include <aws/core/http/HttpTypes.h>
39 #include <future>
40 #include <functional>
41 
42 namespace Aws
43 {
44 
45 namespace Http
46 {
47   class HttpClient;
48   class HttpClientFactory;
49 } // namespace Http
50 
51 namespace Utils
52 {
53   template< typename R, typename E> class Outcome;
54 namespace Threading
55 {
56   class Executor;
57 } // namespace Threading
58 } // namespace Utils
59 
60 namespace Auth
61 {
62   class AWSCredentials;
63   class AWSCredentialsProvider;
64 } // namespace Auth
65 
66 namespace Client
67 {
68   class RetryStrategy;
69 } // namespace Client
70 
71 namespace ManagedBlockchain
72 {
73 
74 namespace Model
75 {
76         class CreateMemberRequest;
77         class CreateNetworkRequest;
78         class CreateNodeRequest;
79         class CreateProposalRequest;
80         class DeleteMemberRequest;
81         class DeleteNodeRequest;
82         class GetMemberRequest;
83         class GetNetworkRequest;
84         class GetNodeRequest;
85         class GetProposalRequest;
86         class ListInvitationsRequest;
87         class ListMembersRequest;
88         class ListNetworksRequest;
89         class ListNodesRequest;
90         class ListProposalVotesRequest;
91         class ListProposalsRequest;
92         class ListTagsForResourceRequest;
93         class RejectInvitationRequest;
94         class TagResourceRequest;
95         class UntagResourceRequest;
96         class UpdateMemberRequest;
97         class UpdateNodeRequest;
98         class VoteOnProposalRequest;
99 
100         typedef Aws::Utils::Outcome<CreateMemberResult, ManagedBlockchainError> CreateMemberOutcome;
101         typedef Aws::Utils::Outcome<CreateNetworkResult, ManagedBlockchainError> CreateNetworkOutcome;
102         typedef Aws::Utils::Outcome<CreateNodeResult, ManagedBlockchainError> CreateNodeOutcome;
103         typedef Aws::Utils::Outcome<CreateProposalResult, ManagedBlockchainError> CreateProposalOutcome;
104         typedef Aws::Utils::Outcome<DeleteMemberResult, ManagedBlockchainError> DeleteMemberOutcome;
105         typedef Aws::Utils::Outcome<DeleteNodeResult, ManagedBlockchainError> DeleteNodeOutcome;
106         typedef Aws::Utils::Outcome<GetMemberResult, ManagedBlockchainError> GetMemberOutcome;
107         typedef Aws::Utils::Outcome<GetNetworkResult, ManagedBlockchainError> GetNetworkOutcome;
108         typedef Aws::Utils::Outcome<GetNodeResult, ManagedBlockchainError> GetNodeOutcome;
109         typedef Aws::Utils::Outcome<GetProposalResult, ManagedBlockchainError> GetProposalOutcome;
110         typedef Aws::Utils::Outcome<ListInvitationsResult, ManagedBlockchainError> ListInvitationsOutcome;
111         typedef Aws::Utils::Outcome<ListMembersResult, ManagedBlockchainError> ListMembersOutcome;
112         typedef Aws::Utils::Outcome<ListNetworksResult, ManagedBlockchainError> ListNetworksOutcome;
113         typedef Aws::Utils::Outcome<ListNodesResult, ManagedBlockchainError> ListNodesOutcome;
114         typedef Aws::Utils::Outcome<ListProposalVotesResult, ManagedBlockchainError> ListProposalVotesOutcome;
115         typedef Aws::Utils::Outcome<ListProposalsResult, ManagedBlockchainError> ListProposalsOutcome;
116         typedef Aws::Utils::Outcome<ListTagsForResourceResult, ManagedBlockchainError> ListTagsForResourceOutcome;
117         typedef Aws::Utils::Outcome<RejectInvitationResult, ManagedBlockchainError> RejectInvitationOutcome;
118         typedef Aws::Utils::Outcome<TagResourceResult, ManagedBlockchainError> TagResourceOutcome;
119         typedef Aws::Utils::Outcome<UntagResourceResult, ManagedBlockchainError> UntagResourceOutcome;
120         typedef Aws::Utils::Outcome<UpdateMemberResult, ManagedBlockchainError> UpdateMemberOutcome;
121         typedef Aws::Utils::Outcome<UpdateNodeResult, ManagedBlockchainError> UpdateNodeOutcome;
122         typedef Aws::Utils::Outcome<VoteOnProposalResult, ManagedBlockchainError> VoteOnProposalOutcome;
123 
124         typedef std::future<CreateMemberOutcome> CreateMemberOutcomeCallable;
125         typedef std::future<CreateNetworkOutcome> CreateNetworkOutcomeCallable;
126         typedef std::future<CreateNodeOutcome> CreateNodeOutcomeCallable;
127         typedef std::future<CreateProposalOutcome> CreateProposalOutcomeCallable;
128         typedef std::future<DeleteMemberOutcome> DeleteMemberOutcomeCallable;
129         typedef std::future<DeleteNodeOutcome> DeleteNodeOutcomeCallable;
130         typedef std::future<GetMemberOutcome> GetMemberOutcomeCallable;
131         typedef std::future<GetNetworkOutcome> GetNetworkOutcomeCallable;
132         typedef std::future<GetNodeOutcome> GetNodeOutcomeCallable;
133         typedef std::future<GetProposalOutcome> GetProposalOutcomeCallable;
134         typedef std::future<ListInvitationsOutcome> ListInvitationsOutcomeCallable;
135         typedef std::future<ListMembersOutcome> ListMembersOutcomeCallable;
136         typedef std::future<ListNetworksOutcome> ListNetworksOutcomeCallable;
137         typedef std::future<ListNodesOutcome> ListNodesOutcomeCallable;
138         typedef std::future<ListProposalVotesOutcome> ListProposalVotesOutcomeCallable;
139         typedef std::future<ListProposalsOutcome> ListProposalsOutcomeCallable;
140         typedef std::future<ListTagsForResourceOutcome> ListTagsForResourceOutcomeCallable;
141         typedef std::future<RejectInvitationOutcome> RejectInvitationOutcomeCallable;
142         typedef std::future<TagResourceOutcome> TagResourceOutcomeCallable;
143         typedef std::future<UntagResourceOutcome> UntagResourceOutcomeCallable;
144         typedef std::future<UpdateMemberOutcome> UpdateMemberOutcomeCallable;
145         typedef std::future<UpdateNodeOutcome> UpdateNodeOutcomeCallable;
146         typedef std::future<VoteOnProposalOutcome> VoteOnProposalOutcomeCallable;
147 } // namespace Model
148 
149   class ManagedBlockchainClient;
150 
151     typedef std::function<void(const ManagedBlockchainClient*, const Model::CreateMemberRequest&, const Model::CreateMemberOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateMemberResponseReceivedHandler;
152     typedef std::function<void(const ManagedBlockchainClient*, const Model::CreateNetworkRequest&, const Model::CreateNetworkOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateNetworkResponseReceivedHandler;
153     typedef std::function<void(const ManagedBlockchainClient*, const Model::CreateNodeRequest&, const Model::CreateNodeOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateNodeResponseReceivedHandler;
154     typedef std::function<void(const ManagedBlockchainClient*, const Model::CreateProposalRequest&, const Model::CreateProposalOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateProposalResponseReceivedHandler;
155     typedef std::function<void(const ManagedBlockchainClient*, const Model::DeleteMemberRequest&, const Model::DeleteMemberOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteMemberResponseReceivedHandler;
156     typedef std::function<void(const ManagedBlockchainClient*, const Model::DeleteNodeRequest&, const Model::DeleteNodeOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteNodeResponseReceivedHandler;
157     typedef std::function<void(const ManagedBlockchainClient*, const Model::GetMemberRequest&, const Model::GetMemberOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetMemberResponseReceivedHandler;
158     typedef std::function<void(const ManagedBlockchainClient*, const Model::GetNetworkRequest&, const Model::GetNetworkOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetNetworkResponseReceivedHandler;
159     typedef std::function<void(const ManagedBlockchainClient*, const Model::GetNodeRequest&, const Model::GetNodeOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetNodeResponseReceivedHandler;
160     typedef std::function<void(const ManagedBlockchainClient*, const Model::GetProposalRequest&, const Model::GetProposalOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetProposalResponseReceivedHandler;
161     typedef std::function<void(const ManagedBlockchainClient*, const Model::ListInvitationsRequest&, const Model::ListInvitationsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListInvitationsResponseReceivedHandler;
162     typedef std::function<void(const ManagedBlockchainClient*, const Model::ListMembersRequest&, const Model::ListMembersOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListMembersResponseReceivedHandler;
163     typedef std::function<void(const ManagedBlockchainClient*, const Model::ListNetworksRequest&, const Model::ListNetworksOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListNetworksResponseReceivedHandler;
164     typedef std::function<void(const ManagedBlockchainClient*, const Model::ListNodesRequest&, const Model::ListNodesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListNodesResponseReceivedHandler;
165     typedef std::function<void(const ManagedBlockchainClient*, const Model::ListProposalVotesRequest&, const Model::ListProposalVotesOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListProposalVotesResponseReceivedHandler;
166     typedef std::function<void(const ManagedBlockchainClient*, const Model::ListProposalsRequest&, const Model::ListProposalsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListProposalsResponseReceivedHandler;
167     typedef std::function<void(const ManagedBlockchainClient*, const Model::ListTagsForResourceRequest&, const Model::ListTagsForResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListTagsForResourceResponseReceivedHandler;
168     typedef std::function<void(const ManagedBlockchainClient*, const Model::RejectInvitationRequest&, const Model::RejectInvitationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > RejectInvitationResponseReceivedHandler;
169     typedef std::function<void(const ManagedBlockchainClient*, const Model::TagResourceRequest&, const Model::TagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > TagResourceResponseReceivedHandler;
170     typedef std::function<void(const ManagedBlockchainClient*, const Model::UntagResourceRequest&, const Model::UntagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UntagResourceResponseReceivedHandler;
171     typedef std::function<void(const ManagedBlockchainClient*, const Model::UpdateMemberRequest&, const Model::UpdateMemberOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateMemberResponseReceivedHandler;
172     typedef std::function<void(const ManagedBlockchainClient*, const Model::UpdateNodeRequest&, const Model::UpdateNodeOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateNodeResponseReceivedHandler;
173     typedef std::function<void(const ManagedBlockchainClient*, const Model::VoteOnProposalRequest&, const Model::VoteOnProposalOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > VoteOnProposalResponseReceivedHandler;
174 
175   /**
176    * <p/> <p>Amazon Managed Blockchain is a fully managed service for creating and
177    * managing blockchain networks using open-source frameworks. Blockchain allows you
178    * to build applications where multiple parties can securely and transparently run
179    * transactions and share data without the need for a trusted, central
180    * authority.</p> <p>Managed Blockchain supports the Hyperledger Fabric and
181    * Ethereum open-source frameworks. Because of fundamental differences between the
182    * frameworks, some API actions or data types may only apply in the context of one
183    * framework and not the other. For example, actions related to Hyperledger Fabric
184    * network members such as <code>CreateMember</code> and <code>DeleteMember</code>
185    * do not apply to Ethereum.</p> <p>The description for each action indicates the
186    * framework or frameworks to which it applies. Data types and properties that
187    * apply only in the context of a particular framework are similarly indicated.</p>
188    */
189   class AWS_MANAGEDBLOCKCHAIN_API ManagedBlockchainClient : public Aws::Client::AWSJsonClient
190   {
191     public:
192       typedef Aws::Client::AWSJsonClient BASECLASS;
193 
194        /**
195         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
196         * is not specified, it will be initialized to default values.
197         */
198         ManagedBlockchainClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
199 
200        /**
201         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
202         * is not specified, it will be initialized to default values.
203         */
204         ManagedBlockchainClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
205 
206        /**
207         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
208         * the default http client factory will be used
209         */
210         ManagedBlockchainClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
211             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
212 
213         virtual ~ManagedBlockchainClient();
214 
215 
216         /**
217          * <p>Creates a member within a Managed Blockchain network.</p> <p>Applies only to
218          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
219          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateMember">AWS
220          * API Reference</a></p>
221          */
222         virtual Model::CreateMemberOutcome CreateMember(const Model::CreateMemberRequest& request) const;
223 
224         /**
225          * <p>Creates a member within a Managed Blockchain network.</p> <p>Applies only to
226          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
227          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateMember">AWS
228          * API Reference</a></p>
229          *
230          * returns a future to the operation so that it can be executed in parallel to other requests.
231          */
232         virtual Model::CreateMemberOutcomeCallable CreateMemberCallable(const Model::CreateMemberRequest& request) const;
233 
234         /**
235          * <p>Creates a member within a Managed Blockchain network.</p> <p>Applies only to
236          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
237          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateMember">AWS
238          * API Reference</a></p>
239          *
240          * Queues the request into a thread executor and triggers associated callback when operation has finished.
241          */
242         virtual void CreateMemberAsync(const Model::CreateMemberRequest& request, const CreateMemberResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
243 
244         /**
245          * <p>Creates a new blockchain network using Amazon Managed Blockchain.</p>
246          * <p>Applies only to Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
247          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateNetwork">AWS
248          * API Reference</a></p>
249          */
250         virtual Model::CreateNetworkOutcome CreateNetwork(const Model::CreateNetworkRequest& request) const;
251 
252         /**
253          * <p>Creates a new blockchain network using Amazon Managed Blockchain.</p>
254          * <p>Applies only to Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
255          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateNetwork">AWS
256          * API Reference</a></p>
257          *
258          * returns a future to the operation so that it can be executed in parallel to other requests.
259          */
260         virtual Model::CreateNetworkOutcomeCallable CreateNetworkCallable(const Model::CreateNetworkRequest& request) const;
261 
262         /**
263          * <p>Creates a new blockchain network using Amazon Managed Blockchain.</p>
264          * <p>Applies only to Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
265          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateNetwork">AWS
266          * API Reference</a></p>
267          *
268          * Queues the request into a thread executor and triggers associated callback when operation has finished.
269          */
270         virtual void CreateNetworkAsync(const Model::CreateNetworkRequest& request, const CreateNetworkResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
271 
272         /**
273          * <p>Creates a node on the specified blockchain network.</p> <p>Applies to
274          * Hyperledger Fabric and Ethereum.</p><p><h3>See Also:</h3>   <a
275          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateNode">AWS
276          * API Reference</a></p>
277          */
278         virtual Model::CreateNodeOutcome CreateNode(const Model::CreateNodeRequest& request) const;
279 
280         /**
281          * <p>Creates a node on the specified blockchain network.</p> <p>Applies to
282          * Hyperledger Fabric and Ethereum.</p><p><h3>See Also:</h3>   <a
283          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateNode">AWS
284          * API Reference</a></p>
285          *
286          * returns a future to the operation so that it can be executed in parallel to other requests.
287          */
288         virtual Model::CreateNodeOutcomeCallable CreateNodeCallable(const Model::CreateNodeRequest& request) const;
289 
290         /**
291          * <p>Creates a node on the specified blockchain network.</p> <p>Applies to
292          * Hyperledger Fabric and Ethereum.</p><p><h3>See Also:</h3>   <a
293          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateNode">AWS
294          * API Reference</a></p>
295          *
296          * Queues the request into a thread executor and triggers associated callback when operation has finished.
297          */
298         virtual void CreateNodeAsync(const Model::CreateNodeRequest& request, const CreateNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
299 
300         /**
301          * <p>Creates a proposal for a change to the network that other members of the
302          * network can vote on, for example, a proposal to add a new member to the network.
303          * Any member can create a proposal.</p> <p>Applies only to Hyperledger
304          * Fabric.</p><p><h3>See Also:</h3>   <a
305          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateProposal">AWS
306          * API Reference</a></p>
307          */
308         virtual Model::CreateProposalOutcome CreateProposal(const Model::CreateProposalRequest& request) const;
309 
310         /**
311          * <p>Creates a proposal for a change to the network that other members of the
312          * network can vote on, for example, a proposal to add a new member to the network.
313          * Any member can create a proposal.</p> <p>Applies only to Hyperledger
314          * Fabric.</p><p><h3>See Also:</h3>   <a
315          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateProposal">AWS
316          * API Reference</a></p>
317          *
318          * returns a future to the operation so that it can be executed in parallel to other requests.
319          */
320         virtual Model::CreateProposalOutcomeCallable CreateProposalCallable(const Model::CreateProposalRequest& request) const;
321 
322         /**
323          * <p>Creates a proposal for a change to the network that other members of the
324          * network can vote on, for example, a proposal to add a new member to the network.
325          * Any member can create a proposal.</p> <p>Applies only to Hyperledger
326          * Fabric.</p><p><h3>See Also:</h3>   <a
327          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/CreateProposal">AWS
328          * API Reference</a></p>
329          *
330          * Queues the request into a thread executor and triggers associated callback when operation has finished.
331          */
332         virtual void CreateProposalAsync(const Model::CreateProposalRequest& request, const CreateProposalResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
333 
334         /**
335          * <p>Deletes a member. Deleting a member removes the member and all associated
336          * resources from the network. <code>DeleteMember</code> can only be called for a
337          * specified <code>MemberId</code> if the principal performing the action is
338          * associated with the AWS account that owns the member. In all other cases, the
339          * <code>DeleteMember</code> action is carried out as the result of an approved
340          * proposal to remove a member. If <code>MemberId</code> is the last member in a
341          * network specified by the last AWS account, the network is deleted also.</p>
342          * <p>Applies only to Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
343          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/DeleteMember">AWS
344          * API Reference</a></p>
345          */
346         virtual Model::DeleteMemberOutcome DeleteMember(const Model::DeleteMemberRequest& request) const;
347 
348         /**
349          * <p>Deletes a member. Deleting a member removes the member and all associated
350          * resources from the network. <code>DeleteMember</code> can only be called for a
351          * specified <code>MemberId</code> if the principal performing the action is
352          * associated with the AWS account that owns the member. In all other cases, the
353          * <code>DeleteMember</code> action is carried out as the result of an approved
354          * proposal to remove a member. If <code>MemberId</code> is the last member in a
355          * network specified by the last AWS account, the network is deleted also.</p>
356          * <p>Applies only to Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
357          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/DeleteMember">AWS
358          * API Reference</a></p>
359          *
360          * returns a future to the operation so that it can be executed in parallel to other requests.
361          */
362         virtual Model::DeleteMemberOutcomeCallable DeleteMemberCallable(const Model::DeleteMemberRequest& request) const;
363 
364         /**
365          * <p>Deletes a member. Deleting a member removes the member and all associated
366          * resources from the network. <code>DeleteMember</code> can only be called for a
367          * specified <code>MemberId</code> if the principal performing the action is
368          * associated with the AWS account that owns the member. In all other cases, the
369          * <code>DeleteMember</code> action is carried out as the result of an approved
370          * proposal to remove a member. If <code>MemberId</code> is the last member in a
371          * network specified by the last AWS account, the network is deleted also.</p>
372          * <p>Applies only to Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
373          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/DeleteMember">AWS
374          * API Reference</a></p>
375          *
376          * Queues the request into a thread executor and triggers associated callback when operation has finished.
377          */
378         virtual void DeleteMemberAsync(const Model::DeleteMemberRequest& request, const DeleteMemberResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
379 
380         /**
381          * <p>Deletes a node that your AWS account owns. All data on the node is lost and
382          * cannot be recovered.</p> <p>Applies to Hyperledger Fabric and
383          * Ethereum.</p><p><h3>See Also:</h3>   <a
384          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/DeleteNode">AWS
385          * API Reference</a></p>
386          */
387         virtual Model::DeleteNodeOutcome DeleteNode(const Model::DeleteNodeRequest& request) const;
388 
389         /**
390          * <p>Deletes a node that your AWS account owns. All data on the node is lost and
391          * cannot be recovered.</p> <p>Applies to Hyperledger Fabric and
392          * Ethereum.</p><p><h3>See Also:</h3>   <a
393          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/DeleteNode">AWS
394          * API Reference</a></p>
395          *
396          * returns a future to the operation so that it can be executed in parallel to other requests.
397          */
398         virtual Model::DeleteNodeOutcomeCallable DeleteNodeCallable(const Model::DeleteNodeRequest& request) const;
399 
400         /**
401          * <p>Deletes a node that your AWS account owns. All data on the node is lost and
402          * cannot be recovered.</p> <p>Applies to Hyperledger Fabric and
403          * Ethereum.</p><p><h3>See Also:</h3>   <a
404          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/DeleteNode">AWS
405          * API Reference</a></p>
406          *
407          * Queues the request into a thread executor and triggers associated callback when operation has finished.
408          */
409         virtual void DeleteNodeAsync(const Model::DeleteNodeRequest& request, const DeleteNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
410 
411         /**
412          * <p>Returns detailed information about a member.</p> <p>Applies only to
413          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
414          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/GetMember">AWS
415          * API Reference</a></p>
416          */
417         virtual Model::GetMemberOutcome GetMember(const Model::GetMemberRequest& request) const;
418 
419         /**
420          * <p>Returns detailed information about a member.</p> <p>Applies only to
421          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
422          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/GetMember">AWS
423          * API Reference</a></p>
424          *
425          * returns a future to the operation so that it can be executed in parallel to other requests.
426          */
427         virtual Model::GetMemberOutcomeCallable GetMemberCallable(const Model::GetMemberRequest& request) const;
428 
429         /**
430          * <p>Returns detailed information about a member.</p> <p>Applies only to
431          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
432          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/GetMember">AWS
433          * API Reference</a></p>
434          *
435          * Queues the request into a thread executor and triggers associated callback when operation has finished.
436          */
437         virtual void GetMemberAsync(const Model::GetMemberRequest& request, const GetMemberResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
438 
439         /**
440          * <p>Returns detailed information about a network.</p> <p>Applies to Hyperledger
441          * Fabric and Ethereum.</p><p><h3>See Also:</h3>   <a
442          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/GetNetwork">AWS
443          * API Reference</a></p>
444          */
445         virtual Model::GetNetworkOutcome GetNetwork(const Model::GetNetworkRequest& request) const;
446 
447         /**
448          * <p>Returns detailed information about a network.</p> <p>Applies to Hyperledger
449          * Fabric and Ethereum.</p><p><h3>See Also:</h3>   <a
450          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/GetNetwork">AWS
451          * API Reference</a></p>
452          *
453          * returns a future to the operation so that it can be executed in parallel to other requests.
454          */
455         virtual Model::GetNetworkOutcomeCallable GetNetworkCallable(const Model::GetNetworkRequest& request) const;
456 
457         /**
458          * <p>Returns detailed information about a network.</p> <p>Applies to Hyperledger
459          * Fabric and Ethereum.</p><p><h3>See Also:</h3>   <a
460          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/GetNetwork">AWS
461          * API Reference</a></p>
462          *
463          * Queues the request into a thread executor and triggers associated callback when operation has finished.
464          */
465         virtual void GetNetworkAsync(const Model::GetNetworkRequest& request, const GetNetworkResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
466 
467         /**
468          * <p>Returns detailed information about a node.</p> <p>Applies to Hyperledger
469          * Fabric and Ethereum.</p><p><h3>See Also:</h3>   <a
470          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/GetNode">AWS
471          * API Reference</a></p>
472          */
473         virtual Model::GetNodeOutcome GetNode(const Model::GetNodeRequest& request) const;
474 
475         /**
476          * <p>Returns detailed information about a node.</p> <p>Applies to Hyperledger
477          * Fabric and Ethereum.</p><p><h3>See Also:</h3>   <a
478          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/GetNode">AWS
479          * API Reference</a></p>
480          *
481          * returns a future to the operation so that it can be executed in parallel to other requests.
482          */
483         virtual Model::GetNodeOutcomeCallable GetNodeCallable(const Model::GetNodeRequest& request) const;
484 
485         /**
486          * <p>Returns detailed information about a node.</p> <p>Applies to Hyperledger
487          * Fabric and Ethereum.</p><p><h3>See Also:</h3>   <a
488          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/GetNode">AWS
489          * API Reference</a></p>
490          *
491          * Queues the request into a thread executor and triggers associated callback when operation has finished.
492          */
493         virtual void GetNodeAsync(const Model::GetNodeRequest& request, const GetNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
494 
495         /**
496          * <p>Returns detailed information about a proposal.</p> <p>Applies only to
497          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
498          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/GetProposal">AWS
499          * API Reference</a></p>
500          */
501         virtual Model::GetProposalOutcome GetProposal(const Model::GetProposalRequest& request) const;
502 
503         /**
504          * <p>Returns detailed information about a proposal.</p> <p>Applies only to
505          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
506          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/GetProposal">AWS
507          * API Reference</a></p>
508          *
509          * returns a future to the operation so that it can be executed in parallel to other requests.
510          */
511         virtual Model::GetProposalOutcomeCallable GetProposalCallable(const Model::GetProposalRequest& request) const;
512 
513         /**
514          * <p>Returns detailed information about a proposal.</p> <p>Applies only to
515          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
516          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/GetProposal">AWS
517          * API Reference</a></p>
518          *
519          * Queues the request into a thread executor and triggers associated callback when operation has finished.
520          */
521         virtual void GetProposalAsync(const Model::GetProposalRequest& request, const GetProposalResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
522 
523         /**
524          * <p>Returns a list of all invitations for the current AWS account.</p> <p>Applies
525          * only to Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
526          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListInvitations">AWS
527          * API Reference</a></p>
528          */
529         virtual Model::ListInvitationsOutcome ListInvitations(const Model::ListInvitationsRequest& request) const;
530 
531         /**
532          * <p>Returns a list of all invitations for the current AWS account.</p> <p>Applies
533          * only to Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
534          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListInvitations">AWS
535          * API Reference</a></p>
536          *
537          * returns a future to the operation so that it can be executed in parallel to other requests.
538          */
539         virtual Model::ListInvitationsOutcomeCallable ListInvitationsCallable(const Model::ListInvitationsRequest& request) const;
540 
541         /**
542          * <p>Returns a list of all invitations for the current AWS account.</p> <p>Applies
543          * only to Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
544          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListInvitations">AWS
545          * API Reference</a></p>
546          *
547          * Queues the request into a thread executor and triggers associated callback when operation has finished.
548          */
549         virtual void ListInvitationsAsync(const Model::ListInvitationsRequest& request, const ListInvitationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
550 
551         /**
552          * <p>Returns a list of the members in a network and properties of their
553          * configurations.</p> <p>Applies only to Hyperledger Fabric.</p><p><h3>See
554          * Also:</h3>   <a
555          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListMembers">AWS
556          * API Reference</a></p>
557          */
558         virtual Model::ListMembersOutcome ListMembers(const Model::ListMembersRequest& request) const;
559 
560         /**
561          * <p>Returns a list of the members in a network and properties of their
562          * configurations.</p> <p>Applies only to Hyperledger Fabric.</p><p><h3>See
563          * Also:</h3>   <a
564          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListMembers">AWS
565          * API Reference</a></p>
566          *
567          * returns a future to the operation so that it can be executed in parallel to other requests.
568          */
569         virtual Model::ListMembersOutcomeCallable ListMembersCallable(const Model::ListMembersRequest& request) const;
570 
571         /**
572          * <p>Returns a list of the members in a network and properties of their
573          * configurations.</p> <p>Applies only to Hyperledger Fabric.</p><p><h3>See
574          * Also:</h3>   <a
575          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListMembers">AWS
576          * API Reference</a></p>
577          *
578          * Queues the request into a thread executor and triggers associated callback when operation has finished.
579          */
580         virtual void ListMembersAsync(const Model::ListMembersRequest& request, const ListMembersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
581 
582         /**
583          * <p>Returns information about the networks in which the current AWS account
584          * participates.</p> <p>Applies to Hyperledger Fabric and Ethereum.</p><p><h3>See
585          * Also:</h3>   <a
586          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListNetworks">AWS
587          * API Reference</a></p>
588          */
589         virtual Model::ListNetworksOutcome ListNetworks(const Model::ListNetworksRequest& request) const;
590 
591         /**
592          * <p>Returns information about the networks in which the current AWS account
593          * participates.</p> <p>Applies to Hyperledger Fabric and Ethereum.</p><p><h3>See
594          * Also:</h3>   <a
595          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListNetworks">AWS
596          * API Reference</a></p>
597          *
598          * returns a future to the operation so that it can be executed in parallel to other requests.
599          */
600         virtual Model::ListNetworksOutcomeCallable ListNetworksCallable(const Model::ListNetworksRequest& request) const;
601 
602         /**
603          * <p>Returns information about the networks in which the current AWS account
604          * participates.</p> <p>Applies to Hyperledger Fabric and Ethereum.</p><p><h3>See
605          * Also:</h3>   <a
606          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListNetworks">AWS
607          * API Reference</a></p>
608          *
609          * Queues the request into a thread executor and triggers associated callback when operation has finished.
610          */
611         virtual void ListNetworksAsync(const Model::ListNetworksRequest& request, const ListNetworksResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
612 
613         /**
614          * <p>Returns information about the nodes within a network.</p> <p>Applies to
615          * Hyperledger Fabric and Ethereum.</p><p><h3>See Also:</h3>   <a
616          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListNodes">AWS
617          * API Reference</a></p>
618          */
619         virtual Model::ListNodesOutcome ListNodes(const Model::ListNodesRequest& request) const;
620 
621         /**
622          * <p>Returns information about the nodes within a network.</p> <p>Applies to
623          * Hyperledger Fabric and Ethereum.</p><p><h3>See Also:</h3>   <a
624          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListNodes">AWS
625          * API Reference</a></p>
626          *
627          * returns a future to the operation so that it can be executed in parallel to other requests.
628          */
629         virtual Model::ListNodesOutcomeCallable ListNodesCallable(const Model::ListNodesRequest& request) const;
630 
631         /**
632          * <p>Returns information about the nodes within a network.</p> <p>Applies to
633          * Hyperledger Fabric and Ethereum.</p><p><h3>See Also:</h3>   <a
634          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListNodes">AWS
635          * API Reference</a></p>
636          *
637          * Queues the request into a thread executor and triggers associated callback when operation has finished.
638          */
639         virtual void ListNodesAsync(const Model::ListNodesRequest& request, const ListNodesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
640 
641         /**
642          * <p>Returns the list of votes for a specified proposal, including the value of
643          * each vote and the unique identifier of the member that cast the vote.</p>
644          * <p>Applies only to Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
645          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListProposalVotes">AWS
646          * API Reference</a></p>
647          */
648         virtual Model::ListProposalVotesOutcome ListProposalVotes(const Model::ListProposalVotesRequest& request) const;
649 
650         /**
651          * <p>Returns the list of votes for a specified proposal, including the value of
652          * each vote and the unique identifier of the member that cast the vote.</p>
653          * <p>Applies only to Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
654          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListProposalVotes">AWS
655          * API Reference</a></p>
656          *
657          * returns a future to the operation so that it can be executed in parallel to other requests.
658          */
659         virtual Model::ListProposalVotesOutcomeCallable ListProposalVotesCallable(const Model::ListProposalVotesRequest& request) const;
660 
661         /**
662          * <p>Returns the list of votes for a specified proposal, including the value of
663          * each vote and the unique identifier of the member that cast the vote.</p>
664          * <p>Applies only to Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
665          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListProposalVotes">AWS
666          * API Reference</a></p>
667          *
668          * Queues the request into a thread executor and triggers associated callback when operation has finished.
669          */
670         virtual void ListProposalVotesAsync(const Model::ListProposalVotesRequest& request, const ListProposalVotesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
671 
672         /**
673          * <p>Returns a list of proposals for the network.</p> <p>Applies only to
674          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
675          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListProposals">AWS
676          * API Reference</a></p>
677          */
678         virtual Model::ListProposalsOutcome ListProposals(const Model::ListProposalsRequest& request) const;
679 
680         /**
681          * <p>Returns a list of proposals for the network.</p> <p>Applies only to
682          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
683          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListProposals">AWS
684          * API Reference</a></p>
685          *
686          * returns a future to the operation so that it can be executed in parallel to other requests.
687          */
688         virtual Model::ListProposalsOutcomeCallable ListProposalsCallable(const Model::ListProposalsRequest& request) const;
689 
690         /**
691          * <p>Returns a list of proposals for the network.</p> <p>Applies only to
692          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
693          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListProposals">AWS
694          * API Reference</a></p>
695          *
696          * Queues the request into a thread executor and triggers associated callback when operation has finished.
697          */
698         virtual void ListProposalsAsync(const Model::ListProposalsRequest& request, const ListProposalsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
699 
700         /**
701          * <p>Returns a list of tags for the specified resource. Each tag consists of a key
702          * and optional value.</p> <p>For more information about tags, see <a
703          * href="https://docs.aws.amazon.com/managed-blockchain/latest/ethereum-dev/tagging-resources.html">Tagging
704          * Resources</a> in the <i>Amazon Managed Blockchain Ethereum Developer Guide</i>,
705          * or <a
706          * href="https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/tagging-resources.html">Tagging
707          * Resources</a> in the <i>Amazon Managed Blockchain Hyperledger Fabric Developer
708          * Guide</i>.</p><p><h3>See Also:</h3>   <a
709          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListTagsForResource">AWS
710          * API Reference</a></p>
711          */
712         virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const;
713 
714         /**
715          * <p>Returns a list of tags for the specified resource. Each tag consists of a key
716          * and optional value.</p> <p>For more information about tags, see <a
717          * href="https://docs.aws.amazon.com/managed-blockchain/latest/ethereum-dev/tagging-resources.html">Tagging
718          * Resources</a> in the <i>Amazon Managed Blockchain Ethereum Developer Guide</i>,
719          * or <a
720          * href="https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/tagging-resources.html">Tagging
721          * Resources</a> in the <i>Amazon Managed Blockchain Hyperledger Fabric Developer
722          * Guide</i>.</p><p><h3>See Also:</h3>   <a
723          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListTagsForResource">AWS
724          * API Reference</a></p>
725          *
726          * returns a future to the operation so that it can be executed in parallel to other requests.
727          */
728         virtual Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const Model::ListTagsForResourceRequest& request) const;
729 
730         /**
731          * <p>Returns a list of tags for the specified resource. Each tag consists of a key
732          * and optional value.</p> <p>For more information about tags, see <a
733          * href="https://docs.aws.amazon.com/managed-blockchain/latest/ethereum-dev/tagging-resources.html">Tagging
734          * Resources</a> in the <i>Amazon Managed Blockchain Ethereum Developer Guide</i>,
735          * or <a
736          * href="https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/tagging-resources.html">Tagging
737          * Resources</a> in the <i>Amazon Managed Blockchain Hyperledger Fabric Developer
738          * Guide</i>.</p><p><h3>See Also:</h3>   <a
739          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/ListTagsForResource">AWS
740          * API Reference</a></p>
741          *
742          * Queues the request into a thread executor and triggers associated callback when operation has finished.
743          */
744         virtual void ListTagsForResourceAsync(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
745 
746         /**
747          * <p>Rejects an invitation to join a network. This action can be called by a
748          * principal in an AWS account that has received an invitation to create a member
749          * and join a network.</p> <p>Applies only to Hyperledger Fabric.</p><p><h3>See
750          * Also:</h3>   <a
751          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/RejectInvitation">AWS
752          * API Reference</a></p>
753          */
754         virtual Model::RejectInvitationOutcome RejectInvitation(const Model::RejectInvitationRequest& request) const;
755 
756         /**
757          * <p>Rejects an invitation to join a network. This action can be called by a
758          * principal in an AWS account that has received an invitation to create a member
759          * and join a network.</p> <p>Applies only to Hyperledger Fabric.</p><p><h3>See
760          * Also:</h3>   <a
761          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/RejectInvitation">AWS
762          * API Reference</a></p>
763          *
764          * returns a future to the operation so that it can be executed in parallel to other requests.
765          */
766         virtual Model::RejectInvitationOutcomeCallable RejectInvitationCallable(const Model::RejectInvitationRequest& request) const;
767 
768         /**
769          * <p>Rejects an invitation to join a network. This action can be called by a
770          * principal in an AWS account that has received an invitation to create a member
771          * and join a network.</p> <p>Applies only to Hyperledger Fabric.</p><p><h3>See
772          * Also:</h3>   <a
773          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/RejectInvitation">AWS
774          * API Reference</a></p>
775          *
776          * Queues the request into a thread executor and triggers associated callback when operation has finished.
777          */
778         virtual void RejectInvitationAsync(const Model::RejectInvitationRequest& request, const RejectInvitationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
779 
780         /**
781          * <p>Adds or overwrites the specified tags for the specified Amazon Managed
782          * Blockchain resource. Each tag consists of a key and optional value.</p> <p>When
783          * you specify a tag key that already exists, the tag value is overwritten with the
784          * new value. Use <code>UntagResource</code> to remove tag keys.</p> <p>A resource
785          * can have up to 50 tags. If you try to create more than 50 tags for a resource,
786          * your request fails and returns an error.</p> <p>For more information about tags,
787          * see <a
788          * href="https://docs.aws.amazon.com/managed-blockchain/latest/ethereum-dev/tagging-resources.html">Tagging
789          * Resources</a> in the <i>Amazon Managed Blockchain Ethereum Developer Guide</i>,
790          * or <a
791          * href="https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/tagging-resources.html">Tagging
792          * Resources</a> in the <i>Amazon Managed Blockchain Hyperledger Fabric Developer
793          * Guide</i>.</p><p><h3>See Also:</h3>   <a
794          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/TagResource">AWS
795          * API Reference</a></p>
796          */
797         virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const;
798 
799         /**
800          * <p>Adds or overwrites the specified tags for the specified Amazon Managed
801          * Blockchain resource. Each tag consists of a key and optional value.</p> <p>When
802          * you specify a tag key that already exists, the tag value is overwritten with the
803          * new value. Use <code>UntagResource</code> to remove tag keys.</p> <p>A resource
804          * can have up to 50 tags. If you try to create more than 50 tags for a resource,
805          * your request fails and returns an error.</p> <p>For more information about tags,
806          * see <a
807          * href="https://docs.aws.amazon.com/managed-blockchain/latest/ethereum-dev/tagging-resources.html">Tagging
808          * Resources</a> in the <i>Amazon Managed Blockchain Ethereum Developer Guide</i>,
809          * or <a
810          * href="https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/tagging-resources.html">Tagging
811          * Resources</a> in the <i>Amazon Managed Blockchain Hyperledger Fabric Developer
812          * Guide</i>.</p><p><h3>See Also:</h3>   <a
813          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/TagResource">AWS
814          * API Reference</a></p>
815          *
816          * returns a future to the operation so that it can be executed in parallel to other requests.
817          */
818         virtual Model::TagResourceOutcomeCallable TagResourceCallable(const Model::TagResourceRequest& request) const;
819 
820         /**
821          * <p>Adds or overwrites the specified tags for the specified Amazon Managed
822          * Blockchain resource. Each tag consists of a key and optional value.</p> <p>When
823          * you specify a tag key that already exists, the tag value is overwritten with the
824          * new value. Use <code>UntagResource</code> to remove tag keys.</p> <p>A resource
825          * can have up to 50 tags. If you try to create more than 50 tags for a resource,
826          * your request fails and returns an error.</p> <p>For more information about tags,
827          * see <a
828          * href="https://docs.aws.amazon.com/managed-blockchain/latest/ethereum-dev/tagging-resources.html">Tagging
829          * Resources</a> in the <i>Amazon Managed Blockchain Ethereum Developer Guide</i>,
830          * or <a
831          * href="https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/tagging-resources.html">Tagging
832          * Resources</a> in the <i>Amazon Managed Blockchain Hyperledger Fabric Developer
833          * Guide</i>.</p><p><h3>See Also:</h3>   <a
834          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/TagResource">AWS
835          * API Reference</a></p>
836          *
837          * Queues the request into a thread executor and triggers associated callback when operation has finished.
838          */
839         virtual void TagResourceAsync(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
840 
841         /**
842          * <p>Removes the specified tags from the Amazon Managed Blockchain resource.</p>
843          * <p>For more information about tags, see <a
844          * href="https://docs.aws.amazon.com/managed-blockchain/latest/ethereum-dev/tagging-resources.html">Tagging
845          * Resources</a> in the <i>Amazon Managed Blockchain Ethereum Developer Guide</i>,
846          * or <a
847          * href="https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/tagging-resources.html">Tagging
848          * Resources</a> in the <i>Amazon Managed Blockchain Hyperledger Fabric Developer
849          * Guide</i>.</p><p><h3>See Also:</h3>   <a
850          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/UntagResource">AWS
851          * API Reference</a></p>
852          */
853         virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const;
854 
855         /**
856          * <p>Removes the specified tags from the Amazon Managed Blockchain resource.</p>
857          * <p>For more information about tags, see <a
858          * href="https://docs.aws.amazon.com/managed-blockchain/latest/ethereum-dev/tagging-resources.html">Tagging
859          * Resources</a> in the <i>Amazon Managed Blockchain Ethereum Developer Guide</i>,
860          * or <a
861          * href="https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/tagging-resources.html">Tagging
862          * Resources</a> in the <i>Amazon Managed Blockchain Hyperledger Fabric Developer
863          * Guide</i>.</p><p><h3>See Also:</h3>   <a
864          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/UntagResource">AWS
865          * API Reference</a></p>
866          *
867          * returns a future to the operation so that it can be executed in parallel to other requests.
868          */
869         virtual Model::UntagResourceOutcomeCallable UntagResourceCallable(const Model::UntagResourceRequest& request) const;
870 
871         /**
872          * <p>Removes the specified tags from the Amazon Managed Blockchain resource.</p>
873          * <p>For more information about tags, see <a
874          * href="https://docs.aws.amazon.com/managed-blockchain/latest/ethereum-dev/tagging-resources.html">Tagging
875          * Resources</a> in the <i>Amazon Managed Blockchain Ethereum Developer Guide</i>,
876          * or <a
877          * href="https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/tagging-resources.html">Tagging
878          * Resources</a> in the <i>Amazon Managed Blockchain Hyperledger Fabric Developer
879          * Guide</i>.</p><p><h3>See Also:</h3>   <a
880          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/UntagResource">AWS
881          * API Reference</a></p>
882          *
883          * Queues the request into a thread executor and triggers associated callback when operation has finished.
884          */
885         virtual void UntagResourceAsync(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
886 
887         /**
888          * <p>Updates a member configuration with new parameters.</p> <p>Applies only to
889          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
890          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/UpdateMember">AWS
891          * API Reference</a></p>
892          */
893         virtual Model::UpdateMemberOutcome UpdateMember(const Model::UpdateMemberRequest& request) const;
894 
895         /**
896          * <p>Updates a member configuration with new parameters.</p> <p>Applies only to
897          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
898          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/UpdateMember">AWS
899          * API Reference</a></p>
900          *
901          * returns a future to the operation so that it can be executed in parallel to other requests.
902          */
903         virtual Model::UpdateMemberOutcomeCallable UpdateMemberCallable(const Model::UpdateMemberRequest& request) const;
904 
905         /**
906          * <p>Updates a member configuration with new parameters.</p> <p>Applies only to
907          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
908          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/UpdateMember">AWS
909          * API Reference</a></p>
910          *
911          * Queues the request into a thread executor and triggers associated callback when operation has finished.
912          */
913         virtual void UpdateMemberAsync(const Model::UpdateMemberRequest& request, const UpdateMemberResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
914 
915         /**
916          * <p>Updates a node configuration with new parameters.</p> <p>Applies only to
917          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
918          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/UpdateNode">AWS
919          * API Reference</a></p>
920          */
921         virtual Model::UpdateNodeOutcome UpdateNode(const Model::UpdateNodeRequest& request) const;
922 
923         /**
924          * <p>Updates a node configuration with new parameters.</p> <p>Applies only to
925          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
926          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/UpdateNode">AWS
927          * API Reference</a></p>
928          *
929          * returns a future to the operation so that it can be executed in parallel to other requests.
930          */
931         virtual Model::UpdateNodeOutcomeCallable UpdateNodeCallable(const Model::UpdateNodeRequest& request) const;
932 
933         /**
934          * <p>Updates a node configuration with new parameters.</p> <p>Applies only to
935          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
936          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/UpdateNode">AWS
937          * API Reference</a></p>
938          *
939          * Queues the request into a thread executor and triggers associated callback when operation has finished.
940          */
941         virtual void UpdateNodeAsync(const Model::UpdateNodeRequest& request, const UpdateNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
942 
943         /**
944          * <p>Casts a vote for a specified <code>ProposalId</code> on behalf of a member.
945          * The member to vote as, specified by <code>VoterMemberId</code>, must be in the
946          * same AWS account as the principal that calls the action.</p> <p>Applies only to
947          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
948          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/VoteOnProposal">AWS
949          * API Reference</a></p>
950          */
951         virtual Model::VoteOnProposalOutcome VoteOnProposal(const Model::VoteOnProposalRequest& request) const;
952 
953         /**
954          * <p>Casts a vote for a specified <code>ProposalId</code> on behalf of a member.
955          * The member to vote as, specified by <code>VoterMemberId</code>, must be in the
956          * same AWS account as the principal that calls the action.</p> <p>Applies only to
957          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
958          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/VoteOnProposal">AWS
959          * API Reference</a></p>
960          *
961          * returns a future to the operation so that it can be executed in parallel to other requests.
962          */
963         virtual Model::VoteOnProposalOutcomeCallable VoteOnProposalCallable(const Model::VoteOnProposalRequest& request) const;
964 
965         /**
966          * <p>Casts a vote for a specified <code>ProposalId</code> on behalf of a member.
967          * The member to vote as, specified by <code>VoterMemberId</code>, must be in the
968          * same AWS account as the principal that calls the action.</p> <p>Applies only to
969          * Hyperledger Fabric.</p><p><h3>See Also:</h3>   <a
970          * href="http://docs.aws.amazon.com/goto/WebAPI/managedblockchain-2018-09-24/VoteOnProposal">AWS
971          * API Reference</a></p>
972          *
973          * Queues the request into a thread executor and triggers associated callback when operation has finished.
974          */
975         virtual void VoteOnProposalAsync(const Model::VoteOnProposalRequest& request, const VoteOnProposalResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
976 
977 
978       void OverrideEndpoint(const Aws::String& endpoint);
979     private:
980       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
981         void CreateMemberAsyncHelper(const Model::CreateMemberRequest& request, const CreateMemberResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
982         void CreateNetworkAsyncHelper(const Model::CreateNetworkRequest& request, const CreateNetworkResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
983         void CreateNodeAsyncHelper(const Model::CreateNodeRequest& request, const CreateNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
984         void CreateProposalAsyncHelper(const Model::CreateProposalRequest& request, const CreateProposalResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
985         void DeleteMemberAsyncHelper(const Model::DeleteMemberRequest& request, const DeleteMemberResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
986         void DeleteNodeAsyncHelper(const Model::DeleteNodeRequest& request, const DeleteNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
987         void GetMemberAsyncHelper(const Model::GetMemberRequest& request, const GetMemberResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
988         void GetNetworkAsyncHelper(const Model::GetNetworkRequest& request, const GetNetworkResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
989         void GetNodeAsyncHelper(const Model::GetNodeRequest& request, const GetNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
990         void GetProposalAsyncHelper(const Model::GetProposalRequest& request, const GetProposalResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
991         void ListInvitationsAsyncHelper(const Model::ListInvitationsRequest& request, const ListInvitationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
992         void ListMembersAsyncHelper(const Model::ListMembersRequest& request, const ListMembersResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
993         void ListNetworksAsyncHelper(const Model::ListNetworksRequest& request, const ListNetworksResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
994         void ListNodesAsyncHelper(const Model::ListNodesRequest& request, const ListNodesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
995         void ListProposalVotesAsyncHelper(const Model::ListProposalVotesRequest& request, const ListProposalVotesResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
996         void ListProposalsAsyncHelper(const Model::ListProposalsRequest& request, const ListProposalsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
997         void ListTagsForResourceAsyncHelper(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
998         void RejectInvitationAsyncHelper(const Model::RejectInvitationRequest& request, const RejectInvitationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
999         void TagResourceAsyncHelper(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1000         void UntagResourceAsyncHelper(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1001         void UpdateMemberAsyncHelper(const Model::UpdateMemberRequest& request, const UpdateMemberResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1002         void UpdateNodeAsyncHelper(const Model::UpdateNodeRequest& request, const UpdateNodeResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1003         void VoteOnProposalAsyncHelper(const Model::VoteOnProposalRequest& request, const VoteOnProposalResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1004 
1005       Aws::String m_uri;
1006       Aws::String m_configScheme;
1007       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
1008   };
1009 
1010 } // namespace ManagedBlockchain
1011 } // namespace Aws
1012