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/connectparticipant/ConnectParticipant_EXPORTS.h>
8 #include <aws/connectparticipant/ConnectParticipantErrors.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/connectparticipant/model/CompleteAttachmentUploadResult.h>
15 #include <aws/connectparticipant/model/CreateParticipantConnectionResult.h>
16 #include <aws/connectparticipant/model/DisconnectParticipantResult.h>
17 #include <aws/connectparticipant/model/GetAttachmentResult.h>
18 #include <aws/connectparticipant/model/GetTranscriptResult.h>
19 #include <aws/connectparticipant/model/SendEventResult.h>
20 #include <aws/connectparticipant/model/SendMessageResult.h>
21 #include <aws/connectparticipant/model/StartAttachmentUploadResult.h>
22 #include <aws/core/client/AsyncCallerContext.h>
23 #include <aws/core/http/HttpTypes.h>
24 #include <future>
25 #include <functional>
26 
27 namespace Aws
28 {
29 
30 namespace Http
31 {
32   class HttpClient;
33   class HttpClientFactory;
34 } // namespace Http
35 
36 namespace Utils
37 {
38   template< typename R, typename E> class Outcome;
39 namespace Threading
40 {
41   class Executor;
42 } // namespace Threading
43 } // namespace Utils
44 
45 namespace Auth
46 {
47   class AWSCredentials;
48   class AWSCredentialsProvider;
49 } // namespace Auth
50 
51 namespace Client
52 {
53   class RetryStrategy;
54 } // namespace Client
55 
56 namespace ConnectParticipant
57 {
58 
59 namespace Model
60 {
61         class CompleteAttachmentUploadRequest;
62         class CreateParticipantConnectionRequest;
63         class DisconnectParticipantRequest;
64         class GetAttachmentRequest;
65         class GetTranscriptRequest;
66         class SendEventRequest;
67         class SendMessageRequest;
68         class StartAttachmentUploadRequest;
69 
70         typedef Aws::Utils::Outcome<CompleteAttachmentUploadResult, ConnectParticipantError> CompleteAttachmentUploadOutcome;
71         typedef Aws::Utils::Outcome<CreateParticipantConnectionResult, ConnectParticipantError> CreateParticipantConnectionOutcome;
72         typedef Aws::Utils::Outcome<DisconnectParticipantResult, ConnectParticipantError> DisconnectParticipantOutcome;
73         typedef Aws::Utils::Outcome<GetAttachmentResult, ConnectParticipantError> GetAttachmentOutcome;
74         typedef Aws::Utils::Outcome<GetTranscriptResult, ConnectParticipantError> GetTranscriptOutcome;
75         typedef Aws::Utils::Outcome<SendEventResult, ConnectParticipantError> SendEventOutcome;
76         typedef Aws::Utils::Outcome<SendMessageResult, ConnectParticipantError> SendMessageOutcome;
77         typedef Aws::Utils::Outcome<StartAttachmentUploadResult, ConnectParticipantError> StartAttachmentUploadOutcome;
78 
79         typedef std::future<CompleteAttachmentUploadOutcome> CompleteAttachmentUploadOutcomeCallable;
80         typedef std::future<CreateParticipantConnectionOutcome> CreateParticipantConnectionOutcomeCallable;
81         typedef std::future<DisconnectParticipantOutcome> DisconnectParticipantOutcomeCallable;
82         typedef std::future<GetAttachmentOutcome> GetAttachmentOutcomeCallable;
83         typedef std::future<GetTranscriptOutcome> GetTranscriptOutcomeCallable;
84         typedef std::future<SendEventOutcome> SendEventOutcomeCallable;
85         typedef std::future<SendMessageOutcome> SendMessageOutcomeCallable;
86         typedef std::future<StartAttachmentUploadOutcome> StartAttachmentUploadOutcomeCallable;
87 } // namespace Model
88 
89   class ConnectParticipantClient;
90 
91     typedef std::function<void(const ConnectParticipantClient*, const Model::CompleteAttachmentUploadRequest&, const Model::CompleteAttachmentUploadOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CompleteAttachmentUploadResponseReceivedHandler;
92     typedef std::function<void(const ConnectParticipantClient*, const Model::CreateParticipantConnectionRequest&, const Model::CreateParticipantConnectionOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateParticipantConnectionResponseReceivedHandler;
93     typedef std::function<void(const ConnectParticipantClient*, const Model::DisconnectParticipantRequest&, const Model::DisconnectParticipantOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DisconnectParticipantResponseReceivedHandler;
94     typedef std::function<void(const ConnectParticipantClient*, const Model::GetAttachmentRequest&, const Model::GetAttachmentOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetAttachmentResponseReceivedHandler;
95     typedef std::function<void(const ConnectParticipantClient*, const Model::GetTranscriptRequest&, const Model::GetTranscriptOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetTranscriptResponseReceivedHandler;
96     typedef std::function<void(const ConnectParticipantClient*, const Model::SendEventRequest&, const Model::SendEventOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > SendEventResponseReceivedHandler;
97     typedef std::function<void(const ConnectParticipantClient*, const Model::SendMessageRequest&, const Model::SendMessageOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > SendMessageResponseReceivedHandler;
98     typedef std::function<void(const ConnectParticipantClient*, const Model::StartAttachmentUploadRequest&, const Model::StartAttachmentUploadOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > StartAttachmentUploadResponseReceivedHandler;
99 
100   /**
101    * <p>Amazon Connect is a cloud-based contact center solution that makes it easy to
102    * set up and manage a customer contact center and provide reliable customer
103    * engagement at any scale.</p> <p>Amazon Connect enables customer contacts through
104    * voice or chat.</p> <p>The APIs described here are used by chat participants,
105    * such as agents and customers.</p>
106    */
107   class AWS_CONNECTPARTICIPANT_API ConnectParticipantClient : public Aws::Client::AWSJsonClient
108   {
109     public:
110       typedef Aws::Client::AWSJsonClient BASECLASS;
111 
112        /**
113         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
114         * is not specified, it will be initialized to default values.
115         */
116         ConnectParticipantClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
117 
118        /**
119         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
120         * is not specified, it will be initialized to default values.
121         */
122         ConnectParticipantClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
123 
124        /**
125         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
126         * the default http client factory will be used
127         */
128         ConnectParticipantClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
129             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
130 
131         virtual ~ConnectParticipantClient();
132 
133 
134         /**
135          * <p>Allows you to confirm that the attachment has been uploaded using the
136          * pre-signed URL provided in StartAttachmentUpload API. </p><p><h3>See Also:</h3>
137          * <a
138          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/CompleteAttachmentUpload">AWS
139          * API Reference</a></p>
140          */
141         virtual Model::CompleteAttachmentUploadOutcome CompleteAttachmentUpload(const Model::CompleteAttachmentUploadRequest& request) const;
142 
143         /**
144          * <p>Allows you to confirm that the attachment has been uploaded using the
145          * pre-signed URL provided in StartAttachmentUpload API. </p><p><h3>See Also:</h3>
146          * <a
147          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/CompleteAttachmentUpload">AWS
148          * API Reference</a></p>
149          *
150          * returns a future to the operation so that it can be executed in parallel to other requests.
151          */
152         virtual Model::CompleteAttachmentUploadOutcomeCallable CompleteAttachmentUploadCallable(const Model::CompleteAttachmentUploadRequest& request) const;
153 
154         /**
155          * <p>Allows you to confirm that the attachment has been uploaded using the
156          * pre-signed URL provided in StartAttachmentUpload API. </p><p><h3>See Also:</h3>
157          * <a
158          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/CompleteAttachmentUpload">AWS
159          * API Reference</a></p>
160          *
161          * Queues the request into a thread executor and triggers associated callback when operation has finished.
162          */
163         virtual void CompleteAttachmentUploadAsync(const Model::CompleteAttachmentUploadRequest& request, const CompleteAttachmentUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
164 
165         /**
166          * <p>Creates the participant's connection. Note that ParticipantToken is used for
167          * invoking this API instead of ConnectionToken.</p> <p>The participant token is
168          * valid for the lifetime of the participant – until they are part of a
169          * contact.</p> <p>The response URL for <code>WEBSOCKET</code> Type has a connect
170          * expiry timeout of 100s. Clients must manually connect to the returned websocket
171          * URL and subscribe to the desired topic. </p> <p>For chat, you need to publish
172          * the following on the established websocket connection:</p> <p>
173          * <code>{"topic":"aws/subscribe","content":{"topics":["aws/chat"]}}</code> </p>
174          * <p>Upon websocket URL expiry, as specified in the response ConnectionExpiry
175          * parameter, clients need to call this API again to obtain a new websocket URL and
176          * perform the same steps as before.</p>  <p>The Amazon Connect Participant
177          * Service APIs do not use <a
178          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
179          * Version 4 authentication</a>.</p> <p><h3>See Also:</h3>   <a
180          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/CreateParticipantConnection">AWS
181          * API Reference</a></p>
182          */
183         virtual Model::CreateParticipantConnectionOutcome CreateParticipantConnection(const Model::CreateParticipantConnectionRequest& request) const;
184 
185         /**
186          * <p>Creates the participant's connection. Note that ParticipantToken is used for
187          * invoking this API instead of ConnectionToken.</p> <p>The participant token is
188          * valid for the lifetime of the participant – until they are part of a
189          * contact.</p> <p>The response URL for <code>WEBSOCKET</code> Type has a connect
190          * expiry timeout of 100s. Clients must manually connect to the returned websocket
191          * URL and subscribe to the desired topic. </p> <p>For chat, you need to publish
192          * the following on the established websocket connection:</p> <p>
193          * <code>{"topic":"aws/subscribe","content":{"topics":["aws/chat"]}}</code> </p>
194          * <p>Upon websocket URL expiry, as specified in the response ConnectionExpiry
195          * parameter, clients need to call this API again to obtain a new websocket URL and
196          * perform the same steps as before.</p>  <p>The Amazon Connect Participant
197          * Service APIs do not use <a
198          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
199          * Version 4 authentication</a>.</p> <p><h3>See Also:</h3>   <a
200          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/CreateParticipantConnection">AWS
201          * API Reference</a></p>
202          *
203          * returns a future to the operation so that it can be executed in parallel to other requests.
204          */
205         virtual Model::CreateParticipantConnectionOutcomeCallable CreateParticipantConnectionCallable(const Model::CreateParticipantConnectionRequest& request) const;
206 
207         /**
208          * <p>Creates the participant's connection. Note that ParticipantToken is used for
209          * invoking this API instead of ConnectionToken.</p> <p>The participant token is
210          * valid for the lifetime of the participant – until they are part of a
211          * contact.</p> <p>The response URL for <code>WEBSOCKET</code> Type has a connect
212          * expiry timeout of 100s. Clients must manually connect to the returned websocket
213          * URL and subscribe to the desired topic. </p> <p>For chat, you need to publish
214          * the following on the established websocket connection:</p> <p>
215          * <code>{"topic":"aws/subscribe","content":{"topics":["aws/chat"]}}</code> </p>
216          * <p>Upon websocket URL expiry, as specified in the response ConnectionExpiry
217          * parameter, clients need to call this API again to obtain a new websocket URL and
218          * perform the same steps as before.</p>  <p>The Amazon Connect Participant
219          * Service APIs do not use <a
220          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
221          * Version 4 authentication</a>.</p> <p><h3>See Also:</h3>   <a
222          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/CreateParticipantConnection">AWS
223          * API Reference</a></p>
224          *
225          * Queues the request into a thread executor and triggers associated callback when operation has finished.
226          */
227         virtual void CreateParticipantConnectionAsync(const Model::CreateParticipantConnectionRequest& request, const CreateParticipantConnectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
228 
229         /**
230          * <p>Disconnects a participant. Note that ConnectionToken is used for invoking
231          * this API instead of ParticipantToken.</p> <p>The Amazon Connect Participant
232          * Service APIs do not use <a
233          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
234          * Version 4 authentication</a>.</p><p><h3>See Also:</h3>   <a
235          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/DisconnectParticipant">AWS
236          * API Reference</a></p>
237          */
238         virtual Model::DisconnectParticipantOutcome DisconnectParticipant(const Model::DisconnectParticipantRequest& request) const;
239 
240         /**
241          * <p>Disconnects a participant. Note that ConnectionToken is used for invoking
242          * this API instead of ParticipantToken.</p> <p>The Amazon Connect Participant
243          * Service APIs do not use <a
244          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
245          * Version 4 authentication</a>.</p><p><h3>See Also:</h3>   <a
246          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/DisconnectParticipant">AWS
247          * API Reference</a></p>
248          *
249          * returns a future to the operation so that it can be executed in parallel to other requests.
250          */
251         virtual Model::DisconnectParticipantOutcomeCallable DisconnectParticipantCallable(const Model::DisconnectParticipantRequest& request) const;
252 
253         /**
254          * <p>Disconnects a participant. Note that ConnectionToken is used for invoking
255          * this API instead of ParticipantToken.</p> <p>The Amazon Connect Participant
256          * Service APIs do not use <a
257          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
258          * Version 4 authentication</a>.</p><p><h3>See Also:</h3>   <a
259          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/DisconnectParticipant">AWS
260          * API Reference</a></p>
261          *
262          * Queues the request into a thread executor and triggers associated callback when operation has finished.
263          */
264         virtual void DisconnectParticipantAsync(const Model::DisconnectParticipantRequest& request, const DisconnectParticipantResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
265 
266         /**
267          * <p>Provides a pre-signed URL for download of a completed attachment. This is an
268          * asynchronous API for use with active contacts.</p><p><h3>See Also:</h3>   <a
269          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/GetAttachment">AWS
270          * API Reference</a></p>
271          */
272         virtual Model::GetAttachmentOutcome GetAttachment(const Model::GetAttachmentRequest& request) const;
273 
274         /**
275          * <p>Provides a pre-signed URL for download of a completed attachment. This is an
276          * asynchronous API for use with active contacts.</p><p><h3>See Also:</h3>   <a
277          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/GetAttachment">AWS
278          * API Reference</a></p>
279          *
280          * returns a future to the operation so that it can be executed in parallel to other requests.
281          */
282         virtual Model::GetAttachmentOutcomeCallable GetAttachmentCallable(const Model::GetAttachmentRequest& request) const;
283 
284         /**
285          * <p>Provides a pre-signed URL for download of a completed attachment. This is an
286          * asynchronous API for use with active contacts.</p><p><h3>See Also:</h3>   <a
287          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/GetAttachment">AWS
288          * API Reference</a></p>
289          *
290          * Queues the request into a thread executor and triggers associated callback when operation has finished.
291          */
292         virtual void GetAttachmentAsync(const Model::GetAttachmentRequest& request, const GetAttachmentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
293 
294         /**
295          * <p>Retrieves a transcript of the session, including details about any
296          * attachments. Note that ConnectionToken is used for invoking this API instead of
297          * ParticipantToken.</p> <p>The Amazon Connect Participant Service APIs do not use
298          * <a
299          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
300          * Version 4 authentication</a>.</p><p><h3>See Also:</h3>   <a
301          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/GetTranscript">AWS
302          * API Reference</a></p>
303          */
304         virtual Model::GetTranscriptOutcome GetTranscript(const Model::GetTranscriptRequest& request) const;
305 
306         /**
307          * <p>Retrieves a transcript of the session, including details about any
308          * attachments. Note that ConnectionToken is used for invoking this API instead of
309          * ParticipantToken.</p> <p>The Amazon Connect Participant Service APIs do not use
310          * <a
311          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
312          * Version 4 authentication</a>.</p><p><h3>See Also:</h3>   <a
313          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/GetTranscript">AWS
314          * API Reference</a></p>
315          *
316          * returns a future to the operation so that it can be executed in parallel to other requests.
317          */
318         virtual Model::GetTranscriptOutcomeCallable GetTranscriptCallable(const Model::GetTranscriptRequest& request) const;
319 
320         /**
321          * <p>Retrieves a transcript of the session, including details about any
322          * attachments. Note that ConnectionToken is used for invoking this API instead of
323          * ParticipantToken.</p> <p>The Amazon Connect Participant Service APIs do not use
324          * <a
325          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
326          * Version 4 authentication</a>.</p><p><h3>See Also:</h3>   <a
327          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/GetTranscript">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 GetTranscriptAsync(const Model::GetTranscriptRequest& request, const GetTranscriptResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
333 
334         /**
335          * <p>Sends an event. Note that ConnectionToken is used for invoking this API
336          * instead of ParticipantToken.</p> <p>The Amazon Connect Participant Service APIs
337          * do not use <a
338          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
339          * Version 4 authentication</a>.</p><p><h3>See Also:</h3>   <a
340          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/SendEvent">AWS
341          * API Reference</a></p>
342          */
343         virtual Model::SendEventOutcome SendEvent(const Model::SendEventRequest& request) const;
344 
345         /**
346          * <p>Sends an event. Note that ConnectionToken is used for invoking this API
347          * instead of ParticipantToken.</p> <p>The Amazon Connect Participant Service APIs
348          * do not use <a
349          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
350          * Version 4 authentication</a>.</p><p><h3>See Also:</h3>   <a
351          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/SendEvent">AWS
352          * API Reference</a></p>
353          *
354          * returns a future to the operation so that it can be executed in parallel to other requests.
355          */
356         virtual Model::SendEventOutcomeCallable SendEventCallable(const Model::SendEventRequest& request) const;
357 
358         /**
359          * <p>Sends an event. Note that ConnectionToken is used for invoking this API
360          * instead of ParticipantToken.</p> <p>The Amazon Connect Participant Service APIs
361          * do not use <a
362          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
363          * Version 4 authentication</a>.</p><p><h3>See Also:</h3>   <a
364          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/SendEvent">AWS
365          * API Reference</a></p>
366          *
367          * Queues the request into a thread executor and triggers associated callback when operation has finished.
368          */
369         virtual void SendEventAsync(const Model::SendEventRequest& request, const SendEventResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
370 
371         /**
372          * <p>Sends a message. Note that ConnectionToken is used for invoking this API
373          * instead of ParticipantToken.</p>  <p>The Amazon Connect Participant
374          * Service APIs do not use <a
375          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
376          * Version 4 authentication</a>.</p> <p><h3>See Also:</h3>   <a
377          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/SendMessage">AWS
378          * API Reference</a></p>
379          */
380         virtual Model::SendMessageOutcome SendMessage(const Model::SendMessageRequest& request) const;
381 
382         /**
383          * <p>Sends a message. Note that ConnectionToken is used for invoking this API
384          * instead of ParticipantToken.</p>  <p>The Amazon Connect Participant
385          * Service APIs do not use <a
386          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
387          * Version 4 authentication</a>.</p> <p><h3>See Also:</h3>   <a
388          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/SendMessage">AWS
389          * API Reference</a></p>
390          *
391          * returns a future to the operation so that it can be executed in parallel to other requests.
392          */
393         virtual Model::SendMessageOutcomeCallable SendMessageCallable(const Model::SendMessageRequest& request) const;
394 
395         /**
396          * <p>Sends a message. Note that ConnectionToken is used for invoking this API
397          * instead of ParticipantToken.</p>  <p>The Amazon Connect Participant
398          * Service APIs do not use <a
399          * href="https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html">Signature
400          * Version 4 authentication</a>.</p> <p><h3>See Also:</h3>   <a
401          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/SendMessage">AWS
402          * API Reference</a></p>
403          *
404          * Queues the request into a thread executor and triggers associated callback when operation has finished.
405          */
406         virtual void SendMessageAsync(const Model::SendMessageRequest& request, const SendMessageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
407 
408         /**
409          * <p>Provides a pre-signed Amazon S3 URL in response for uploading the file
410          * directly to S3.</p><p><h3>See Also:</h3>   <a
411          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/StartAttachmentUpload">AWS
412          * API Reference</a></p>
413          */
414         virtual Model::StartAttachmentUploadOutcome StartAttachmentUpload(const Model::StartAttachmentUploadRequest& request) const;
415 
416         /**
417          * <p>Provides a pre-signed Amazon S3 URL in response for uploading the file
418          * directly to S3.</p><p><h3>See Also:</h3>   <a
419          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/StartAttachmentUpload">AWS
420          * API Reference</a></p>
421          *
422          * returns a future to the operation so that it can be executed in parallel to other requests.
423          */
424         virtual Model::StartAttachmentUploadOutcomeCallable StartAttachmentUploadCallable(const Model::StartAttachmentUploadRequest& request) const;
425 
426         /**
427          * <p>Provides a pre-signed Amazon S3 URL in response for uploading the file
428          * directly to S3.</p><p><h3>See Also:</h3>   <a
429          * href="http://docs.aws.amazon.com/goto/WebAPI/connectparticipant-2018-09-07/StartAttachmentUpload">AWS
430          * API Reference</a></p>
431          *
432          * Queues the request into a thread executor and triggers associated callback when operation has finished.
433          */
434         virtual void StartAttachmentUploadAsync(const Model::StartAttachmentUploadRequest& request, const StartAttachmentUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
435 
436 
437       void OverrideEndpoint(const Aws::String& endpoint);
438     private:
439       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
440         void CompleteAttachmentUploadAsyncHelper(const Model::CompleteAttachmentUploadRequest& request, const CompleteAttachmentUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
441         void CreateParticipantConnectionAsyncHelper(const Model::CreateParticipantConnectionRequest& request, const CreateParticipantConnectionResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
442         void DisconnectParticipantAsyncHelper(const Model::DisconnectParticipantRequest& request, const DisconnectParticipantResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
443         void GetAttachmentAsyncHelper(const Model::GetAttachmentRequest& request, const GetAttachmentResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
444         void GetTranscriptAsyncHelper(const Model::GetTranscriptRequest& request, const GetTranscriptResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
445         void SendEventAsyncHelper(const Model::SendEventRequest& request, const SendEventResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
446         void SendMessageAsyncHelper(const Model::SendMessageRequest& request, const SendMessageResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
447         void StartAttachmentUploadAsyncHelper(const Model::StartAttachmentUploadRequest& request, const StartAttachmentUploadResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
448 
449       Aws::String m_uri;
450       Aws::String m_configScheme;
451       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
452   };
453 
454 } // namespace ConnectParticipant
455 } // namespace Aws
456