/** * 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):

  • Stage — A stage is a * virtual space where multiple participants can exchange audio and video in real * time.

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