/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include
#include
#include
#include
#include
#include
namespace Aws
{
namespace ivsrealtime
{
/**
* Introduction
The Amazon Interactive Video Service (IVS) stage
* API is REST compatible, using a standard HTTP API and an AWS EventBridge event
* stream for responses. JSON is used for both requests and responses, including
* errors.
Terminology:
-
The IVS stage API sometimes is
* referred to as the IVS RealTime API.
-
A participant
* token is an authorization token used to publish/subscribe to a stage.
* -
A participant object represents participants (people) in
* the stage and contains information about them. When a token is created, it
* includes a participant ID; when a participant uses that token to join a stage,
* the participant is associated with that participant ID There is a 1:1 mapping
* between participant tokens and participants.
* Resources
The following resources contain information about your
* IVS live stream (see Getting
* Started with Amazon IVS):
Tagging
A tag is a metadata
* label that you assign to an AWS resource. A tag comprises a key and a
* value, both set by you. For example, you might set a tag as
* topic:nature
to label a particular video category. See Tagging
* AWS Resources for more information, including restrictions that apply to
* tags and "Tag naming limits and requirements"; Amazon IVS stages has no
* service-specific constraints beyond what is documented there.
Tags can
* help you identify and organize your AWS resources. For example, you can use the
* same tag for different resources to indicate that they are related. You can also
* use tags to manage access (see Access
* Tags).
The Amazon IVS stage API has these tag-related endpoints:
* TagResource, UntagResource, and ListTagsForResource. The
* following resource supports tagging: Stage.
At most 50 tags can be
* applied to a resource.
Stages Endpoints
-
* CreateParticipantToken — Creates an additional token for a specified
* stage. This can be done after stage creation or when tokens expire.
* -
CreateStage — Creates a new stage (and optionally participant
* tokens).
-
DeleteStage — Shuts down and deletes the
* specified stage (disconnecting all participants).
-
* DisconnectParticipant — Disconnects a specified participant and revokes
* the participant permanently from a specified stage.
-
* GetParticipant — Gets information about the specified participant
* token.
-
GetStage — Gets information for the specified
* stage.
-
GetStageSession — Gets information for the
* specified stage session.
-
ListParticipantEvents — Lists
* events for a specified participant that occurred during a specified stage
* session.
-
ListParticipants — Lists all participants in
* a specified stage session.
-
ListStages — Gets summary
* information about all stages in your account, in the AWS region where the API
* request is processed.
-
ListStageSessions — Gets all
* sessions for a specified stage.
-
UpdateStage — Updates
* a stage’s configuration.
Tags Endpoints
* -
ListTagsForResource — Gets information about AWS tags for the
* specified ARN.
-
TagResource — Adds or updates tags for
* the AWS resource with the specified ARN.
-
UntagResource
* — Removes tags from the resource with the specified ARN.
*/
class AWS_IVSREALTIME_API IvsrealtimeClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods
{
public:
typedef Aws::Client::AWSJsonClient BASECLASS;
static const char* SERVICE_NAME;
static const char* ALLOCATION_TAG;
typedef IvsrealtimeClientConfiguration ClientConfigurationType;
typedef IvsrealtimeEndpointProvider EndpointProviderType;
/**
* Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
IvsrealtimeClient(const Aws::ivsrealtime::IvsrealtimeClientConfiguration& clientConfiguration = Aws::ivsrealtime::IvsrealtimeClientConfiguration(),
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG));
/**
* Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
IvsrealtimeClient(const Aws::Auth::AWSCredentials& credentials,
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG),
const Aws::ivsrealtime::IvsrealtimeClientConfiguration& clientConfiguration = Aws::ivsrealtime::IvsrealtimeClientConfiguration());
/**
* Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
* the default http client factory will be used
*/
IvsrealtimeClient(const std::shared_ptr& credentialsProvider,
std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG),
const Aws::ivsrealtime::IvsrealtimeClientConfiguration& clientConfiguration = Aws::ivsrealtime::IvsrealtimeClientConfiguration());
/* Legacy constructors due deprecation */
/**
* Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
IvsrealtimeClient(const Aws::Client::ClientConfiguration& clientConfiguration);
/**
* Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config
* is not specified, it will be initialized to default values.
*/
IvsrealtimeClient(const Aws::Auth::AWSCredentials& credentials,
const Aws::Client::ClientConfiguration& clientConfiguration);
/**
* Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied,
* the default http client factory will be used
*/
IvsrealtimeClient(const std::shared_ptr& credentialsProvider,
const Aws::Client::ClientConfiguration& clientConfiguration);
/* End of legacy constructors due deprecation */
virtual ~IvsrealtimeClient();
/**
* Creates an additional token for a specified stage. This can be done after
* stage creation or when tokens expire. Tokens always are scoped to the stage for
* which they are created.
Encryption keys are owned by Amazon IVS and never
* used directly by your application.
See Also:
AWS
* API Reference
*/
virtual Model::CreateParticipantTokenOutcome CreateParticipantToken(const Model::CreateParticipantTokenRequest& request) const;
/**
* A Callable wrapper for CreateParticipantToken that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::CreateParticipantTokenOutcomeCallable CreateParticipantTokenCallable(const CreateParticipantTokenRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::CreateParticipantToken, request);
}
/**
* An Async wrapper for CreateParticipantToken that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void CreateParticipantTokenAsync(const CreateParticipantTokenRequestT& request, const CreateParticipantTokenResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::CreateParticipantToken, request, handler, context);
}
/**
* Creates a new stage (and optionally participant tokens).
See
* Also:
AWS
* API Reference
*/
virtual Model::CreateStageOutcome CreateStage(const Model::CreateStageRequest& request) const;
/**
* A Callable wrapper for CreateStage that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::CreateStageOutcomeCallable CreateStageCallable(const CreateStageRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::CreateStage, request);
}
/**
* An Async wrapper for CreateStage that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void CreateStageAsync(const CreateStageRequestT& request, const CreateStageResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::CreateStage, request, handler, context);
}
/**
* Shuts down and deletes the specified stage (disconnecting all
* participants).
See Also:
AWS
* API Reference
*/
virtual Model::DeleteStageOutcome DeleteStage(const Model::DeleteStageRequest& request) const;
/**
* A Callable wrapper for DeleteStage that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::DeleteStageOutcomeCallable DeleteStageCallable(const DeleteStageRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::DeleteStage, request);
}
/**
* An Async wrapper for DeleteStage that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void DeleteStageAsync(const DeleteStageRequestT& request, const DeleteStageResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::DeleteStage, request, handler, context);
}
/**
* Disconnects a specified participant and revokes the participant permanently
* from a specified stage.
See Also:
AWS
* API Reference
*/
virtual Model::DisconnectParticipantOutcome DisconnectParticipant(const Model::DisconnectParticipantRequest& request) const;
/**
* A Callable wrapper for DisconnectParticipant that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::DisconnectParticipantOutcomeCallable DisconnectParticipantCallable(const DisconnectParticipantRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::DisconnectParticipant, request);
}
/**
* An Async wrapper for DisconnectParticipant that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void DisconnectParticipantAsync(const DisconnectParticipantRequestT& request, const DisconnectParticipantResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::DisconnectParticipant, request, handler, context);
}
/**
* Gets information about the specified participant token.
See
* Also:
AWS
* API Reference
*/
virtual Model::GetParticipantOutcome GetParticipant(const Model::GetParticipantRequest& request) const;
/**
* A Callable wrapper for GetParticipant that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::GetParticipantOutcomeCallable GetParticipantCallable(const GetParticipantRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::GetParticipant, request);
}
/**
* An Async wrapper for GetParticipant that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void GetParticipantAsync(const GetParticipantRequestT& request, const GetParticipantResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::GetParticipant, request, handler, context);
}
/**
* Gets information for the specified stage.
See Also:
AWS
* API Reference
*/
virtual Model::GetStageOutcome GetStage(const Model::GetStageRequest& request) const;
/**
* A Callable wrapper for GetStage that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::GetStageOutcomeCallable GetStageCallable(const GetStageRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::GetStage, request);
}
/**
* An Async wrapper for GetStage that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void GetStageAsync(const GetStageRequestT& request, const GetStageResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::GetStage, request, handler, context);
}
/**
* Gets information for the specified stage session.
See Also:
* AWS
* API Reference
*/
virtual Model::GetStageSessionOutcome GetStageSession(const Model::GetStageSessionRequest& request) const;
/**
* A Callable wrapper for GetStageSession that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::GetStageSessionOutcomeCallable GetStageSessionCallable(const GetStageSessionRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::GetStageSession, request);
}
/**
* An Async wrapper for GetStageSession that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void GetStageSessionAsync(const GetStageSessionRequestT& request, const GetStageSessionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::GetStageSession, request, handler, context);
}
/**
* Lists events for a specified participant that occurred during a specified
* stage session.
See Also:
AWS
* API Reference
*/
virtual Model::ListParticipantEventsOutcome ListParticipantEvents(const Model::ListParticipantEventsRequest& request) const;
/**
* A Callable wrapper for ListParticipantEvents that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ListParticipantEventsOutcomeCallable ListParticipantEventsCallable(const ListParticipantEventsRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::ListParticipantEvents, request);
}
/**
* An Async wrapper for ListParticipantEvents that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ListParticipantEventsAsync(const ListParticipantEventsRequestT& request, const ListParticipantEventsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::ListParticipantEvents, request, handler, context);
}
/**
* Lists all participants in a specified stage session.
See Also:
* AWS
* API Reference
*/
virtual Model::ListParticipantsOutcome ListParticipants(const Model::ListParticipantsRequest& request) const;
/**
* A Callable wrapper for ListParticipants that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ListParticipantsOutcomeCallable ListParticipantsCallable(const ListParticipantsRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::ListParticipants, request);
}
/**
* An Async wrapper for ListParticipants that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ListParticipantsAsync(const ListParticipantsRequestT& request, const ListParticipantsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::ListParticipants, request, handler, context);
}
/**
* Gets all sessions for a specified stage.
See Also:
AWS
* API Reference
*/
virtual Model::ListStageSessionsOutcome ListStageSessions(const Model::ListStageSessionsRequest& request) const;
/**
* A Callable wrapper for ListStageSessions that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ListStageSessionsOutcomeCallable ListStageSessionsCallable(const ListStageSessionsRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::ListStageSessions, request);
}
/**
* An Async wrapper for ListStageSessions that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ListStageSessionsAsync(const ListStageSessionsRequestT& request, const ListStageSessionsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::ListStageSessions, request, handler, context);
}
/**
* Gets summary information about all stages in your account, in the AWS region
* where the API request is processed.
See Also:
AWS
* API Reference
*/
virtual Model::ListStagesOutcome ListStages(const Model::ListStagesRequest& request) const;
/**
* A Callable wrapper for ListStages that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ListStagesOutcomeCallable ListStagesCallable(const ListStagesRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::ListStages, request);
}
/**
* An Async wrapper for ListStages that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ListStagesAsync(const ListStagesRequestT& request, const ListStagesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::ListStages, request, handler, context);
}
/**
* Gets information about AWS tags for the specified ARN.
See
* Also:
AWS
* API Reference
*/
virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const;
/**
* A Callable wrapper for ListTagsForResource that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const ListTagsForResourceRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::ListTagsForResource, request);
}
/**
* An Async wrapper for ListTagsForResource that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void ListTagsForResourceAsync(const ListTagsForResourceRequestT& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::ListTagsForResource, request, handler, context);
}
/**
* Adds or updates tags for the AWS resource with the specified
* ARN.
See Also:
AWS
* API Reference
*/
virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const;
/**
* A Callable wrapper for TagResource that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::TagResourceOutcomeCallable TagResourceCallable(const TagResourceRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::TagResource, request);
}
/**
* An Async wrapper for TagResource that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void TagResourceAsync(const TagResourceRequestT& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::TagResource, request, handler, context);
}
/**
* Removes tags from the resource with the specified ARN.
See
* Also:
AWS
* API Reference
*/
virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const;
/**
* A Callable wrapper for UntagResource that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::UntagResourceOutcomeCallable UntagResourceCallable(const UntagResourceRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::UntagResource, request);
}
/**
* An Async wrapper for UntagResource that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void UntagResourceAsync(const UntagResourceRequestT& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::UntagResource, request, handler, context);
}
/**
* Updates a stage’s configuration.
See Also:
AWS
* API Reference
*/
virtual Model::UpdateStageOutcome UpdateStage(const Model::UpdateStageRequest& request) const;
/**
* A Callable wrapper for UpdateStage that returns a future to the operation so that it can be executed in parallel to other requests.
*/
template
Model::UpdateStageOutcomeCallable UpdateStageCallable(const UpdateStageRequestT& request) const
{
return SubmitCallable(&IvsrealtimeClient::UpdateStage, request);
}
/**
* An Async wrapper for UpdateStage that queues the request into a thread executor and triggers associated callback when operation has finished.
*/
template
void UpdateStageAsync(const UpdateStageRequestT& request, const UpdateStageResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const
{
return SubmitAsync(&IvsrealtimeClient::UpdateStage, request, handler, context);
}
void OverrideEndpoint(const Aws::String& endpoint);
std::shared_ptr& accessEndpointProvider();
private:
friend class Aws::Client::ClientWithAsyncTemplateMethods;
void init(const IvsrealtimeClientConfiguration& clientConfiguration);
IvsrealtimeClientConfiguration m_clientConfiguration;
std::shared_ptr m_executor;
std::shared_ptr m_endpointProvider;
};
} // namespace ivsrealtime
} // namespace Aws