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/ivs/IVS_EXPORTS.h>
8 #include <aws/ivs/IVSErrors.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/ivs/model/BatchGetChannelResult.h>
15 #include <aws/ivs/model/BatchGetStreamKeyResult.h>
16 #include <aws/ivs/model/CreateChannelResult.h>
17 #include <aws/ivs/model/CreateRecordingConfigurationResult.h>
18 #include <aws/ivs/model/CreateStreamKeyResult.h>
19 #include <aws/ivs/model/DeletePlaybackKeyPairResult.h>
20 #include <aws/ivs/model/GetChannelResult.h>
21 #include <aws/ivs/model/GetPlaybackKeyPairResult.h>
22 #include <aws/ivs/model/GetRecordingConfigurationResult.h>
23 #include <aws/ivs/model/GetStreamResult.h>
24 #include <aws/ivs/model/GetStreamKeyResult.h>
25 #include <aws/ivs/model/ImportPlaybackKeyPairResult.h>
26 #include <aws/ivs/model/ListChannelsResult.h>
27 #include <aws/ivs/model/ListPlaybackKeyPairsResult.h>
28 #include <aws/ivs/model/ListRecordingConfigurationsResult.h>
29 #include <aws/ivs/model/ListStreamKeysResult.h>
30 #include <aws/ivs/model/ListStreamsResult.h>
31 #include <aws/ivs/model/ListTagsForResourceResult.h>
32 #include <aws/ivs/model/StopStreamResult.h>
33 #include <aws/ivs/model/TagResourceResult.h>
34 #include <aws/ivs/model/UntagResourceResult.h>
35 #include <aws/ivs/model/UpdateChannelResult.h>
36 #include <aws/core/NoResult.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 IVS
72 {
73 
74 namespace Model
75 {
76         class BatchGetChannelRequest;
77         class BatchGetStreamKeyRequest;
78         class CreateChannelRequest;
79         class CreateRecordingConfigurationRequest;
80         class CreateStreamKeyRequest;
81         class DeleteChannelRequest;
82         class DeletePlaybackKeyPairRequest;
83         class DeleteRecordingConfigurationRequest;
84         class DeleteStreamKeyRequest;
85         class GetChannelRequest;
86         class GetPlaybackKeyPairRequest;
87         class GetRecordingConfigurationRequest;
88         class GetStreamRequest;
89         class GetStreamKeyRequest;
90         class ImportPlaybackKeyPairRequest;
91         class ListChannelsRequest;
92         class ListPlaybackKeyPairsRequest;
93         class ListRecordingConfigurationsRequest;
94         class ListStreamKeysRequest;
95         class ListStreamsRequest;
96         class ListTagsForResourceRequest;
97         class PutMetadataRequest;
98         class StopStreamRequest;
99         class TagResourceRequest;
100         class UntagResourceRequest;
101         class UpdateChannelRequest;
102 
103         typedef Aws::Utils::Outcome<BatchGetChannelResult, IVSError> BatchGetChannelOutcome;
104         typedef Aws::Utils::Outcome<BatchGetStreamKeyResult, IVSError> BatchGetStreamKeyOutcome;
105         typedef Aws::Utils::Outcome<CreateChannelResult, IVSError> CreateChannelOutcome;
106         typedef Aws::Utils::Outcome<CreateRecordingConfigurationResult, IVSError> CreateRecordingConfigurationOutcome;
107         typedef Aws::Utils::Outcome<CreateStreamKeyResult, IVSError> CreateStreamKeyOutcome;
108         typedef Aws::Utils::Outcome<Aws::NoResult, IVSError> DeleteChannelOutcome;
109         typedef Aws::Utils::Outcome<DeletePlaybackKeyPairResult, IVSError> DeletePlaybackKeyPairOutcome;
110         typedef Aws::Utils::Outcome<Aws::NoResult, IVSError> DeleteRecordingConfigurationOutcome;
111         typedef Aws::Utils::Outcome<Aws::NoResult, IVSError> DeleteStreamKeyOutcome;
112         typedef Aws::Utils::Outcome<GetChannelResult, IVSError> GetChannelOutcome;
113         typedef Aws::Utils::Outcome<GetPlaybackKeyPairResult, IVSError> GetPlaybackKeyPairOutcome;
114         typedef Aws::Utils::Outcome<GetRecordingConfigurationResult, IVSError> GetRecordingConfigurationOutcome;
115         typedef Aws::Utils::Outcome<GetStreamResult, IVSError> GetStreamOutcome;
116         typedef Aws::Utils::Outcome<GetStreamKeyResult, IVSError> GetStreamKeyOutcome;
117         typedef Aws::Utils::Outcome<ImportPlaybackKeyPairResult, IVSError> ImportPlaybackKeyPairOutcome;
118         typedef Aws::Utils::Outcome<ListChannelsResult, IVSError> ListChannelsOutcome;
119         typedef Aws::Utils::Outcome<ListPlaybackKeyPairsResult, IVSError> ListPlaybackKeyPairsOutcome;
120         typedef Aws::Utils::Outcome<ListRecordingConfigurationsResult, IVSError> ListRecordingConfigurationsOutcome;
121         typedef Aws::Utils::Outcome<ListStreamKeysResult, IVSError> ListStreamKeysOutcome;
122         typedef Aws::Utils::Outcome<ListStreamsResult, IVSError> ListStreamsOutcome;
123         typedef Aws::Utils::Outcome<ListTagsForResourceResult, IVSError> ListTagsForResourceOutcome;
124         typedef Aws::Utils::Outcome<Aws::NoResult, IVSError> PutMetadataOutcome;
125         typedef Aws::Utils::Outcome<StopStreamResult, IVSError> StopStreamOutcome;
126         typedef Aws::Utils::Outcome<TagResourceResult, IVSError> TagResourceOutcome;
127         typedef Aws::Utils::Outcome<UntagResourceResult, IVSError> UntagResourceOutcome;
128         typedef Aws::Utils::Outcome<UpdateChannelResult, IVSError> UpdateChannelOutcome;
129 
130         typedef std::future<BatchGetChannelOutcome> BatchGetChannelOutcomeCallable;
131         typedef std::future<BatchGetStreamKeyOutcome> BatchGetStreamKeyOutcomeCallable;
132         typedef std::future<CreateChannelOutcome> CreateChannelOutcomeCallable;
133         typedef std::future<CreateRecordingConfigurationOutcome> CreateRecordingConfigurationOutcomeCallable;
134         typedef std::future<CreateStreamKeyOutcome> CreateStreamKeyOutcomeCallable;
135         typedef std::future<DeleteChannelOutcome> DeleteChannelOutcomeCallable;
136         typedef std::future<DeletePlaybackKeyPairOutcome> DeletePlaybackKeyPairOutcomeCallable;
137         typedef std::future<DeleteRecordingConfigurationOutcome> DeleteRecordingConfigurationOutcomeCallable;
138         typedef std::future<DeleteStreamKeyOutcome> DeleteStreamKeyOutcomeCallable;
139         typedef std::future<GetChannelOutcome> GetChannelOutcomeCallable;
140         typedef std::future<GetPlaybackKeyPairOutcome> GetPlaybackKeyPairOutcomeCallable;
141         typedef std::future<GetRecordingConfigurationOutcome> GetRecordingConfigurationOutcomeCallable;
142         typedef std::future<GetStreamOutcome> GetStreamOutcomeCallable;
143         typedef std::future<GetStreamKeyOutcome> GetStreamKeyOutcomeCallable;
144         typedef std::future<ImportPlaybackKeyPairOutcome> ImportPlaybackKeyPairOutcomeCallable;
145         typedef std::future<ListChannelsOutcome> ListChannelsOutcomeCallable;
146         typedef std::future<ListPlaybackKeyPairsOutcome> ListPlaybackKeyPairsOutcomeCallable;
147         typedef std::future<ListRecordingConfigurationsOutcome> ListRecordingConfigurationsOutcomeCallable;
148         typedef std::future<ListStreamKeysOutcome> ListStreamKeysOutcomeCallable;
149         typedef std::future<ListStreamsOutcome> ListStreamsOutcomeCallable;
150         typedef std::future<ListTagsForResourceOutcome> ListTagsForResourceOutcomeCallable;
151         typedef std::future<PutMetadataOutcome> PutMetadataOutcomeCallable;
152         typedef std::future<StopStreamOutcome> StopStreamOutcomeCallable;
153         typedef std::future<TagResourceOutcome> TagResourceOutcomeCallable;
154         typedef std::future<UntagResourceOutcome> UntagResourceOutcomeCallable;
155         typedef std::future<UpdateChannelOutcome> UpdateChannelOutcomeCallable;
156 } // namespace Model
157 
158   class IVSClient;
159 
160     typedef std::function<void(const IVSClient*, const Model::BatchGetChannelRequest&, const Model::BatchGetChannelOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > BatchGetChannelResponseReceivedHandler;
161     typedef std::function<void(const IVSClient*, const Model::BatchGetStreamKeyRequest&, const Model::BatchGetStreamKeyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > BatchGetStreamKeyResponseReceivedHandler;
162     typedef std::function<void(const IVSClient*, const Model::CreateChannelRequest&, const Model::CreateChannelOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateChannelResponseReceivedHandler;
163     typedef std::function<void(const IVSClient*, const Model::CreateRecordingConfigurationRequest&, const Model::CreateRecordingConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateRecordingConfigurationResponseReceivedHandler;
164     typedef std::function<void(const IVSClient*, const Model::CreateStreamKeyRequest&, const Model::CreateStreamKeyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > CreateStreamKeyResponseReceivedHandler;
165     typedef std::function<void(const IVSClient*, const Model::DeleteChannelRequest&, const Model::DeleteChannelOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteChannelResponseReceivedHandler;
166     typedef std::function<void(const IVSClient*, const Model::DeletePlaybackKeyPairRequest&, const Model::DeletePlaybackKeyPairOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeletePlaybackKeyPairResponseReceivedHandler;
167     typedef std::function<void(const IVSClient*, const Model::DeleteRecordingConfigurationRequest&, const Model::DeleteRecordingConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteRecordingConfigurationResponseReceivedHandler;
168     typedef std::function<void(const IVSClient*, const Model::DeleteStreamKeyRequest&, const Model::DeleteStreamKeyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > DeleteStreamKeyResponseReceivedHandler;
169     typedef std::function<void(const IVSClient*, const Model::GetChannelRequest&, const Model::GetChannelOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetChannelResponseReceivedHandler;
170     typedef std::function<void(const IVSClient*, const Model::GetPlaybackKeyPairRequest&, const Model::GetPlaybackKeyPairOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetPlaybackKeyPairResponseReceivedHandler;
171     typedef std::function<void(const IVSClient*, const Model::GetRecordingConfigurationRequest&, const Model::GetRecordingConfigurationOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetRecordingConfigurationResponseReceivedHandler;
172     typedef std::function<void(const IVSClient*, const Model::GetStreamRequest&, const Model::GetStreamOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetStreamResponseReceivedHandler;
173     typedef std::function<void(const IVSClient*, const Model::GetStreamKeyRequest&, const Model::GetStreamKeyOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > GetStreamKeyResponseReceivedHandler;
174     typedef std::function<void(const IVSClient*, const Model::ImportPlaybackKeyPairRequest&, const Model::ImportPlaybackKeyPairOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ImportPlaybackKeyPairResponseReceivedHandler;
175     typedef std::function<void(const IVSClient*, const Model::ListChannelsRequest&, const Model::ListChannelsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListChannelsResponseReceivedHandler;
176     typedef std::function<void(const IVSClient*, const Model::ListPlaybackKeyPairsRequest&, const Model::ListPlaybackKeyPairsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListPlaybackKeyPairsResponseReceivedHandler;
177     typedef std::function<void(const IVSClient*, const Model::ListRecordingConfigurationsRequest&, const Model::ListRecordingConfigurationsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListRecordingConfigurationsResponseReceivedHandler;
178     typedef std::function<void(const IVSClient*, const Model::ListStreamKeysRequest&, const Model::ListStreamKeysOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListStreamKeysResponseReceivedHandler;
179     typedef std::function<void(const IVSClient*, const Model::ListStreamsRequest&, const Model::ListStreamsOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListStreamsResponseReceivedHandler;
180     typedef std::function<void(const IVSClient*, const Model::ListTagsForResourceRequest&, const Model::ListTagsForResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > ListTagsForResourceResponseReceivedHandler;
181     typedef std::function<void(const IVSClient*, const Model::PutMetadataRequest&, const Model::PutMetadataOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > PutMetadataResponseReceivedHandler;
182     typedef std::function<void(const IVSClient*, const Model::StopStreamRequest&, const Model::StopStreamOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > StopStreamResponseReceivedHandler;
183     typedef std::function<void(const IVSClient*, const Model::TagResourceRequest&, const Model::TagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > TagResourceResponseReceivedHandler;
184     typedef std::function<void(const IVSClient*, const Model::UntagResourceRequest&, const Model::UntagResourceOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UntagResourceResponseReceivedHandler;
185     typedef std::function<void(const IVSClient*, const Model::UpdateChannelRequest&, const Model::UpdateChannelOutcome&, const std::shared_ptr<const Aws::Client::AsyncCallerContext>&) > UpdateChannelResponseReceivedHandler;
186 
187   /**
188    * <p> <b>Introduction</b> </p> <p>The Amazon Interactive Video Service (IVS) API
189    * is REST compatible, using a standard HTTP API and an Amazon Web Services
190    * EventBridge event stream for responses. JSON is used for both requests and
191    * responses, including errors.</p> <p>The API is an Amazon Web Services regional
192    * service. For a list of supported regions and Amazon IVS HTTPS service endpoints,
193    * see the <a href="https://docs.aws.amazon.com/general/latest/gr/ivs.html">Amazon
194    * IVS page</a> in the <i>Amazon Web Services General Reference</i>.</p> <p> <i>
195    * <b>All API request parameters and URLs are case sensitive. </b> </i> </p> <p>For
196    * a summary of notable documentation changes in each release, see <a
197    * href="https://docs.aws.amazon.com/ivs/latest/userguide/doc-history.html">
198    * Document History</a>.</p> <pre><code> &lt;p&gt; &lt;b&gt;Allowed Header
199    * Values&lt;/b&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt; &lt;code&gt;
200    * &lt;b&gt;Accept:&lt;/b&gt; &lt;/code&gt; application/json&lt;/p&gt; &lt;/li&gt;
201    * &lt;li&gt; &lt;p&gt; &lt;code&gt; &lt;b&gt;Accept-Encoding:&lt;/b&gt;
202    * &lt;/code&gt; gzip, deflate&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
203    * &lt;code&gt; &lt;b&gt;Content-Type:&lt;/b&gt;
204    * &lt;/code&gt;application/json&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;
205    * &lt;b&gt;Resources&lt;/b&gt; &lt;/p&gt; &lt;p&gt;The following resources contain
206    * information about your IVS live stream (see &lt;a
207    * href=&quot;https://docs.aws.amazon.com/ivs/latest/userguide/getting-started.html&quot;&gt;
208    * Getting Started with Amazon IVS&lt;/a&gt;):&lt;/p&gt; &lt;ul&gt; &lt;li&gt;
209    * &lt;p&gt;Channel — Stores configuration data related to your live stream. You
210    * first create a channel and then use the channel’s stream key to start your live
211    * stream. See the Channel endpoints for more information. &lt;/p&gt; &lt;/li&gt;
212    * &lt;li&gt; &lt;p&gt;Stream key — An identifier assigned by Amazon IVS when you
213    * create a channel, which is then used to authorize streaming. See the StreamKey
214    * endpoints for more information. &lt;i&gt; &lt;b&gt;Treat the stream key like a
215    * secret, since it allows anyone to stream to the channel.&lt;/b&gt; &lt;/i&gt;
216    * &lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;Playback key pair — Video playback
217    * may be restricted using playback-authorization tokens, which use public-key
218    * encryption. A playback key pair is the public-private pair of keys used to sign
219    * and validate the playback-authorization token. See the PlaybackKeyPair endpoints
220    * for more information.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;Recording
221    * configuration — Stores configuration related to recording a live stream and
222    * where to store the recorded content. Multiple channels can reference the same
223    * recording configuration. See the Recording Configuration endpoints for more
224    * information.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;
225    * &lt;b&gt;Tagging&lt;/b&gt; &lt;/p&gt; &lt;p&gt;A &lt;i&gt;tag&lt;/i&gt; is a
226    * metadata label that you assign to an Amazon Web Services resource. A tag
227    * comprises a &lt;i&gt;key&lt;/i&gt; and a &lt;i&gt;value&lt;/i&gt;, both set by
228    * you. For example, you might set a tag as &lt;code&gt;topic:nature&lt;/code&gt;
229    * to label a particular video category. See &lt;a
230    * href=&quot;https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html&quot;&gt;Tagging
231    * Amazon Web Services Resources&lt;/a&gt; for more information, including
232    * restrictions that apply to tags.&lt;/p&gt; &lt;p&gt;Tags can help you identify
233    * and organize your Amazon Web Services resources. For example, you can use the
234    * same tag for different resources to indicate that they are related. You can also
235    * use tags to manage access (see &lt;a
236    * href=&quot;https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html&quot;&gt;
237    * Access Tags&lt;/a&gt;). &lt;/p&gt; &lt;p&gt;The Amazon IVS API has these
238    * tag-related endpoints: &lt;a&gt;TagResource&lt;/a&gt;,
239    * &lt;a&gt;UntagResource&lt;/a&gt;, and &lt;a&gt;ListTagsForResource&lt;/a&gt;.
240    * The following resources support tagging: Channels, Stream Keys, Playback Key
241    * Pairs, and Recording Configurations.&lt;/p&gt; &lt;p&gt;At most 50 tags can be
242    * applied to a resource. &lt;/p&gt; &lt;p&gt; &lt;b&gt;Authentication versus
243    * Authorization&lt;/b&gt; &lt;/p&gt; &lt;p&gt;Note the differences between these
244    * concepts:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;
245    * &lt;i&gt;Authentication&lt;/i&gt; is about verifying identity. You need to be
246    * authenticated to sign Amazon IVS API requests.&lt;/p&gt; &lt;/li&gt; &lt;li&gt;
247    * &lt;p&gt; &lt;i&gt;Authorization&lt;/i&gt; is about granting permissions. You
248    * need to be authorized to view &lt;a
249    * href=&quot;https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html&quot;&gt;Amazon
250    * IVS private channels&lt;/a&gt;. (Private channels are channels that are enabled
251    * for &quot;playback authorization.&quot;)&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt;
252    * &lt;p&gt; &lt;b&gt;Authentication&lt;/b&gt; &lt;/p&gt; &lt;p&gt;All Amazon IVS
253    * API requests must be authenticated with a signature. The Amazon Web Services
254    * Command-Line Interface (CLI) and Amazon IVS Player SDKs take care of signing the
255    * underlying API calls for you. However, if your application calls the Amazon IVS
256    * API directly, it’s your responsibility to sign the requests.&lt;/p&gt;
257    * &lt;p&gt;You generate a signature using valid Amazon Web Services credentials
258    * that have permission to perform the requested action. For example, you must sign
259    * PutMetadata requests with a signature generated from an IAM user account that
260    * has the &lt;code&gt;ivs:PutMetadata&lt;/code&gt; permission.&lt;/p&gt;
261    * &lt;p&gt;For more information:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;
262    * &lt;p&gt;Authentication and generating signatures — See &lt;a
263    * href=&quot;https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html&quot;&gt;Authenticating
264    * Requests (Amazon Web Services Signature Version 4)&lt;/a&gt; in the
265    * &lt;i&gt;Amazon Web Services General Reference&lt;/i&gt;.&lt;/p&gt; &lt;/li&gt;
266    * &lt;li&gt; &lt;p&gt;Managing Amazon IVS permissions — See &lt;a
267    * href=&quot;https://docs.aws.amazon.com/ivs/latest/userguide/security-iam.html&quot;&gt;Identity
268    * and Access Management&lt;/a&gt; on the Security page of the &lt;i&gt;Amazon IVS
269    * User Guide&lt;/i&gt;.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;
270    * &lt;b&gt;Channel Endpoints&lt;/b&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;
271    * &lt;a&gt;CreateChannel&lt;/a&gt; — Creates a new channel and an associated
272    * stream key to start streaming.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
273    * &lt;a&gt;GetChannel&lt;/a&gt; — Gets the channel configuration for the specified
274    * channel ARN (Amazon Resource Name).&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
275    * &lt;a&gt;BatchGetChannel&lt;/a&gt; — Performs &lt;a&gt;GetChannel&lt;/a&gt; on
276    * multiple ARNs simultaneously.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
277    * &lt;a&gt;ListChannels&lt;/a&gt; — Gets summary information about all channels in
278    * your account, in the Amazon Web Services region where the API request is
279    * processed. This list can be filtered to match a specified name or
280    * recording-configuration ARN. Filters are mutually exclusive and cannot be used
281    * together. If you try to use both filters, you will get an error (409 Conflict
282    * Exception).&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
283    * &lt;a&gt;UpdateChannel&lt;/a&gt; — Updates a channel's configuration. This does
284    * not affect an ongoing stream of this channel. You must stop and restart the
285    * stream for the changes to take effect.&lt;/p&gt; &lt;/li&gt; &lt;li&gt;
286    * &lt;p&gt; &lt;a&gt;DeleteChannel&lt;/a&gt; — Deletes the specified
287    * channel.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; &lt;b&gt;StreamKey
288    * Endpoints&lt;/b&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;
289    * &lt;a&gt;CreateStreamKey&lt;/a&gt; — Creates a stream key, used to initiate a
290    * stream, for the specified channel ARN.&lt;/p&gt; &lt;/li&gt; &lt;li&gt;
291    * &lt;p&gt; &lt;a&gt;GetStreamKey&lt;/a&gt; — Gets stream key information for the
292    * specified ARN.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
293    * &lt;a&gt;BatchGetStreamKey&lt;/a&gt; — Performs &lt;a&gt;GetStreamKey&lt;/a&gt;
294    * on multiple ARNs simultaneously.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
295    * &lt;a&gt;ListStreamKeys&lt;/a&gt; — Gets summary information about stream keys
296    * for the specified channel.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
297    * &lt;a&gt;DeleteStreamKey&lt;/a&gt; — Deletes the stream key for the specified
298    * ARN, so it can no longer be used to stream.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt;
299    * &lt;p&gt; &lt;b&gt;Stream Endpoints&lt;/b&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;
300    * &lt;p&gt; &lt;a&gt;GetStream&lt;/a&gt; — Gets information about the active
301    * (live) stream on a specified channel.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
302    * &lt;a&gt;ListStreams&lt;/a&gt; — Gets summary information about live streams in
303    * your account, in the Amazon Web Services region where the API request is
304    * processed.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
305    * &lt;a&gt;StopStream&lt;/a&gt; — Disconnects the incoming RTMPS stream for the
306    * specified channel. Can be used in conjunction with
307    * &lt;a&gt;DeleteStreamKey&lt;/a&gt; to prevent further streaming to a
308    * channel.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
309    * &lt;a&gt;PutMetadata&lt;/a&gt; — Inserts metadata into the active stream of the
310    * specified channel. At most 5 requests per second per channel are allowed, each
311    * with a maximum 1 KB payload. (If 5 TPS is not sufficient for your needs, we
312    * recommend batching your data into a single PutMetadata call.) At most 155
313    * requests per second per account are allowed.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt;
314    * &lt;p&gt; &lt;b&gt;PlaybackKeyPair Endpoints&lt;/b&gt; &lt;/p&gt; &lt;p&gt;For
315    * more information, see &lt;a
316    * href=&quot;https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html&quot;&gt;Setting
317    * Up Private Channels&lt;/a&gt; in the &lt;i&gt;Amazon IVS User
318    * Guide&lt;/i&gt;.&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;
319    * &lt;a&gt;ImportPlaybackKeyPair&lt;/a&gt; — Imports the public portion of a new
320    * key pair and returns its &lt;code&gt;arn&lt;/code&gt; and
321    * &lt;code&gt;fingerprint&lt;/code&gt;. The &lt;code&gt;privateKey&lt;/code&gt;
322    * can then be used to generate viewer authorization tokens, to grant viewers
323    * access to private channels (channels enabled for playback
324    * authorization).&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
325    * &lt;a&gt;GetPlaybackKeyPair&lt;/a&gt; — Gets a specified playback authorization
326    * key pair and returns the &lt;code&gt;arn&lt;/code&gt; and
327    * &lt;code&gt;fingerprint&lt;/code&gt;. The &lt;code&gt;privateKey&lt;/code&gt;
328    * held by the caller can be used to generate viewer authorization tokens, to grant
329    * viewers access to private channels.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
330    * &lt;a&gt;ListPlaybackKeyPairs&lt;/a&gt; — Gets summary information about
331    * playback key pairs.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
332    * &lt;a&gt;DeletePlaybackKeyPair&lt;/a&gt; — Deletes a specified authorization key
333    * pair. This invalidates future viewer tokens generated using the key pair’s
334    * &lt;code&gt;privateKey&lt;/code&gt;.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;
335    * &lt;b&gt;RecordingConfiguration Endpoints&lt;/b&gt; &lt;/p&gt; &lt;ul&gt;
336    * &lt;li&gt; &lt;p&gt; &lt;a&gt;CreateRecordingConfiguration&lt;/a&gt; — Creates a
337    * new recording configuration, used to enable recording to Amazon S3.&lt;/p&gt;
338    * &lt;/li&gt; &lt;li&gt; &lt;p&gt; &lt;a&gt;GetRecordingConfiguration&lt;/a&gt; —
339    * Gets the recording-configuration metadata for the specified ARN.&lt;/p&gt;
340    * &lt;/li&gt; &lt;li&gt; &lt;p&gt; &lt;a&gt;ListRecordingConfigurations&lt;/a&gt;
341    * — Gets summary information about all recording configurations in your account,
342    * in the Amazon Web Services region where the API request is processed.&lt;/p&gt;
343    * &lt;/li&gt; &lt;li&gt; &lt;p&gt; &lt;a&gt;DeleteRecordingConfiguration&lt;/a&gt;
344    * — Deletes the recording configuration for the specified ARN.&lt;/p&gt;
345    * &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; &lt;b&gt;Amazon Web Services Tags
346    * Endpoints&lt;/b&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;
347    * &lt;a&gt;TagResource&lt;/a&gt; — Adds or updates tags for the Amazon Web
348    * Services resource with the specified ARN.&lt;/p&gt; &lt;/li&gt; &lt;li&gt;
349    * &lt;p&gt; &lt;a&gt;UntagResource&lt;/a&gt; — Removes tags from the resource with
350    * the specified ARN.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;
351    * &lt;a&gt;ListTagsForResource&lt;/a&gt; — Gets information about Amazon Web
352    * Services tags for the specified ARN.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt;
353    * </code></pre>
354    */
355   class AWS_IVS_API IVSClient : public Aws::Client::AWSJsonClient
356   {
357     public:
358       typedef Aws::Client::AWSJsonClient BASECLASS;
359 
360        /**
361         * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
362         * is not specified, it will be initialized to default values.
363         */
364         IVSClient(const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
365 
366        /**
367         * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
368         * is not specified, it will be initialized to default values.
369         */
370         IVSClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
371 
372        /**
373         * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
374         * the default http client factory will be used
375         */
376         IVSClient(const std::shared_ptr<Aws::Auth::AWSCredentialsProvider>& credentialsProvider,
377             const Aws::Client::ClientConfiguration& clientConfiguration = Aws::Client::ClientConfiguration());
378 
379         virtual ~IVSClient();
380 
381 
382         /**
383          * <p>Performs <a>GetChannel</a> on multiple ARNs simultaneously.</p><p><h3>See
384          * Also:</h3>   <a
385          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/BatchGetChannel">AWS
386          * API Reference</a></p>
387          */
388         virtual Model::BatchGetChannelOutcome BatchGetChannel(const Model::BatchGetChannelRequest& request) const;
389 
390         /**
391          * <p>Performs <a>GetChannel</a> on multiple ARNs simultaneously.</p><p><h3>See
392          * Also:</h3>   <a
393          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/BatchGetChannel">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::BatchGetChannelOutcomeCallable BatchGetChannelCallable(const Model::BatchGetChannelRequest& request) const;
399 
400         /**
401          * <p>Performs <a>GetChannel</a> on multiple ARNs simultaneously.</p><p><h3>See
402          * Also:</h3>   <a
403          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/BatchGetChannel">AWS
404          * API Reference</a></p>
405          *
406          * Queues the request into a thread executor and triggers associated callback when operation has finished.
407          */
408         virtual void BatchGetChannelAsync(const Model::BatchGetChannelRequest& request, const BatchGetChannelResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
409 
410         /**
411          * <p>Performs <a>GetStreamKey</a> on multiple ARNs simultaneously.</p><p><h3>See
412          * Also:</h3>   <a
413          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/BatchGetStreamKey">AWS
414          * API Reference</a></p>
415          */
416         virtual Model::BatchGetStreamKeyOutcome BatchGetStreamKey(const Model::BatchGetStreamKeyRequest& request) const;
417 
418         /**
419          * <p>Performs <a>GetStreamKey</a> on multiple ARNs simultaneously.</p><p><h3>See
420          * Also:</h3>   <a
421          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/BatchGetStreamKey">AWS
422          * API Reference</a></p>
423          *
424          * returns a future to the operation so that it can be executed in parallel to other requests.
425          */
426         virtual Model::BatchGetStreamKeyOutcomeCallable BatchGetStreamKeyCallable(const Model::BatchGetStreamKeyRequest& request) const;
427 
428         /**
429          * <p>Performs <a>GetStreamKey</a> on multiple ARNs simultaneously.</p><p><h3>See
430          * Also:</h3>   <a
431          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/BatchGetStreamKey">AWS
432          * API Reference</a></p>
433          *
434          * Queues the request into a thread executor and triggers associated callback when operation has finished.
435          */
436         virtual void BatchGetStreamKeyAsync(const Model::BatchGetStreamKeyRequest& request, const BatchGetStreamKeyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
437 
438         /**
439          * <p>Creates a new channel and an associated stream key to start
440          * streaming.</p><p><h3>See Also:</h3>   <a
441          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/CreateChannel">AWS
442          * API Reference</a></p>
443          */
444         virtual Model::CreateChannelOutcome CreateChannel(const Model::CreateChannelRequest& request) const;
445 
446         /**
447          * <p>Creates a new channel and an associated stream key to start
448          * streaming.</p><p><h3>See Also:</h3>   <a
449          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/CreateChannel">AWS
450          * API Reference</a></p>
451          *
452          * returns a future to the operation so that it can be executed in parallel to other requests.
453          */
454         virtual Model::CreateChannelOutcomeCallable CreateChannelCallable(const Model::CreateChannelRequest& request) const;
455 
456         /**
457          * <p>Creates a new channel and an associated stream key to start
458          * streaming.</p><p><h3>See Also:</h3>   <a
459          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/CreateChannel">AWS
460          * API Reference</a></p>
461          *
462          * Queues the request into a thread executor and triggers associated callback when operation has finished.
463          */
464         virtual void CreateChannelAsync(const Model::CreateChannelRequest& request, const CreateChannelResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
465 
466         /**
467          * <p>Creates a new recording configuration, used to enable recording to Amazon
468          * S3.</p> <p> <b>Known issue:</b> In the us-east-1 region, if you use the Amazon
469          * Web Services CLI to create a recording configuration, it returns success even if
470          * the S3 bucket is in a different region. In this case, the <code>state</code> of
471          * the recording configuration is <code>CREATE_FAILED</code> (instead of
472          * <code>ACTIVE</code>). (In other regions, the CLI correctly returns failure if
473          * the bucket is in a different region.)</p> <p> <b>Workaround:</b> Ensure that
474          * your S3 bucket is in the same region as the recording configuration. If you
475          * create a recording configuration in a different region as your S3 bucket, delete
476          * that recording configuration and create a new one with an S3 bucket from the
477          * correct region.</p><p><h3>See Also:</h3>   <a
478          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/CreateRecordingConfiguration">AWS
479          * API Reference</a></p>
480          */
481         virtual Model::CreateRecordingConfigurationOutcome CreateRecordingConfiguration(const Model::CreateRecordingConfigurationRequest& request) const;
482 
483         /**
484          * <p>Creates a new recording configuration, used to enable recording to Amazon
485          * S3.</p> <p> <b>Known issue:</b> In the us-east-1 region, if you use the Amazon
486          * Web Services CLI to create a recording configuration, it returns success even if
487          * the S3 bucket is in a different region. In this case, the <code>state</code> of
488          * the recording configuration is <code>CREATE_FAILED</code> (instead of
489          * <code>ACTIVE</code>). (In other regions, the CLI correctly returns failure if
490          * the bucket is in a different region.)</p> <p> <b>Workaround:</b> Ensure that
491          * your S3 bucket is in the same region as the recording configuration. If you
492          * create a recording configuration in a different region as your S3 bucket, delete
493          * that recording configuration and create a new one with an S3 bucket from the
494          * correct region.</p><p><h3>See Also:</h3>   <a
495          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/CreateRecordingConfiguration">AWS
496          * API Reference</a></p>
497          *
498          * returns a future to the operation so that it can be executed in parallel to other requests.
499          */
500         virtual Model::CreateRecordingConfigurationOutcomeCallable CreateRecordingConfigurationCallable(const Model::CreateRecordingConfigurationRequest& request) const;
501 
502         /**
503          * <p>Creates a new recording configuration, used to enable recording to Amazon
504          * S3.</p> <p> <b>Known issue:</b> In the us-east-1 region, if you use the Amazon
505          * Web Services CLI to create a recording configuration, it returns success even if
506          * the S3 bucket is in a different region. In this case, the <code>state</code> of
507          * the recording configuration is <code>CREATE_FAILED</code> (instead of
508          * <code>ACTIVE</code>). (In other regions, the CLI correctly returns failure if
509          * the bucket is in a different region.)</p> <p> <b>Workaround:</b> Ensure that
510          * your S3 bucket is in the same region as the recording configuration. If you
511          * create a recording configuration in a different region as your S3 bucket, delete
512          * that recording configuration and create a new one with an S3 bucket from the
513          * correct region.</p><p><h3>See Also:</h3>   <a
514          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/CreateRecordingConfiguration">AWS
515          * API Reference</a></p>
516          *
517          * Queues the request into a thread executor and triggers associated callback when operation has finished.
518          */
519         virtual void CreateRecordingConfigurationAsync(const Model::CreateRecordingConfigurationRequest& request, const CreateRecordingConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
520 
521         /**
522          * <p>Creates a stream key, used to initiate a stream, for the specified channel
523          * ARN.</p> <p>Note that <a>CreateChannel</a> creates a stream key. If you
524          * subsequently use CreateStreamKey on the same channel, it will fail because a
525          * stream key already exists and there is a limit of 1 stream key per channel. To
526          * reset the stream key on a channel, use <a>DeleteStreamKey</a> and then
527          * CreateStreamKey.</p><p><h3>See Also:</h3>   <a
528          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/CreateStreamKey">AWS
529          * API Reference</a></p>
530          */
531         virtual Model::CreateStreamKeyOutcome CreateStreamKey(const Model::CreateStreamKeyRequest& request) const;
532 
533         /**
534          * <p>Creates a stream key, used to initiate a stream, for the specified channel
535          * ARN.</p> <p>Note that <a>CreateChannel</a> creates a stream key. If you
536          * subsequently use CreateStreamKey on the same channel, it will fail because a
537          * stream key already exists and there is a limit of 1 stream key per channel. To
538          * reset the stream key on a channel, use <a>DeleteStreamKey</a> and then
539          * CreateStreamKey.</p><p><h3>See Also:</h3>   <a
540          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/CreateStreamKey">AWS
541          * API Reference</a></p>
542          *
543          * returns a future to the operation so that it can be executed in parallel to other requests.
544          */
545         virtual Model::CreateStreamKeyOutcomeCallable CreateStreamKeyCallable(const Model::CreateStreamKeyRequest& request) const;
546 
547         /**
548          * <p>Creates a stream key, used to initiate a stream, for the specified channel
549          * ARN.</p> <p>Note that <a>CreateChannel</a> creates a stream key. If you
550          * subsequently use CreateStreamKey on the same channel, it will fail because a
551          * stream key already exists and there is a limit of 1 stream key per channel. To
552          * reset the stream key on a channel, use <a>DeleteStreamKey</a> and then
553          * CreateStreamKey.</p><p><h3>See Also:</h3>   <a
554          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/CreateStreamKey">AWS
555          * API Reference</a></p>
556          *
557          * Queues the request into a thread executor and triggers associated callback when operation has finished.
558          */
559         virtual void CreateStreamKeyAsync(const Model::CreateStreamKeyRequest& request, const CreateStreamKeyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
560 
561         /**
562          * <p>Deletes the specified channel and its associated stream keys.</p> <p>If you
563          * try to delete a live channel, you will get an error (409 ConflictException). To
564          * delete a channel that is live, call <a>StopStream</a>, wait for the Amazon
565          * EventBridge "Stream End" event (to verify that the stream's state was changed
566          * from Live to Offline), then call DeleteChannel. (See <a
567          * href="https://docs.aws.amazon.com/ivs/latest/userguide/eventbridge.html"> Using
568          * EventBridge with Amazon IVS</a>.) </p><p><h3>See Also:</h3>   <a
569          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/DeleteChannel">AWS
570          * API Reference</a></p>
571          */
572         virtual Model::DeleteChannelOutcome DeleteChannel(const Model::DeleteChannelRequest& request) const;
573 
574         /**
575          * <p>Deletes the specified channel and its associated stream keys.</p> <p>If you
576          * try to delete a live channel, you will get an error (409 ConflictException). To
577          * delete a channel that is live, call <a>StopStream</a>, wait for the Amazon
578          * EventBridge "Stream End" event (to verify that the stream's state was changed
579          * from Live to Offline), then call DeleteChannel. (See <a
580          * href="https://docs.aws.amazon.com/ivs/latest/userguide/eventbridge.html"> Using
581          * EventBridge with Amazon IVS</a>.) </p><p><h3>See Also:</h3>   <a
582          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/DeleteChannel">AWS
583          * API Reference</a></p>
584          *
585          * returns a future to the operation so that it can be executed in parallel to other requests.
586          */
587         virtual Model::DeleteChannelOutcomeCallable DeleteChannelCallable(const Model::DeleteChannelRequest& request) const;
588 
589         /**
590          * <p>Deletes the specified channel and its associated stream keys.</p> <p>If you
591          * try to delete a live channel, you will get an error (409 ConflictException). To
592          * delete a channel that is live, call <a>StopStream</a>, wait for the Amazon
593          * EventBridge "Stream End" event (to verify that the stream's state was changed
594          * from Live to Offline), then call DeleteChannel. (See <a
595          * href="https://docs.aws.amazon.com/ivs/latest/userguide/eventbridge.html"> Using
596          * EventBridge with Amazon IVS</a>.) </p><p><h3>See Also:</h3>   <a
597          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/DeleteChannel">AWS
598          * API Reference</a></p>
599          *
600          * Queues the request into a thread executor and triggers associated callback when operation has finished.
601          */
602         virtual void DeleteChannelAsync(const Model::DeleteChannelRequest& request, const DeleteChannelResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
603 
604         /**
605          * <p>Deletes a specified authorization key pair. This invalidates future viewer
606          * tokens generated using the key pair’s <code>privateKey</code>. For more
607          * information, see <a
608          * href="https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html">Setting
609          * Up Private Channels</a> in the <i>Amazon IVS User Guide</i>.</p><p><h3>See
610          * Also:</h3>   <a
611          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/DeletePlaybackKeyPair">AWS
612          * API Reference</a></p>
613          */
614         virtual Model::DeletePlaybackKeyPairOutcome DeletePlaybackKeyPair(const Model::DeletePlaybackKeyPairRequest& request) const;
615 
616         /**
617          * <p>Deletes a specified authorization key pair. This invalidates future viewer
618          * tokens generated using the key pair’s <code>privateKey</code>. For more
619          * information, see <a
620          * href="https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html">Setting
621          * Up Private Channels</a> in the <i>Amazon IVS User Guide</i>.</p><p><h3>See
622          * Also:</h3>   <a
623          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/DeletePlaybackKeyPair">AWS
624          * API Reference</a></p>
625          *
626          * returns a future to the operation so that it can be executed in parallel to other requests.
627          */
628         virtual Model::DeletePlaybackKeyPairOutcomeCallable DeletePlaybackKeyPairCallable(const Model::DeletePlaybackKeyPairRequest& request) const;
629 
630         /**
631          * <p>Deletes a specified authorization key pair. This invalidates future viewer
632          * tokens generated using the key pair’s <code>privateKey</code>. For more
633          * information, see <a
634          * href="https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html">Setting
635          * Up Private Channels</a> in the <i>Amazon IVS User Guide</i>.</p><p><h3>See
636          * Also:</h3>   <a
637          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/DeletePlaybackKeyPair">AWS
638          * API Reference</a></p>
639          *
640          * Queues the request into a thread executor and triggers associated callback when operation has finished.
641          */
642         virtual void DeletePlaybackKeyPairAsync(const Model::DeletePlaybackKeyPairRequest& request, const DeletePlaybackKeyPairResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
643 
644         /**
645          * <p>Deletes the recording configuration for the specified ARN.</p> <p>If you try
646          * to delete a recording configuration that is associated with a channel, you will
647          * get an error (409 ConflictException). To avoid this, for all channels that
648          * reference the recording configuration, first use <a>UpdateChannel</a> to set the
649          * <code>recordingConfigurationArn</code> field to an empty string, then use
650          * DeleteRecordingConfiguration.</p><p><h3>See Also:</h3>   <a
651          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/DeleteRecordingConfiguration">AWS
652          * API Reference</a></p>
653          */
654         virtual Model::DeleteRecordingConfigurationOutcome DeleteRecordingConfiguration(const Model::DeleteRecordingConfigurationRequest& request) const;
655 
656         /**
657          * <p>Deletes the recording configuration for the specified ARN.</p> <p>If you try
658          * to delete a recording configuration that is associated with a channel, you will
659          * get an error (409 ConflictException). To avoid this, for all channels that
660          * reference the recording configuration, first use <a>UpdateChannel</a> to set the
661          * <code>recordingConfigurationArn</code> field to an empty string, then use
662          * DeleteRecordingConfiguration.</p><p><h3>See Also:</h3>   <a
663          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/DeleteRecordingConfiguration">AWS
664          * API Reference</a></p>
665          *
666          * returns a future to the operation so that it can be executed in parallel to other requests.
667          */
668         virtual Model::DeleteRecordingConfigurationOutcomeCallable DeleteRecordingConfigurationCallable(const Model::DeleteRecordingConfigurationRequest& request) const;
669 
670         /**
671          * <p>Deletes the recording configuration for the specified ARN.</p> <p>If you try
672          * to delete a recording configuration that is associated with a channel, you will
673          * get an error (409 ConflictException). To avoid this, for all channels that
674          * reference the recording configuration, first use <a>UpdateChannel</a> to set the
675          * <code>recordingConfigurationArn</code> field to an empty string, then use
676          * DeleteRecordingConfiguration.</p><p><h3>See Also:</h3>   <a
677          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/DeleteRecordingConfiguration">AWS
678          * API Reference</a></p>
679          *
680          * Queues the request into a thread executor and triggers associated callback when operation has finished.
681          */
682         virtual void DeleteRecordingConfigurationAsync(const Model::DeleteRecordingConfigurationRequest& request, const DeleteRecordingConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
683 
684         /**
685          * <p>Deletes the stream key for the specified ARN, so it can no longer be used to
686          * stream.</p><p><h3>See Also:</h3>   <a
687          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/DeleteStreamKey">AWS
688          * API Reference</a></p>
689          */
690         virtual Model::DeleteStreamKeyOutcome DeleteStreamKey(const Model::DeleteStreamKeyRequest& request) const;
691 
692         /**
693          * <p>Deletes the stream key for the specified ARN, so it can no longer be used to
694          * stream.</p><p><h3>See Also:</h3>   <a
695          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/DeleteStreamKey">AWS
696          * API Reference</a></p>
697          *
698          * returns a future to the operation so that it can be executed in parallel to other requests.
699          */
700         virtual Model::DeleteStreamKeyOutcomeCallable DeleteStreamKeyCallable(const Model::DeleteStreamKeyRequest& request) const;
701 
702         /**
703          * <p>Deletes the stream key for the specified ARN, so it can no longer be used to
704          * stream.</p><p><h3>See Also:</h3>   <a
705          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/DeleteStreamKey">AWS
706          * API Reference</a></p>
707          *
708          * Queues the request into a thread executor and triggers associated callback when operation has finished.
709          */
710         virtual void DeleteStreamKeyAsync(const Model::DeleteStreamKeyRequest& request, const DeleteStreamKeyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
711 
712         /**
713          * <p>Gets the channel configuration for the specified channel ARN. See also
714          * <a>BatchGetChannel</a>.</p><p><h3>See Also:</h3>   <a
715          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetChannel">AWS API
716          * Reference</a></p>
717          */
718         virtual Model::GetChannelOutcome GetChannel(const Model::GetChannelRequest& request) const;
719 
720         /**
721          * <p>Gets the channel configuration for the specified channel ARN. See also
722          * <a>BatchGetChannel</a>.</p><p><h3>See Also:</h3>   <a
723          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetChannel">AWS API
724          * 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::GetChannelOutcomeCallable GetChannelCallable(const Model::GetChannelRequest& request) const;
729 
730         /**
731          * <p>Gets the channel configuration for the specified channel ARN. See also
732          * <a>BatchGetChannel</a>.</p><p><h3>See Also:</h3>   <a
733          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetChannel">AWS API
734          * Reference</a></p>
735          *
736          * Queues the request into a thread executor and triggers associated callback when operation has finished.
737          */
738         virtual void GetChannelAsync(const Model::GetChannelRequest& request, const GetChannelResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
739 
740         /**
741          * <p>Gets a specified playback authorization key pair and returns the
742          * <code>arn</code> and <code>fingerprint</code>. The <code>privateKey</code> held
743          * by the caller can be used to generate viewer authorization tokens, to grant
744          * viewers access to private channels. For more information, see <a
745          * href="https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html">Setting
746          * Up Private Channels</a> in the <i>Amazon IVS User Guide</i>.</p><p><h3>See
747          * Also:</h3>   <a
748          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetPlaybackKeyPair">AWS
749          * API Reference</a></p>
750          */
751         virtual Model::GetPlaybackKeyPairOutcome GetPlaybackKeyPair(const Model::GetPlaybackKeyPairRequest& request) const;
752 
753         /**
754          * <p>Gets a specified playback authorization key pair and returns the
755          * <code>arn</code> and <code>fingerprint</code>. The <code>privateKey</code> held
756          * by the caller can be used to generate viewer authorization tokens, to grant
757          * viewers access to private channels. For more information, see <a
758          * href="https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html">Setting
759          * Up Private Channels</a> in the <i>Amazon IVS User Guide</i>.</p><p><h3>See
760          * Also:</h3>   <a
761          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetPlaybackKeyPair">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::GetPlaybackKeyPairOutcomeCallable GetPlaybackKeyPairCallable(const Model::GetPlaybackKeyPairRequest& request) const;
767 
768         /**
769          * <p>Gets a specified playback authorization key pair and returns the
770          * <code>arn</code> and <code>fingerprint</code>. The <code>privateKey</code> held
771          * by the caller can be used to generate viewer authorization tokens, to grant
772          * viewers access to private channels. For more information, see <a
773          * href="https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html">Setting
774          * Up Private Channels</a> in the <i>Amazon IVS User Guide</i>.</p><p><h3>See
775          * Also:</h3>   <a
776          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetPlaybackKeyPair">AWS
777          * API Reference</a></p>
778          *
779          * Queues the request into a thread executor and triggers associated callback when operation has finished.
780          */
781         virtual void GetPlaybackKeyPairAsync(const Model::GetPlaybackKeyPairRequest& request, const GetPlaybackKeyPairResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
782 
783         /**
784          * <p>Gets the recording configuration for the specified ARN.</p><p><h3>See
785          * Also:</h3>   <a
786          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetRecordingConfiguration">AWS
787          * API Reference</a></p>
788          */
789         virtual Model::GetRecordingConfigurationOutcome GetRecordingConfiguration(const Model::GetRecordingConfigurationRequest& request) const;
790 
791         /**
792          * <p>Gets the recording configuration for the specified ARN.</p><p><h3>See
793          * Also:</h3>   <a
794          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetRecordingConfiguration">AWS
795          * API Reference</a></p>
796          *
797          * returns a future to the operation so that it can be executed in parallel to other requests.
798          */
799         virtual Model::GetRecordingConfigurationOutcomeCallable GetRecordingConfigurationCallable(const Model::GetRecordingConfigurationRequest& request) const;
800 
801         /**
802          * <p>Gets the recording configuration for the specified ARN.</p><p><h3>See
803          * Also:</h3>   <a
804          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetRecordingConfiguration">AWS
805          * API Reference</a></p>
806          *
807          * Queues the request into a thread executor and triggers associated callback when operation has finished.
808          */
809         virtual void GetRecordingConfigurationAsync(const Model::GetRecordingConfigurationRequest& request, const GetRecordingConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
810 
811         /**
812          * <p>Gets information about the active (live) stream on a specified
813          * channel.</p><p><h3>See Also:</h3>   <a
814          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetStream">AWS API
815          * Reference</a></p>
816          */
817         virtual Model::GetStreamOutcome GetStream(const Model::GetStreamRequest& request) const;
818 
819         /**
820          * <p>Gets information about the active (live) stream on a specified
821          * channel.</p><p><h3>See Also:</h3>   <a
822          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetStream">AWS API
823          * Reference</a></p>
824          *
825          * returns a future to the operation so that it can be executed in parallel to other requests.
826          */
827         virtual Model::GetStreamOutcomeCallable GetStreamCallable(const Model::GetStreamRequest& request) const;
828 
829         /**
830          * <p>Gets information about the active (live) stream on a specified
831          * channel.</p><p><h3>See Also:</h3>   <a
832          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetStream">AWS API
833          * Reference</a></p>
834          *
835          * Queues the request into a thread executor and triggers associated callback when operation has finished.
836          */
837         virtual void GetStreamAsync(const Model::GetStreamRequest& request, const GetStreamResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
838 
839         /**
840          * <p>Gets stream-key information for a specified ARN.</p><p><h3>See Also:</h3>
841          * <a href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetStreamKey">AWS
842          * API Reference</a></p>
843          */
844         virtual Model::GetStreamKeyOutcome GetStreamKey(const Model::GetStreamKeyRequest& request) const;
845 
846         /**
847          * <p>Gets stream-key information for a specified ARN.</p><p><h3>See Also:</h3>
848          * <a href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetStreamKey">AWS
849          * API Reference</a></p>
850          *
851          * returns a future to the operation so that it can be executed in parallel to other requests.
852          */
853         virtual Model::GetStreamKeyOutcomeCallable GetStreamKeyCallable(const Model::GetStreamKeyRequest& request) const;
854 
855         /**
856          * <p>Gets stream-key information for a specified ARN.</p><p><h3>See Also:</h3>
857          * <a href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/GetStreamKey">AWS
858          * API Reference</a></p>
859          *
860          * Queues the request into a thread executor and triggers associated callback when operation has finished.
861          */
862         virtual void GetStreamKeyAsync(const Model::GetStreamKeyRequest& request, const GetStreamKeyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
863 
864         /**
865          * <p>Imports the public portion of a new key pair and returns its <code>arn</code>
866          * and <code>fingerprint</code>. The <code>privateKey</code> can then be used to
867          * generate viewer authorization tokens, to grant viewers access to private
868          * channels. For more information, see <a
869          * href="https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html">Setting
870          * Up Private Channels</a> in the <i>Amazon IVS User Guide</i>.</p><p><h3>See
871          * Also:</h3>   <a
872          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ImportPlaybackKeyPair">AWS
873          * API Reference</a></p>
874          */
875         virtual Model::ImportPlaybackKeyPairOutcome ImportPlaybackKeyPair(const Model::ImportPlaybackKeyPairRequest& request) const;
876 
877         /**
878          * <p>Imports the public portion of a new key pair and returns its <code>arn</code>
879          * and <code>fingerprint</code>. The <code>privateKey</code> can then be used to
880          * generate viewer authorization tokens, to grant viewers access to private
881          * channels. For more information, see <a
882          * href="https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html">Setting
883          * Up Private Channels</a> in the <i>Amazon IVS User Guide</i>.</p><p><h3>See
884          * Also:</h3>   <a
885          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ImportPlaybackKeyPair">AWS
886          * API Reference</a></p>
887          *
888          * returns a future to the operation so that it can be executed in parallel to other requests.
889          */
890         virtual Model::ImportPlaybackKeyPairOutcomeCallable ImportPlaybackKeyPairCallable(const Model::ImportPlaybackKeyPairRequest& request) const;
891 
892         /**
893          * <p>Imports the public portion of a new key pair and returns its <code>arn</code>
894          * and <code>fingerprint</code>. The <code>privateKey</code> can then be used to
895          * generate viewer authorization tokens, to grant viewers access to private
896          * channels. For more information, see <a
897          * href="https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html">Setting
898          * Up Private Channels</a> in the <i>Amazon IVS User Guide</i>.</p><p><h3>See
899          * Also:</h3>   <a
900          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ImportPlaybackKeyPair">AWS
901          * API Reference</a></p>
902          *
903          * Queues the request into a thread executor and triggers associated callback when operation has finished.
904          */
905         virtual void ImportPlaybackKeyPairAsync(const Model::ImportPlaybackKeyPairRequest& request, const ImportPlaybackKeyPairResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
906 
907         /**
908          * <p>Gets summary information about all channels in your account, in the Amazon
909          * Web Services region where the API request is processed. This list can be
910          * filtered to match a specified name or recording-configuration ARN. Filters are
911          * mutually exclusive and cannot be used together. If you try to use both filters,
912          * you will get an error (409 ConflictException).</p><p><h3>See Also:</h3>   <a
913          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListChannels">AWS
914          * API Reference</a></p>
915          */
916         virtual Model::ListChannelsOutcome ListChannels(const Model::ListChannelsRequest& request) const;
917 
918         /**
919          * <p>Gets summary information about all channels in your account, in the Amazon
920          * Web Services region where the API request is processed. This list can be
921          * filtered to match a specified name or recording-configuration ARN. Filters are
922          * mutually exclusive and cannot be used together. If you try to use both filters,
923          * you will get an error (409 ConflictException).</p><p><h3>See Also:</h3>   <a
924          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListChannels">AWS
925          * API Reference</a></p>
926          *
927          * returns a future to the operation so that it can be executed in parallel to other requests.
928          */
929         virtual Model::ListChannelsOutcomeCallable ListChannelsCallable(const Model::ListChannelsRequest& request) const;
930 
931         /**
932          * <p>Gets summary information about all channels in your account, in the Amazon
933          * Web Services region where the API request is processed. This list can be
934          * filtered to match a specified name or recording-configuration ARN. Filters are
935          * mutually exclusive and cannot be used together. If you try to use both filters,
936          * you will get an error (409 ConflictException).</p><p><h3>See Also:</h3>   <a
937          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListChannels">AWS
938          * API Reference</a></p>
939          *
940          * Queues the request into a thread executor and triggers associated callback when operation has finished.
941          */
942         virtual void ListChannelsAsync(const Model::ListChannelsRequest& request, const ListChannelsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
943 
944         /**
945          * <p>Gets summary information about playback key pairs. For more information, see
946          * <a
947          * href="https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html">Setting
948          * Up Private Channels</a> in the <i>Amazon IVS User Guide</i>.</p><p><h3>See
949          * Also:</h3>   <a
950          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListPlaybackKeyPairs">AWS
951          * API Reference</a></p>
952          */
953         virtual Model::ListPlaybackKeyPairsOutcome ListPlaybackKeyPairs(const Model::ListPlaybackKeyPairsRequest& request) const;
954 
955         /**
956          * <p>Gets summary information about playback key pairs. For more information, see
957          * <a
958          * href="https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html">Setting
959          * Up Private Channels</a> in the <i>Amazon IVS User Guide</i>.</p><p><h3>See
960          * Also:</h3>   <a
961          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListPlaybackKeyPairs">AWS
962          * API Reference</a></p>
963          *
964          * returns a future to the operation so that it can be executed in parallel to other requests.
965          */
966         virtual Model::ListPlaybackKeyPairsOutcomeCallable ListPlaybackKeyPairsCallable(const Model::ListPlaybackKeyPairsRequest& request) const;
967 
968         /**
969          * <p>Gets summary information about playback key pairs. For more information, see
970          * <a
971          * href="https://docs.aws.amazon.com/ivs/latest/userguide/private-channels.html">Setting
972          * Up Private Channels</a> in the <i>Amazon IVS User Guide</i>.</p><p><h3>See
973          * Also:</h3>   <a
974          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListPlaybackKeyPairs">AWS
975          * API Reference</a></p>
976          *
977          * Queues the request into a thread executor and triggers associated callback when operation has finished.
978          */
979         virtual void ListPlaybackKeyPairsAsync(const Model::ListPlaybackKeyPairsRequest& request, const ListPlaybackKeyPairsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
980 
981         /**
982          * <p>Gets summary information about all recording configurations in your account,
983          * in the Amazon Web Services region where the API request is
984          * processed.</p><p><h3>See Also:</h3>   <a
985          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListRecordingConfigurations">AWS
986          * API Reference</a></p>
987          */
988         virtual Model::ListRecordingConfigurationsOutcome ListRecordingConfigurations(const Model::ListRecordingConfigurationsRequest& request) const;
989 
990         /**
991          * <p>Gets summary information about all recording configurations in your account,
992          * in the Amazon Web Services region where the API request is
993          * processed.</p><p><h3>See Also:</h3>   <a
994          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListRecordingConfigurations">AWS
995          * API Reference</a></p>
996          *
997          * returns a future to the operation so that it can be executed in parallel to other requests.
998          */
999         virtual Model::ListRecordingConfigurationsOutcomeCallable ListRecordingConfigurationsCallable(const Model::ListRecordingConfigurationsRequest& request) const;
1000 
1001         /**
1002          * <p>Gets summary information about all recording configurations in your account,
1003          * in the Amazon Web Services region where the API request is
1004          * processed.</p><p><h3>See Also:</h3>   <a
1005          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListRecordingConfigurations">AWS
1006          * API Reference</a></p>
1007          *
1008          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1009          */
1010         virtual void ListRecordingConfigurationsAsync(const Model::ListRecordingConfigurationsRequest& request, const ListRecordingConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1011 
1012         /**
1013          * <p>Gets summary information about stream keys for the specified
1014          * channel.</p><p><h3>See Also:</h3>   <a
1015          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListStreamKeys">AWS
1016          * API Reference</a></p>
1017          */
1018         virtual Model::ListStreamKeysOutcome ListStreamKeys(const Model::ListStreamKeysRequest& request) const;
1019 
1020         /**
1021          * <p>Gets summary information about stream keys for the specified
1022          * channel.</p><p><h3>See Also:</h3>   <a
1023          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListStreamKeys">AWS
1024          * API Reference</a></p>
1025          *
1026          * returns a future to the operation so that it can be executed in parallel to other requests.
1027          */
1028         virtual Model::ListStreamKeysOutcomeCallable ListStreamKeysCallable(const Model::ListStreamKeysRequest& request) const;
1029 
1030         /**
1031          * <p>Gets summary information about stream keys for the specified
1032          * channel.</p><p><h3>See Also:</h3>   <a
1033          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListStreamKeys">AWS
1034          * API Reference</a></p>
1035          *
1036          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1037          */
1038         virtual void ListStreamKeysAsync(const Model::ListStreamKeysRequest& request, const ListStreamKeysResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1039 
1040         /**
1041          * <p>Gets summary information about live streams in your account, in the Amazon
1042          * Web Services region where the API request is processed.</p><p><h3>See Also:</h3>
1043          * <a href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListStreams">AWS
1044          * API Reference</a></p>
1045          */
1046         virtual Model::ListStreamsOutcome ListStreams(const Model::ListStreamsRequest& request) const;
1047 
1048         /**
1049          * <p>Gets summary information about live streams in your account, in the Amazon
1050          * Web Services region where the API request is processed.</p><p><h3>See Also:</h3>
1051          * <a href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListStreams">AWS
1052          * API Reference</a></p>
1053          *
1054          * returns a future to the operation so that it can be executed in parallel to other requests.
1055          */
1056         virtual Model::ListStreamsOutcomeCallable ListStreamsCallable(const Model::ListStreamsRequest& request) const;
1057 
1058         /**
1059          * <p>Gets summary information about live streams in your account, in the Amazon
1060          * Web Services region where the API request is processed.</p><p><h3>See Also:</h3>
1061          * <a href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListStreams">AWS
1062          * API Reference</a></p>
1063          *
1064          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1065          */
1066         virtual void ListStreamsAsync(const Model::ListStreamsRequest& request, const ListStreamsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1067 
1068         /**
1069          * <p>Gets information about Amazon Web Services tags for the specified
1070          * ARN.</p><p><h3>See Also:</h3>   <a
1071          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListTagsForResource">AWS
1072          * API Reference</a></p>
1073          */
1074         virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const;
1075 
1076         /**
1077          * <p>Gets information about Amazon Web Services tags for the specified
1078          * ARN.</p><p><h3>See Also:</h3>   <a
1079          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListTagsForResource">AWS
1080          * API Reference</a></p>
1081          *
1082          * returns a future to the operation so that it can be executed in parallel to other requests.
1083          */
1084         virtual Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const Model::ListTagsForResourceRequest& request) const;
1085 
1086         /**
1087          * <p>Gets information about Amazon Web Services tags for the specified
1088          * ARN.</p><p><h3>See Also:</h3>   <a
1089          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/ListTagsForResource">AWS
1090          * API Reference</a></p>
1091          *
1092          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1093          */
1094         virtual void ListTagsForResourceAsync(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1095 
1096         /**
1097          * <p>Inserts metadata into the active stream of the specified channel. At most 5
1098          * requests per second per channel are allowed, each with a maximum 1 KB payload.
1099          * (If 5 TPS is not sufficient for your needs, we recommend batching your data into
1100          * a single PutMetadata call.) At most 155 requests per second per account are
1101          * allowed. Also see <a
1102          * href="https://docs.aws.amazon.com/ivs/latest/userguide/metadata.html">Embedding
1103          * Metadata within a Video Stream</a> in the <i>Amazon IVS User
1104          * Guide</i>.</p><p><h3>See Also:</h3>   <a
1105          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/PutMetadata">AWS API
1106          * Reference</a></p>
1107          */
1108         virtual Model::PutMetadataOutcome PutMetadata(const Model::PutMetadataRequest& request) const;
1109 
1110         /**
1111          * <p>Inserts metadata into the active stream of the specified channel. At most 5
1112          * requests per second per channel are allowed, each with a maximum 1 KB payload.
1113          * (If 5 TPS is not sufficient for your needs, we recommend batching your data into
1114          * a single PutMetadata call.) At most 155 requests per second per account are
1115          * allowed. Also see <a
1116          * href="https://docs.aws.amazon.com/ivs/latest/userguide/metadata.html">Embedding
1117          * Metadata within a Video Stream</a> in the <i>Amazon IVS User
1118          * Guide</i>.</p><p><h3>See Also:</h3>   <a
1119          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/PutMetadata">AWS API
1120          * Reference</a></p>
1121          *
1122          * returns a future to the operation so that it can be executed in parallel to other requests.
1123          */
1124         virtual Model::PutMetadataOutcomeCallable PutMetadataCallable(const Model::PutMetadataRequest& request) const;
1125 
1126         /**
1127          * <p>Inserts metadata into the active stream of the specified channel. At most 5
1128          * requests per second per channel are allowed, each with a maximum 1 KB payload.
1129          * (If 5 TPS is not sufficient for your needs, we recommend batching your data into
1130          * a single PutMetadata call.) At most 155 requests per second per account are
1131          * allowed. Also see <a
1132          * href="https://docs.aws.amazon.com/ivs/latest/userguide/metadata.html">Embedding
1133          * Metadata within a Video Stream</a> in the <i>Amazon IVS User
1134          * Guide</i>.</p><p><h3>See Also:</h3>   <a
1135          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/PutMetadata">AWS API
1136          * Reference</a></p>
1137          *
1138          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1139          */
1140         virtual void PutMetadataAsync(const Model::PutMetadataRequest& request, const PutMetadataResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1141 
1142         /**
1143          * <p>Disconnects the incoming RTMPS stream for the specified channel. Can be used
1144          * in conjunction with <a>DeleteStreamKey</a> to prevent further streaming to a
1145          * channel.</p>  <p>Many streaming client-software libraries automatically
1146          * reconnect a dropped RTMPS session, so to stop the stream permanently, you may
1147          * want to first revoke the <code>streamKey</code> attached to the channel.</p>
1148          * <p><h3>See Also:</h3>   <a
1149          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/StopStream">AWS API
1150          * Reference</a></p>
1151          */
1152         virtual Model::StopStreamOutcome StopStream(const Model::StopStreamRequest& request) const;
1153 
1154         /**
1155          * <p>Disconnects the incoming RTMPS stream for the specified channel. Can be used
1156          * in conjunction with <a>DeleteStreamKey</a> to prevent further streaming to a
1157          * channel.</p>  <p>Many streaming client-software libraries automatically
1158          * reconnect a dropped RTMPS session, so to stop the stream permanently, you may
1159          * want to first revoke the <code>streamKey</code> attached to the channel.</p>
1160          * <p><h3>See Also:</h3>   <a
1161          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/StopStream">AWS API
1162          * Reference</a></p>
1163          *
1164          * returns a future to the operation so that it can be executed in parallel to other requests.
1165          */
1166         virtual Model::StopStreamOutcomeCallable StopStreamCallable(const Model::StopStreamRequest& request) const;
1167 
1168         /**
1169          * <p>Disconnects the incoming RTMPS stream for the specified channel. Can be used
1170          * in conjunction with <a>DeleteStreamKey</a> to prevent further streaming to a
1171          * channel.</p>  <p>Many streaming client-software libraries automatically
1172          * reconnect a dropped RTMPS session, so to stop the stream permanently, you may
1173          * want to first revoke the <code>streamKey</code> attached to the channel.</p>
1174          * <p><h3>See Also:</h3>   <a
1175          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/StopStream">AWS API
1176          * Reference</a></p>
1177          *
1178          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1179          */
1180         virtual void StopStreamAsync(const Model::StopStreamRequest& request, const StopStreamResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1181 
1182         /**
1183          * <p>Adds or updates tags for the Amazon Web Services resource with the specified
1184          * ARN.</p><p><h3>See Also:</h3>   <a
1185          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/TagResource">AWS API
1186          * Reference</a></p>
1187          */
1188         virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const;
1189 
1190         /**
1191          * <p>Adds or updates tags for the Amazon Web Services resource with the specified
1192          * ARN.</p><p><h3>See Also:</h3>   <a
1193          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/TagResource">AWS API
1194          * Reference</a></p>
1195          *
1196          * returns a future to the operation so that it can be executed in parallel to other requests.
1197          */
1198         virtual Model::TagResourceOutcomeCallable TagResourceCallable(const Model::TagResourceRequest& request) const;
1199 
1200         /**
1201          * <p>Adds or updates tags for the Amazon Web Services resource with the specified
1202          * ARN.</p><p><h3>See Also:</h3>   <a
1203          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/TagResource">AWS API
1204          * Reference</a></p>
1205          *
1206          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1207          */
1208         virtual void TagResourceAsync(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1209 
1210         /**
1211          * <p>Removes tags from the resource with the specified ARN.</p><p><h3>See
1212          * Also:</h3>   <a
1213          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/UntagResource">AWS
1214          * API Reference</a></p>
1215          */
1216         virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const;
1217 
1218         /**
1219          * <p>Removes tags from the resource with the specified ARN.</p><p><h3>See
1220          * Also:</h3>   <a
1221          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/UntagResource">AWS
1222          * API Reference</a></p>
1223          *
1224          * returns a future to the operation so that it can be executed in parallel to other requests.
1225          */
1226         virtual Model::UntagResourceOutcomeCallable UntagResourceCallable(const Model::UntagResourceRequest& request) const;
1227 
1228         /**
1229          * <p>Removes tags from the resource with the specified ARN.</p><p><h3>See
1230          * Also:</h3>   <a
1231          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/UntagResource">AWS
1232          * API Reference</a></p>
1233          *
1234          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1235          */
1236         virtual void UntagResourceAsync(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1237 
1238         /**
1239          * <p>Updates a channel's configuration. This does not affect an ongoing stream of
1240          * this channel. You must stop and restart the stream for the changes to take
1241          * effect.</p><p><h3>See Also:</h3>   <a
1242          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/UpdateChannel">AWS
1243          * API Reference</a></p>
1244          */
1245         virtual Model::UpdateChannelOutcome UpdateChannel(const Model::UpdateChannelRequest& request) const;
1246 
1247         /**
1248          * <p>Updates a channel's configuration. This does not affect an ongoing stream of
1249          * this channel. You must stop and restart the stream for the changes to take
1250          * effect.</p><p><h3>See Also:</h3>   <a
1251          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/UpdateChannel">AWS
1252          * API Reference</a></p>
1253          *
1254          * returns a future to the operation so that it can be executed in parallel to other requests.
1255          */
1256         virtual Model::UpdateChannelOutcomeCallable UpdateChannelCallable(const Model::UpdateChannelRequest& request) const;
1257 
1258         /**
1259          * <p>Updates a channel's configuration. This does not affect an ongoing stream of
1260          * this channel. You must stop and restart the stream for the changes to take
1261          * effect.</p><p><h3>See Also:</h3>   <a
1262          * href="http://docs.aws.amazon.com/goto/WebAPI/ivs-2020-07-14/UpdateChannel">AWS
1263          * API Reference</a></p>
1264          *
1265          * Queues the request into a thread executor and triggers associated callback when operation has finished.
1266          */
1267         virtual void UpdateChannelAsync(const Model::UpdateChannelRequest& request, const UpdateChannelResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context = nullptr) const;
1268 
1269 
1270       void OverrideEndpoint(const Aws::String& endpoint);
1271     private:
1272       void init(const Aws::Client::ClientConfiguration& clientConfiguration);
1273         void BatchGetChannelAsyncHelper(const Model::BatchGetChannelRequest& request, const BatchGetChannelResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1274         void BatchGetStreamKeyAsyncHelper(const Model::BatchGetStreamKeyRequest& request, const BatchGetStreamKeyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1275         void CreateChannelAsyncHelper(const Model::CreateChannelRequest& request, const CreateChannelResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1276         void CreateRecordingConfigurationAsyncHelper(const Model::CreateRecordingConfigurationRequest& request, const CreateRecordingConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1277         void CreateStreamKeyAsyncHelper(const Model::CreateStreamKeyRequest& request, const CreateStreamKeyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1278         void DeleteChannelAsyncHelper(const Model::DeleteChannelRequest& request, const DeleteChannelResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1279         void DeletePlaybackKeyPairAsyncHelper(const Model::DeletePlaybackKeyPairRequest& request, const DeletePlaybackKeyPairResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1280         void DeleteRecordingConfigurationAsyncHelper(const Model::DeleteRecordingConfigurationRequest& request, const DeleteRecordingConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1281         void DeleteStreamKeyAsyncHelper(const Model::DeleteStreamKeyRequest& request, const DeleteStreamKeyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1282         void GetChannelAsyncHelper(const Model::GetChannelRequest& request, const GetChannelResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1283         void GetPlaybackKeyPairAsyncHelper(const Model::GetPlaybackKeyPairRequest& request, const GetPlaybackKeyPairResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1284         void GetRecordingConfigurationAsyncHelper(const Model::GetRecordingConfigurationRequest& request, const GetRecordingConfigurationResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1285         void GetStreamAsyncHelper(const Model::GetStreamRequest& request, const GetStreamResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1286         void GetStreamKeyAsyncHelper(const Model::GetStreamKeyRequest& request, const GetStreamKeyResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1287         void ImportPlaybackKeyPairAsyncHelper(const Model::ImportPlaybackKeyPairRequest& request, const ImportPlaybackKeyPairResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1288         void ListChannelsAsyncHelper(const Model::ListChannelsRequest& request, const ListChannelsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1289         void ListPlaybackKeyPairsAsyncHelper(const Model::ListPlaybackKeyPairsRequest& request, const ListPlaybackKeyPairsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1290         void ListRecordingConfigurationsAsyncHelper(const Model::ListRecordingConfigurationsRequest& request, const ListRecordingConfigurationsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1291         void ListStreamKeysAsyncHelper(const Model::ListStreamKeysRequest& request, const ListStreamKeysResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1292         void ListStreamsAsyncHelper(const Model::ListStreamsRequest& request, const ListStreamsResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1293         void ListTagsForResourceAsyncHelper(const Model::ListTagsForResourceRequest& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1294         void PutMetadataAsyncHelper(const Model::PutMetadataRequest& request, const PutMetadataResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1295         void StopStreamAsyncHelper(const Model::StopStreamRequest& request, const StopStreamResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1296         void TagResourceAsyncHelper(const Model::TagResourceRequest& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1297         void UntagResourceAsyncHelper(const Model::UntagResourceRequest& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1298         void UpdateChannelAsyncHelper(const Model::UpdateChannelRequest& request, const UpdateChannelResponseReceivedHandler& handler, const std::shared_ptr<const Aws::Client::AsyncCallerContext>& context) const;
1299 
1300       Aws::String m_uri;
1301       Aws::String m_configScheme;
1302       std::shared_ptr<Aws::Utils::Threading::Executor> m_executor;
1303   };
1304 
1305 } // namespace IVS
1306 } // namespace Aws
1307