From 3520f1a323d95b322af24dec977eb22860ee056d Mon Sep 17 00:00:00 2001 From: awstools Date: Wed, 26 Jun 2024 18:16:19 +0000 Subject: [PATCH] feat(client-ivs-realtime): IVS Real-Time now offers customers the ability to upload public keys for customer vended participant tokens. --- clients/client-ivs-realtime/README.md | 219 ++------- .../client-ivs-realtime/src/IVSRealTime.ts | 279 ++++------- .../src/IVSRealTimeClient.ts | 213 ++------- .../src/commands/CreateStageCommand.ts | 4 + .../src/commands/DeletePublicKeyCommand.ts | 97 ++++ .../src/commands/GetPublicKeyCommand.ts | 99 ++++ .../src/commands/GetStageCommand.ts | 4 + .../src/commands/ImportPublicKeyCommand.ts | 109 +++++ .../src/commands/ListPublicKeysCommand.ts | 98 ++++ .../src/commands/UpdateStageCommand.ts | 4 + .../client-ivs-realtime/src/commands/index.ts | 4 + clients/client-ivs-realtime/src/index.ts | 201 +------- .../src/models/models_0.ts | 244 +++++++++- .../src/pagination/ListPublicKeysPaginator.ts | 24 + .../src/pagination/index.ts | 1 + .../src/protocols/Aws_restJson1.ts | 184 +++++++ .../sdk-codegen/aws-models/ivs-realtime.json | 448 +++++++++++++++++- 17 files changed, 1493 insertions(+), 739 deletions(-) create mode 100644 clients/client-ivs-realtime/src/commands/DeletePublicKeyCommand.ts create mode 100644 clients/client-ivs-realtime/src/commands/GetPublicKeyCommand.ts create mode 100644 clients/client-ivs-realtime/src/commands/ImportPublicKeyCommand.ts create mode 100644 clients/client-ivs-realtime/src/commands/ListPublicKeysCommand.ts create mode 100644 clients/client-ivs-realtime/src/pagination/ListPublicKeysPaginator.ts diff --git a/clients/client-ivs-realtime/README.md b/clients/client-ivs-realtime/README.md index 703b1d671ba2..12ac5a5a136e 100644 --- a/clients/client-ivs-realtime/README.md +++ b/clients/client-ivs-realtime/README.md @@ -6,48 +6,46 @@ AWS SDK for JavaScript IVSRealTime Client for Node.js, Browser and React Native. -

-Introduction -

The Amazon Interactive Video Service (IVS) real-time 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:

+

+Key Concepts +

+

For server-side composition:

+

-Resources -

-

The following resources contain information about your IVS live stream (see Getting Started with Amazon IVS Real-Time Streaming):

- +

For more information about your IVS live stream, also see Getting Started with Amazon IVS Real-Time Streaming.

Tagging

@@ -63,157 +61,6 @@ manage access (see void ): void; + /** + * @see {@link DeletePublicKeyCommand} + */ + deletePublicKey( + args: DeletePublicKeyCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deletePublicKey(args: DeletePublicKeyCommandInput, cb: (err: any, data?: DeletePublicKeyCommandOutput) => void): void; + deletePublicKey( + args: DeletePublicKeyCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeletePublicKeyCommandOutput) => void + ): void; + /** * @see {@link DeleteStageCommand} */ @@ -317,6 +355,17 @@ export interface IVSRealTime { cb: (err: any, data?: GetParticipantCommandOutput) => void ): void; + /** + * @see {@link GetPublicKeyCommand} + */ + getPublicKey(args: GetPublicKeyCommandInput, options?: __HttpHandlerOptions): Promise; + getPublicKey(args: GetPublicKeyCommandInput, cb: (err: any, data?: GetPublicKeyCommandOutput) => void): void; + getPublicKey( + args: GetPublicKeyCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetPublicKeyCommandOutput) => void + ): void; + /** * @see {@link GetStageCommand} */ @@ -359,6 +408,20 @@ export interface IVSRealTime { cb: (err: any, data?: GetStorageConfigurationCommandOutput) => void ): void; + /** + * @see {@link ImportPublicKeyCommand} + */ + importPublicKey( + args: ImportPublicKeyCommandInput, + options?: __HttpHandlerOptions + ): Promise; + importPublicKey(args: ImportPublicKeyCommandInput, cb: (err: any, data?: ImportPublicKeyCommandOutput) => void): void; + importPublicKey( + args: ImportPublicKeyCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ImportPublicKeyCommandOutput) => void + ): void; + /** * @see {@link ListCompositionsCommand} */ @@ -429,6 +492,21 @@ export interface IVSRealTime { cb: (err: any, data?: ListParticipantsCommandOutput) => void ): void; + /** + * @see {@link ListPublicKeysCommand} + */ + listPublicKeys(): Promise; + listPublicKeys( + args: ListPublicKeysCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listPublicKeys(args: ListPublicKeysCommandInput, cb: (err: any, data?: ListPublicKeysCommandOutput) => void): void; + listPublicKeys( + args: ListPublicKeysCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListPublicKeysCommandOutput) => void + ): void; + /** * @see {@link ListStagesCommand} */ @@ -559,48 +637,46 @@ export interface IVSRealTime { } /** - *

- * Introduction - *

- *

The Amazon Interactive Video Service (IVS) real-time API is REST compatible, using a standard HTTP + *

The Amazon Interactive Video Service (IVS) real-time 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:

+ *

+ * Key Concepts + *

*
    *
  • - *

    A stage is a virtual space where participants can exchange video in real time.

    - *
  • - *
  • - *

    A participant token is a token that authenticates a participant when they join 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.

    + *

    + * Stage — A virtual space where participants can exchange video in real time.

    *
  • *
  • - *

    Server-side composition: The composition process composites participants - * of a stage into a single video and forwards it to a set of outputs (e.g., IVS channels). - * Composition endpoints support this process.

    + *

    + * Participant token — A token that authenticates a participant when they join a stage.

    *
  • *
  • - *

    Server-side composition: A composition controls the look of the outputs, - * including how participants are positioned in the video.

    + *

    + * 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 Real-Time Streaming):

+ *

For server-side composition:

* + *

For more information about your IVS live stream, also see Getting Started with Amazon IVS Real-Time Streaming.

*

* Tagging *

@@ -616,157 +692,6 @@ export interface IVSRealTime { *

The Amazon IVS real-time 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 - *

- * - *

- * Composition Endpoints - *

- * - *

- * EncoderConfiguration Endpoints - *

- * - *

- * StorageConfiguration Endpoints - *

- * - *

- * Tags Endpoints - *

- * * @public */ export class IVSRealTime extends IVSRealTimeClient implements IVSRealTime {} diff --git a/clients/client-ivs-realtime/src/IVSRealTimeClient.ts b/clients/client-ivs-realtime/src/IVSRealTimeClient.ts index ac14661712ee..c7e835c0af35 100644 --- a/clients/client-ivs-realtime/src/IVSRealTimeClient.ts +++ b/clients/client-ivs-realtime/src/IVSRealTimeClient.ts @@ -70,6 +70,7 @@ import { DeleteEncoderConfigurationCommandInput, DeleteEncoderConfigurationCommandOutput, } from "./commands/DeleteEncoderConfigurationCommand"; +import { DeletePublicKeyCommandInput, DeletePublicKeyCommandOutput } from "./commands/DeletePublicKeyCommand"; import { DeleteStageCommandInput, DeleteStageCommandOutput } from "./commands/DeleteStageCommand"; import { DeleteStorageConfigurationCommandInput, @@ -85,12 +86,14 @@ import { GetEncoderConfigurationCommandOutput, } from "./commands/GetEncoderConfigurationCommand"; import { GetParticipantCommandInput, GetParticipantCommandOutput } from "./commands/GetParticipantCommand"; +import { GetPublicKeyCommandInput, GetPublicKeyCommandOutput } from "./commands/GetPublicKeyCommand"; import { GetStageCommandInput, GetStageCommandOutput } from "./commands/GetStageCommand"; import { GetStageSessionCommandInput, GetStageSessionCommandOutput } from "./commands/GetStageSessionCommand"; import { GetStorageConfigurationCommandInput, GetStorageConfigurationCommandOutput, } from "./commands/GetStorageConfigurationCommand"; +import { ImportPublicKeyCommandInput, ImportPublicKeyCommandOutput } from "./commands/ImportPublicKeyCommand"; import { ListCompositionsCommandInput, ListCompositionsCommandOutput } from "./commands/ListCompositionsCommand"; import { ListEncoderConfigurationsCommandInput, @@ -101,6 +104,7 @@ import { ListParticipantEventsCommandOutput, } from "./commands/ListParticipantEventsCommand"; import { ListParticipantsCommandInput, ListParticipantsCommandOutput } from "./commands/ListParticipantsCommand"; +import { ListPublicKeysCommandInput, ListPublicKeysCommandOutput } from "./commands/ListPublicKeysCommand"; import { ListStagesCommandInput, ListStagesCommandOutput } from "./commands/ListStagesCommand"; import { ListStageSessionsCommandInput, ListStageSessionsCommandOutput } from "./commands/ListStageSessionsCommand"; import { @@ -136,19 +140,23 @@ export type ServiceInputTypes = | CreateStageCommandInput | CreateStorageConfigurationCommandInput | DeleteEncoderConfigurationCommandInput + | DeletePublicKeyCommandInput | DeleteStageCommandInput | DeleteStorageConfigurationCommandInput | DisconnectParticipantCommandInput | GetCompositionCommandInput | GetEncoderConfigurationCommandInput | GetParticipantCommandInput + | GetPublicKeyCommandInput | GetStageCommandInput | GetStageSessionCommandInput | GetStorageConfigurationCommandInput + | ImportPublicKeyCommandInput | ListCompositionsCommandInput | ListEncoderConfigurationsCommandInput | ListParticipantEventsCommandInput | ListParticipantsCommandInput + | ListPublicKeysCommandInput | ListStageSessionsCommandInput | ListStagesCommandInput | ListStorageConfigurationsCommandInput @@ -168,19 +176,23 @@ export type ServiceOutputTypes = | CreateStageCommandOutput | CreateStorageConfigurationCommandOutput | DeleteEncoderConfigurationCommandOutput + | DeletePublicKeyCommandOutput | DeleteStageCommandOutput | DeleteStorageConfigurationCommandOutput | DisconnectParticipantCommandOutput | GetCompositionCommandOutput | GetEncoderConfigurationCommandOutput | GetParticipantCommandOutput + | GetPublicKeyCommandOutput | GetStageCommandOutput | GetStageSessionCommandOutput | GetStorageConfigurationCommandOutput + | ImportPublicKeyCommandOutput | ListCompositionsCommandOutput | ListEncoderConfigurationsCommandOutput | ListParticipantEventsCommandOutput | ListParticipantsCommandOutput + | ListPublicKeysCommandOutput | ListStageSessionsCommandOutput | ListStagesCommandOutput | ListStorageConfigurationsCommandOutput @@ -363,48 +375,46 @@ export type IVSRealTimeClientResolvedConfigType = __SmithyResolvedConfiguration< export interface IVSRealTimeClientResolvedConfig extends IVSRealTimeClientResolvedConfigType {} /** - *

- * Introduction - *

- *

The Amazon Interactive Video Service (IVS) real-time API is REST compatible, using a standard HTTP + *

The Amazon Interactive Video Service (IVS) real-time 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:

+ *

+ * Key Concepts + *

* - *

- * Resources - *

- *

The following resources contain information about your IVS live stream (see Getting Started with Amazon IVS Real-Time Streaming):

+ *

For server-side composition:

* + *

For more information about your IVS live stream, also see Getting Started with Amazon IVS Real-Time Streaming.

*

* Tagging *

@@ -420,157 +430,6 @@ export interface IVSRealTimeClientResolvedConfig extends IVSRealTimeClientResolv *

The Amazon IVS real-time 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 - *

- * - *

- * Composition Endpoints - *

- * - *

- * EncoderConfiguration Endpoints - *

- * - *

- * StorageConfiguration Endpoints - *

- * - *

- * Tags Endpoints - *

- * * @public */ export class IVSRealTimeClient extends __Client< diff --git a/clients/client-ivs-realtime/src/commands/CreateStageCommand.ts b/clients/client-ivs-realtime/src/commands/CreateStageCommand.ts index dfdf5126e43b..319c3255ed70 100644 --- a/clients/client-ivs-realtime/src/commands/CreateStageCommand.ts +++ b/clients/client-ivs-realtime/src/commands/CreateStageCommand.ts @@ -75,6 +75,10 @@ export interface CreateStageCommandOutput extends CreateStageResponse, __Metadat * // "STRING_VALUE", * // ], * // }, + * // endpoints: { // StageEndpoints + * // events: "STRING_VALUE", + * // whip: "STRING_VALUE", + * // }, * // }, * // participantTokens: [ // ParticipantTokenList * // { // ParticipantToken diff --git a/clients/client-ivs-realtime/src/commands/DeletePublicKeyCommand.ts b/clients/client-ivs-realtime/src/commands/DeletePublicKeyCommand.ts new file mode 100644 index 000000000000..27fc1a7afddd --- /dev/null +++ b/clients/client-ivs-realtime/src/commands/DeletePublicKeyCommand.ts @@ -0,0 +1,97 @@ +// smithy-typescript generated code +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { getSerdePlugin } from "@smithy/middleware-serde"; +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import { IVSRealTimeClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../IVSRealTimeClient"; +import { DeletePublicKeyRequest, DeletePublicKeyResponse } from "../models/models_0"; +import { de_DeletePublicKeyCommand, se_DeletePublicKeyCommand } from "../protocols/Aws_restJson1"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeletePublicKeyCommand}. + */ +export interface DeletePublicKeyCommandInput extends DeletePublicKeyRequest {} +/** + * @public + * + * The output of {@link DeletePublicKeyCommand}. + */ +export interface DeletePublicKeyCommandOutput extends DeletePublicKeyResponse, __MetadataBearer {} + +/** + *

Deletes the specified public key used to sign stage participant tokens. + * This invalidates future participant tokens generated using the key pair’s private key. + *

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { IVSRealTimeClient, DeletePublicKeyCommand } from "@aws-sdk/client-ivs-realtime"; // ES Modules import + * // const { IVSRealTimeClient, DeletePublicKeyCommand } = require("@aws-sdk/client-ivs-realtime"); // CommonJS import + * const client = new IVSRealTimeClient(config); + * const input = { // DeletePublicKeyRequest + * arn: "STRING_VALUE", // required + * }; + * const command = new DeletePublicKeyCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeletePublicKeyCommandInput - {@link DeletePublicKeyCommandInput} + * @returns {@link DeletePublicKeyCommandOutput} + * @see {@link DeletePublicKeyCommandInput} for command's `input` shape. + * @see {@link DeletePublicKeyCommandOutput} for command's `response` shape. + * @see {@link IVSRealTimeClientResolvedConfig | config} for IVSRealTimeClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

+ * + * @throws {@link ConflictException} (client fault) + *

+ * + * @throws {@link PendingVerification} (client fault) + *

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

+ * + * @throws {@link ValidationException} (client fault) + *

+ * + * @throws {@link IVSRealTimeServiceException} + *

Base exception class for all service exceptions from IVSRealTime service.

+ * + * @public + */ +export class DeletePublicKeyCommand extends $Command + .classBuilder< + DeletePublicKeyCommandInput, + DeletePublicKeyCommandOutput, + IVSRealTimeClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep({ + ...commonParams, + }) + .m(function (this: any, Command: any, cs: any, config: IVSRealTimeClientResolvedConfig, o: any) { + return [ + getSerdePlugin(config, this.serialize, this.deserialize), + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + ]; + }) + .s("AmazonInteractiveVideoServiceRealTime", "DeletePublicKey", {}) + .n("IVSRealTimeClient", "DeletePublicKeyCommand") + .f(void 0, void 0) + .ser(se_DeletePublicKeyCommand) + .de(de_DeletePublicKeyCommand) + .build() {} diff --git a/clients/client-ivs-realtime/src/commands/GetPublicKeyCommand.ts b/clients/client-ivs-realtime/src/commands/GetPublicKeyCommand.ts new file mode 100644 index 000000000000..fd1cac24c4a0 --- /dev/null +++ b/clients/client-ivs-realtime/src/commands/GetPublicKeyCommand.ts @@ -0,0 +1,99 @@ +// smithy-typescript generated code +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { getSerdePlugin } from "@smithy/middleware-serde"; +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import { IVSRealTimeClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../IVSRealTimeClient"; +import { GetPublicKeyRequest, GetPublicKeyResponse } from "../models/models_0"; +import { de_GetPublicKeyCommand, se_GetPublicKeyCommand } from "../protocols/Aws_restJson1"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetPublicKeyCommand}. + */ +export interface GetPublicKeyCommandInput extends GetPublicKeyRequest {} +/** + * @public + * + * The output of {@link GetPublicKeyCommand}. + */ +export interface GetPublicKeyCommandOutput extends GetPublicKeyResponse, __MetadataBearer {} + +/** + *

Gets information for the specified public key.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { IVSRealTimeClient, GetPublicKeyCommand } from "@aws-sdk/client-ivs-realtime"; // ES Modules import + * // const { IVSRealTimeClient, GetPublicKeyCommand } = require("@aws-sdk/client-ivs-realtime"); // CommonJS import + * const client = new IVSRealTimeClient(config); + * const input = { // GetPublicKeyRequest + * arn: "STRING_VALUE", // required + * }; + * const command = new GetPublicKeyCommand(input); + * const response = await client.send(command); + * // { // GetPublicKeyResponse + * // publicKey: { // PublicKey + * // arn: "STRING_VALUE", + * // name: "STRING_VALUE", + * // publicKeyMaterial: "STRING_VALUE", + * // fingerprint: "STRING_VALUE", + * // tags: { // Tags + * // "": "STRING_VALUE", + * // }, + * // }, + * // }; + * + * ``` + * + * @param GetPublicKeyCommandInput - {@link GetPublicKeyCommandInput} + * @returns {@link GetPublicKeyCommandOutput} + * @see {@link GetPublicKeyCommandInput} for command's `input` shape. + * @see {@link GetPublicKeyCommandOutput} for command's `response` shape. + * @see {@link IVSRealTimeClientResolvedConfig | config} for IVSRealTimeClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

+ * + * @throws {@link ValidationException} (client fault) + *

+ * + * @throws {@link IVSRealTimeServiceException} + *

Base exception class for all service exceptions from IVSRealTime service.

+ * + * @public + */ +export class GetPublicKeyCommand extends $Command + .classBuilder< + GetPublicKeyCommandInput, + GetPublicKeyCommandOutput, + IVSRealTimeClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep({ + ...commonParams, + }) + .m(function (this: any, Command: any, cs: any, config: IVSRealTimeClientResolvedConfig, o: any) { + return [ + getSerdePlugin(config, this.serialize, this.deserialize), + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + ]; + }) + .s("AmazonInteractiveVideoServiceRealTime", "GetPublicKey", {}) + .n("IVSRealTimeClient", "GetPublicKeyCommand") + .f(void 0, void 0) + .ser(se_GetPublicKeyCommand) + .de(de_GetPublicKeyCommand) + .build() {} diff --git a/clients/client-ivs-realtime/src/commands/GetStageCommand.ts b/clients/client-ivs-realtime/src/commands/GetStageCommand.ts index 19126d2c92d4..bcfe62e49ea7 100644 --- a/clients/client-ivs-realtime/src/commands/GetStageCommand.ts +++ b/clients/client-ivs-realtime/src/commands/GetStageCommand.ts @@ -54,6 +54,10 @@ export interface GetStageCommandOutput extends GetStageResponse, __MetadataBeare * // "STRING_VALUE", * // ], * // }, + * // endpoints: { // StageEndpoints + * // events: "STRING_VALUE", + * // whip: "STRING_VALUE", + * // }, * // }, * // }; * diff --git a/clients/client-ivs-realtime/src/commands/ImportPublicKeyCommand.ts b/clients/client-ivs-realtime/src/commands/ImportPublicKeyCommand.ts new file mode 100644 index 000000000000..7a95a3598a0e --- /dev/null +++ b/clients/client-ivs-realtime/src/commands/ImportPublicKeyCommand.ts @@ -0,0 +1,109 @@ +// smithy-typescript generated code +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { getSerdePlugin } from "@smithy/middleware-serde"; +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import { IVSRealTimeClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../IVSRealTimeClient"; +import { ImportPublicKeyRequest, ImportPublicKeyResponse } from "../models/models_0"; +import { de_ImportPublicKeyCommand, se_ImportPublicKeyCommand } from "../protocols/Aws_restJson1"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ImportPublicKeyCommand}. + */ +export interface ImportPublicKeyCommandInput extends ImportPublicKeyRequest {} +/** + * @public + * + * The output of {@link ImportPublicKeyCommand}. + */ +export interface ImportPublicKeyCommandOutput extends ImportPublicKeyResponse, __MetadataBearer {} + +/** + *

Import a public key to be used for signing stage participant tokens.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { IVSRealTimeClient, ImportPublicKeyCommand } from "@aws-sdk/client-ivs-realtime"; // ES Modules import + * // const { IVSRealTimeClient, ImportPublicKeyCommand } = require("@aws-sdk/client-ivs-realtime"); // CommonJS import + * const client = new IVSRealTimeClient(config); + * const input = { // ImportPublicKeyRequest + * publicKeyMaterial: "STRING_VALUE", // required + * name: "STRING_VALUE", + * tags: { // Tags + * "": "STRING_VALUE", + * }, + * }; + * const command = new ImportPublicKeyCommand(input); + * const response = await client.send(command); + * // { // ImportPublicKeyResponse + * // publicKey: { // PublicKey + * // arn: "STRING_VALUE", + * // name: "STRING_VALUE", + * // publicKeyMaterial: "STRING_VALUE", + * // fingerprint: "STRING_VALUE", + * // tags: { // Tags + * // "": "STRING_VALUE", + * // }, + * // }, + * // }; + * + * ``` + * + * @param ImportPublicKeyCommandInput - {@link ImportPublicKeyCommandInput} + * @returns {@link ImportPublicKeyCommandOutput} + * @see {@link ImportPublicKeyCommandInput} for command's `input` shape. + * @see {@link ImportPublicKeyCommandOutput} for command's `response` shape. + * @see {@link IVSRealTimeClientResolvedConfig | config} for IVSRealTimeClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

+ * + * @throws {@link ConflictException} (client fault) + *

+ * + * @throws {@link PendingVerification} (client fault) + *

+ * + * @throws {@link ServiceQuotaExceededException} (client fault) + *

+ * + * @throws {@link ValidationException} (client fault) + *

+ * + * @throws {@link IVSRealTimeServiceException} + *

Base exception class for all service exceptions from IVSRealTime service.

+ * + * @public + */ +export class ImportPublicKeyCommand extends $Command + .classBuilder< + ImportPublicKeyCommandInput, + ImportPublicKeyCommandOutput, + IVSRealTimeClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep({ + ...commonParams, + }) + .m(function (this: any, Command: any, cs: any, config: IVSRealTimeClientResolvedConfig, o: any) { + return [ + getSerdePlugin(config, this.serialize, this.deserialize), + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + ]; + }) + .s("AmazonInteractiveVideoServiceRealTime", "ImportPublicKey", {}) + .n("IVSRealTimeClient", "ImportPublicKeyCommand") + .f(void 0, void 0) + .ser(se_ImportPublicKeyCommand) + .de(de_ImportPublicKeyCommand) + .build() {} diff --git a/clients/client-ivs-realtime/src/commands/ListPublicKeysCommand.ts b/clients/client-ivs-realtime/src/commands/ListPublicKeysCommand.ts new file mode 100644 index 000000000000..d499801d9ef3 --- /dev/null +++ b/clients/client-ivs-realtime/src/commands/ListPublicKeysCommand.ts @@ -0,0 +1,98 @@ +// smithy-typescript generated code +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { getSerdePlugin } from "@smithy/middleware-serde"; +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import { IVSRealTimeClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../IVSRealTimeClient"; +import { ListPublicKeysRequest, ListPublicKeysResponse } from "../models/models_0"; +import { de_ListPublicKeysCommand, se_ListPublicKeysCommand } from "../protocols/Aws_restJson1"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListPublicKeysCommand}. + */ +export interface ListPublicKeysCommandInput extends ListPublicKeysRequest {} +/** + * @public + * + * The output of {@link ListPublicKeysCommand}. + */ +export interface ListPublicKeysCommandOutput extends ListPublicKeysResponse, __MetadataBearer {} + +/** + *

Gets summary information about all public keys in your account, in the AWS region where the API request is processed.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { IVSRealTimeClient, ListPublicKeysCommand } from "@aws-sdk/client-ivs-realtime"; // ES Modules import + * // const { IVSRealTimeClient, ListPublicKeysCommand } = require("@aws-sdk/client-ivs-realtime"); // CommonJS import + * const client = new IVSRealTimeClient(config); + * const input = { // ListPublicKeysRequest + * nextToken: "STRING_VALUE", + * maxResults: Number("int"), + * }; + * const command = new ListPublicKeysCommand(input); + * const response = await client.send(command); + * // { // ListPublicKeysResponse + * // publicKeys: [ // PublicKeyList // required + * // { // PublicKeySummary + * // arn: "STRING_VALUE", + * // name: "STRING_VALUE", + * // tags: { // Tags + * // "": "STRING_VALUE", + * // }, + * // }, + * // ], + * // nextToken: "STRING_VALUE", + * // }; + * + * ``` + * + * @param ListPublicKeysCommandInput - {@link ListPublicKeysCommandInput} + * @returns {@link ListPublicKeysCommandOutput} + * @see {@link ListPublicKeysCommandInput} for command's `input` shape. + * @see {@link ListPublicKeysCommandOutput} for command's `response` shape. + * @see {@link IVSRealTimeClientResolvedConfig | config} for IVSRealTimeClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

+ * + * @throws {@link ValidationException} (client fault) + *

+ * + * @throws {@link IVSRealTimeServiceException} + *

Base exception class for all service exceptions from IVSRealTime service.

+ * + * @public + */ +export class ListPublicKeysCommand extends $Command + .classBuilder< + ListPublicKeysCommandInput, + ListPublicKeysCommandOutput, + IVSRealTimeClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep({ + ...commonParams, + }) + .m(function (this: any, Command: any, cs: any, config: IVSRealTimeClientResolvedConfig, o: any) { + return [ + getSerdePlugin(config, this.serialize, this.deserialize), + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + ]; + }) + .s("AmazonInteractiveVideoServiceRealTime", "ListPublicKeys", {}) + .n("IVSRealTimeClient", "ListPublicKeysCommand") + .f(void 0, void 0) + .ser(se_ListPublicKeysCommand) + .de(de_ListPublicKeysCommand) + .build() {} diff --git a/clients/client-ivs-realtime/src/commands/UpdateStageCommand.ts b/clients/client-ivs-realtime/src/commands/UpdateStageCommand.ts index 58500829ab3e..3e428e963e40 100644 --- a/clients/client-ivs-realtime/src/commands/UpdateStageCommand.ts +++ b/clients/client-ivs-realtime/src/commands/UpdateStageCommand.ts @@ -61,6 +61,10 @@ export interface UpdateStageCommandOutput extends UpdateStageResponse, __Metadat * // "STRING_VALUE", * // ], * // }, + * // endpoints: { // StageEndpoints + * // events: "STRING_VALUE", + * // whip: "STRING_VALUE", + * // }, * // }, * // }; * diff --git a/clients/client-ivs-realtime/src/commands/index.ts b/clients/client-ivs-realtime/src/commands/index.ts index d3dc615b6555..efbbd4ae7397 100644 --- a/clients/client-ivs-realtime/src/commands/index.ts +++ b/clients/client-ivs-realtime/src/commands/index.ts @@ -4,19 +4,23 @@ export * from "./CreateParticipantTokenCommand"; export * from "./CreateStageCommand"; export * from "./CreateStorageConfigurationCommand"; export * from "./DeleteEncoderConfigurationCommand"; +export * from "./DeletePublicKeyCommand"; export * from "./DeleteStageCommand"; export * from "./DeleteStorageConfigurationCommand"; export * from "./DisconnectParticipantCommand"; export * from "./GetCompositionCommand"; export * from "./GetEncoderConfigurationCommand"; export * from "./GetParticipantCommand"; +export * from "./GetPublicKeyCommand"; export * from "./GetStageCommand"; export * from "./GetStageSessionCommand"; export * from "./GetStorageConfigurationCommand"; +export * from "./ImportPublicKeyCommand"; export * from "./ListCompositionsCommand"; export * from "./ListEncoderConfigurationsCommand"; export * from "./ListParticipantEventsCommand"; export * from "./ListParticipantsCommand"; +export * from "./ListPublicKeysCommand"; export * from "./ListStageSessionsCommand"; export * from "./ListStagesCommand"; export * from "./ListStorageConfigurationsCommand"; diff --git a/clients/client-ivs-realtime/src/index.ts b/clients/client-ivs-realtime/src/index.ts index 4ee3f25bca60..4bceace9156e 100644 --- a/clients/client-ivs-realtime/src/index.ts +++ b/clients/client-ivs-realtime/src/index.ts @@ -1,48 +1,46 @@ // smithy-typescript generated code /* eslint-disable */ /** - *

- * Introduction - *

- *

The Amazon Interactive Video Service (IVS) real-time API is REST compatible, using a standard HTTP + *

The Amazon Interactive Video Service (IVS) real-time 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:

+ *

+ * Key Concepts + *

*
    *
  • - *

    A stage is a virtual space where participants can exchange video in real time.

    - *
  • - *
  • - *

    A participant token is a token that authenticates a participant when they join 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.

    + *

    + * Stage — A virtual space where participants can exchange video in real time.

    *
  • *
  • - *

    Server-side composition: The composition process composites participants - * of a stage into a single video and forwards it to a set of outputs (e.g., IVS channels). - * Composition endpoints support this process.

    + *

    + * Participant token — A token that authenticates a participant when they join a stage.

    *
  • *
  • - *

    Server-side composition: A composition controls the look of the outputs, - * including how participants are positioned in the video.

    + *

    + * 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 Real-Time Streaming):

+ *

For server-side composition:

*
    *
  • *

    - * Stage — A stage is a virtual space where participants can exchange video in real time.

    + * Composition process — Composites participants + * of a stage into a single video and forwards it to a set of outputs (e.g., IVS channels). + * Composition endpoints support this process.

    + *
  • + *
  • + *

    + * Composition — Controls the look of the outputs, + * including how participants are positioned in the video.

    *
  • *
+ *

For more information about your IVS live stream, also see Getting Started with Amazon IVS Real-Time Streaming.

*

* Tagging *

@@ -58,157 +56,6 @@ *

The Amazon IVS real-time 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.

    - *
  • - *
- *

- * Composition Endpoints - *

- *
    - *
  • - *

    - * GetComposition — Gets information about the specified - * Composition resource.

    - *
  • - *
  • - *

    - * ListCompositions — Gets summary information about all - * Compositions in your account, in the AWS region where the API request is processed.

    - *
  • - *
  • - *

    - * StartComposition — Starts a Composition from a stage based on - * the configuration provided in the request.

    - *
  • - *
  • - *

    - * StopComposition — Stops and deletes a Composition resource. - * Any broadcast from the Composition resource is stopped.

    - *
  • - *
- *

- * EncoderConfiguration Endpoints - *

- *
    - *
  • - *

    - * CreateEncoderConfiguration — Creates an EncoderConfiguration object.

    - *
  • - *
  • - *

    - * DeleteEncoderConfiguration — Deletes an EncoderConfiguration - * resource. Ensures that no Compositions are using this template; otherwise, returns an - * error.

    - *
  • - *
  • - *

    - * GetEncoderConfiguration — Gets information about the specified - * EncoderConfiguration resource.

    - *
  • - *
  • - *

    - * ListEncoderConfigurations — Gets summary information about all - * EncoderConfigurations in your account, in the AWS region where the API request is - * processed.

    - *
  • - *
- *

- * StorageConfiguration Endpoints - *

- *
    - *
  • - *

    - * CreateStorageConfiguration — Creates a new storage configuration, used to enable - * recording to Amazon S3.

    - *
  • - *
  • - *

    - * DeleteStorageConfiguration — Deletes the storage configuration for the specified ARN.

    - *
  • - *
  • - *

    - * GetStorageConfiguration — Gets the storage configuration for the specified ARN.

    - *
  • - *
  • - *

    - * ListStorageConfigurations — Gets summary information about all storage configurations in your - * account, in the AWS region where the API request is processed.

    - *
  • - *
- *

- * 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.

    - *
  • - *
* * @packageDocumentation */ diff --git a/clients/client-ivs-realtime/src/models/models_0.ts b/clients/client-ivs-realtime/src/models/models_0.ts index badb4b77b087..cc31772979a5 100644 --- a/clients/client-ivs-realtime/src/models/models_0.ts +++ b/clients/client-ivs-realtime/src/models/models_0.ts @@ -436,12 +436,12 @@ export type ParticipantRecordingMediaType = (typeof ParticipantRecordingMediaType)[keyof typeof ParticipantRecordingMediaType]; /** - *

Object specifying an auto-participant-recording configuration.

+ *

Object specifying a configuration for individual participant recording.

* @public */ export interface AutoParticipantRecordingConfiguration { /** - *

ARN of the StorageConfiguration resource to use for auto participant recording. Default: "" (empty string, no storage configuration is specified). Individual participant recording cannot be started unless a storage configuration is specified, when a Stage is created or updated.

+ *

ARN of the StorageConfiguration resource to use for individual participant recording. Default: "" (empty string, no storage configuration is specified). Individual participant recording cannot be started unless a storage configuration is specified, when a Stage is created or updated.

* @public */ storageConfigurationArn: string | undefined; @@ -520,12 +520,30 @@ export interface CreateStageRequest { tags?: Record; /** - *

Auto participant recording configuration object attached to the stage.

+ *

Configuration object for individual participant recording, to attach to the new stage.

* @public */ autoParticipantRecordingConfiguration?: AutoParticipantRecordingConfiguration; } +/** + *

Summary information about various endpoints for a stage.

+ * @public + */ +export interface StageEndpoints { + /** + *

Events endpoint.

+ * @public + */ + events?: string; + + /** + *

WHIP endpoint.

+ * @public + */ + whip?: string; +} + /** *

Object specifying a stage.

* @public @@ -560,10 +578,16 @@ export interface Stage { tags?: Record; /** - *

Auto-participant-recording configuration object attached to the stage.

+ *

Configuration object for individual participant recording, attached to the stage.

* @public */ autoParticipantRecordingConfiguration?: AutoParticipantRecordingConfiguration; + + /** + *

Summary information about various endpoints for a stage.

+ * @public + */ + endpoints?: StageEndpoints; } /** @@ -685,6 +709,22 @@ export interface DeleteEncoderConfigurationRequest { */ export interface DeleteEncoderConfigurationResponse {} +/** + * @public + */ +export interface DeletePublicKeyRequest { + /** + *

ARN of the public key to be deleted.

+ * @public + */ + arn: string | undefined; +} + +/** + * @public + */ +export interface DeletePublicKeyResponse {} + /** * @public */ @@ -983,7 +1023,7 @@ export interface GridConfiguration { /** *

This attribute name identifies the featured slot. A participant with this attribute set * to "true" (as a string value) in ParticipantTokenConfiguration is placed in the featured - * slot.

+ * slot. Default: "" (no featured participant).

* @public */ featuredParticipantAttribute?: string; @@ -995,15 +1035,16 @@ export interface GridConfiguration { omitStoppedVideo?: boolean; /** - *

Sets the non-featured participant display mode. Default: VIDEO.

+ *

Sets the non-featured participant display mode, to control the aspect ratio of video tiles. VIDEO is 16:9, SQUARE is 1:1, and PORTRAIT is 3:4. Default: VIDEO.

* @public */ videoAspectRatio?: VideoAspectRatio; /** - *

Defines how video fits within the participant tile. When not set, - * videoFillMode defaults to COVER fill mode for participants in the grid - * and to CONTAIN fill mode for featured participants.

+ *

Defines how video content fits within the participant tile: FILL (stretched), COVER (cropped), + * or CONTAIN (letterboxed). When not set, + * videoFillMode defaults to COVER fill mode for participants in the grid + * and to CONTAIN fill mode for featured participants.

* @public */ videoFillMode?: VideoFillMode; @@ -1055,7 +1096,7 @@ export interface PipConfiguration { /** *

This attribute name identifies the featured slot. A participant with this attribute set * to "true" (as a string value) in ParticipantTokenConfiguration is placed in the featured - * slot.

+ * slot. Default: "" (no featured participant).

* @public */ featuredParticipantAttribute?: string; @@ -1067,8 +1108,8 @@ export interface PipConfiguration { omitStoppedVideo?: boolean; /** - *

Defines how video fits within the participant tile. Default: COVER. - *

+ *

Defines how video content fits within the participant tile: FILL (stretched), + * COVER (cropped), or CONTAIN (letterboxed). Default: COVER.

* @public */ videoFillMode?: VideoFillMode; @@ -1080,15 +1121,15 @@ export interface PipConfiguration { gridGap?: number; /** - *

Identifies the PiP slot. A participant with this attribute set + *

Specifies the participant for the PiP window. A participant with this attribute set * to "true" (as a string value) in ParticipantTokenConfiguration - * is placed in the PiP slot.

+ * is placed in the PiP slot. Default: "" (no PiP participant).

* @public */ pipParticipantAttribute?: string; /** - *

Defines PiP behavior when all participants have left. Default: STATIC.

+ *

Defines PiP behavior when all participants have left: STATIC (maintains original position/size) or DYNAMIC (expands to full composition). Default: STATIC.

* @public */ pipBehavior?: PipBehavior; @@ -1392,19 +1433,19 @@ export interface Participant { sdkVersion?: string; /** - *

Name of the S3 bucket to where the participant is being recorded, if individual participant recording is enabled, or "" (empty string), if recording is not enabled.

+ *

Name of the S3 bucket to where the participant is being recorded, if individual participant recording is enabled, or "" (empty string), if recording is not enabled.

* @public */ recordingS3BucketName?: string; /** - *

S3 prefix of the S3 bucket to where the participant is being recorded, if individual participant recording is enabled, or "" (empty string), if recording is not enabled.

+ *

S3 prefix of the S3 bucket where the participant is being recorded, if individual participant recording is enabled, or "" (empty string), if recording is not enabled.

* @public */ recordingS3Prefix?: string; /** - *

Participant’s recording state.

+ *

The participant’s recording state.

* @public */ recordingState?: ParticipantRecordingState; @@ -1421,6 +1462,68 @@ export interface GetParticipantResponse { participant?: Participant; } +/** + * @public + */ +export interface GetPublicKeyRequest { + /** + *

ARN of the public key for which the information is to be retrieved.

+ * @public + */ + arn: string | undefined; +} + +/** + *

Object specifying a public key used to sign stage participant tokens.

+ * @public + */ +export interface PublicKey { + /** + *

Public key ARN.

+ * @public + */ + arn?: string; + + /** + *

Public key name.

+ * @public + */ + name?: string; + + /** + *

Public key material.

+ * @public + */ + publicKeyMaterial?: string; + + /** + *

The public key fingerprint, a short string used to identify or verify the full public key.

+ * @public + */ + fingerprint?: string; + + /** + *

Tags attached to the resource. Array of maps, each of the form string:string + * (key:value). See Tagging AWS + * Resources for details, including restrictions that apply to tags and "Tag naming + * limits and requirements"; Amazon IVS has no constraints on tags beyond what is documented + * there.

+ * @public + */ + tags?: Record; +} + +/** + * @public + */ +export interface GetPublicKeyResponse { + /** + *

The public key that is returned.

+ * @public + */ + publicKey?: PublicKey; +} + /** * @public */ @@ -1521,6 +1624,44 @@ export interface GetStorageConfigurationResponse { storageConfiguration?: StorageConfiguration; } +/** + * @public + */ +export interface ImportPublicKeyRequest { + /** + *

The content of the public key to be imported.

+ * @public + */ + publicKeyMaterial: string | undefined; + + /** + *

Name of the public key to be imported.

+ * @public + */ + name?: string; + + /** + *

Tags attached to the resource. Array of maps, each of the form string:string + * (key:value). See Tagging AWS + * Resources for details, including restrictions that apply to tags and "Tag naming + * limits and requirements"; Amazon IVS has no constraints on tags beyond what is documented + * there.

+ * @public + */ + tags?: Record; +} + +/** + * @public + */ +export interface ImportPublicKeyResponse { + /** + *

The public key that was imported.

+ * @public + */ + publicKey?: PublicKey; +} + /** * @public */ @@ -1979,7 +2120,7 @@ export interface ParticipantSummary { published?: boolean; /** - *

Participant’s recording state.

+ *

The participant’s recording state.

* @public */ recordingState?: ParticipantRecordingState; @@ -2003,6 +2144,68 @@ export interface ListParticipantsResponse { nextToken?: string; } +/** + * @public + */ +export interface ListPublicKeysRequest { + /** + *

The first public key to retrieve. This is used for pagination; see the nextToken response field.

+ * @public + */ + nextToken?: string; + + /** + *

Maximum number of results to return. Default: 50.

+ * @public + */ + maxResults?: number; +} + +/** + *

Summary information about a public key.

+ * @public + */ +export interface PublicKeySummary { + /** + *

Public key ARN.

+ * @public + */ + arn?: string; + + /** + *

Public key name.

+ * @public + */ + name?: string; + + /** + *

Tags attached to the resource. Array of maps, each of the form string:string + * (key:value). See Tagging AWS + * Resources for details, including restrictions that apply to tags and "Tag naming + * limits and requirements"; Amazon IVS has no constraints on tags beyond what is documented + * there.

+ * @public + */ + tags?: Record; +} + +/** + * @public + */ +export interface ListPublicKeysResponse { + /** + *

List of the matching public keys (summary information only).

+ * @public + */ + publicKeys: PublicKeySummary[] | undefined; + + /** + *

If there are more public keys than maxResults, use nextToken in the request to get the next set.

+ * @public + */ + nextToken?: string; +} + /** * @public */ @@ -2369,8 +2572,7 @@ export interface UpdateStageRequest { name?: string; /** - *

Auto-participant-recording configuration object to attach to the stage. - * Auto-participant-recording configuration cannot be updated while recording is active.

+ *

Configuration object for individual participant recording, to attach to the stage. Note that this cannot be updated while recording is active.

* @public */ autoParticipantRecordingConfiguration?: AutoParticipantRecordingConfiguration; diff --git a/clients/client-ivs-realtime/src/pagination/ListPublicKeysPaginator.ts b/clients/client-ivs-realtime/src/pagination/ListPublicKeysPaginator.ts new file mode 100644 index 000000000000..976e82abfda3 --- /dev/null +++ b/clients/client-ivs-realtime/src/pagination/ListPublicKeysPaginator.ts @@ -0,0 +1,24 @@ +// smithy-typescript generated code +import { createPaginator } from "@smithy/core"; +import { Paginator } from "@smithy/types"; + +import { + ListPublicKeysCommand, + ListPublicKeysCommandInput, + ListPublicKeysCommandOutput, +} from "../commands/ListPublicKeysCommand"; +import { IVSRealTimeClient } from "../IVSRealTimeClient"; +import { IVSRealTimePaginationConfiguration } from "./Interfaces"; + +/** + * @public + */ +export const paginateListPublicKeys: ( + config: IVSRealTimePaginationConfiguration, + input: ListPublicKeysCommandInput, + ...rest: any[] +) => Paginator = createPaginator< + IVSRealTimePaginationConfiguration, + ListPublicKeysCommandInput, + ListPublicKeysCommandOutput +>(IVSRealTimeClient, ListPublicKeysCommand, "nextToken", "nextToken", "maxResults"); diff --git a/clients/client-ivs-realtime/src/pagination/index.ts b/clients/client-ivs-realtime/src/pagination/index.ts index e200e0bfb2e7..5490fbffea65 100644 --- a/clients/client-ivs-realtime/src/pagination/index.ts +++ b/clients/client-ivs-realtime/src/pagination/index.ts @@ -4,6 +4,7 @@ export * from "./ListCompositionsPaginator"; export * from "./ListEncoderConfigurationsPaginator"; export * from "./ListParticipantEventsPaginator"; export * from "./ListParticipantsPaginator"; +export * from "./ListPublicKeysPaginator"; export * from "./ListStageSessionsPaginator"; export * from "./ListStagesPaginator"; export * from "./ListStorageConfigurationsPaginator"; diff --git a/clients/client-ivs-realtime/src/protocols/Aws_restJson1.ts b/clients/client-ivs-realtime/src/protocols/Aws_restJson1.ts index 13415c51738f..7268b3b36fd0 100644 --- a/clients/client-ivs-realtime/src/protocols/Aws_restJson1.ts +++ b/clients/client-ivs-realtime/src/protocols/Aws_restJson1.ts @@ -44,6 +44,7 @@ import { DeleteEncoderConfigurationCommandInput, DeleteEncoderConfigurationCommandOutput, } from "../commands/DeleteEncoderConfigurationCommand"; +import { DeletePublicKeyCommandInput, DeletePublicKeyCommandOutput } from "../commands/DeletePublicKeyCommand"; import { DeleteStageCommandInput, DeleteStageCommandOutput } from "../commands/DeleteStageCommand"; import { DeleteStorageConfigurationCommandInput, @@ -59,12 +60,14 @@ import { GetEncoderConfigurationCommandOutput, } from "../commands/GetEncoderConfigurationCommand"; import { GetParticipantCommandInput, GetParticipantCommandOutput } from "../commands/GetParticipantCommand"; +import { GetPublicKeyCommandInput, GetPublicKeyCommandOutput } from "../commands/GetPublicKeyCommand"; import { GetStageCommandInput, GetStageCommandOutput } from "../commands/GetStageCommand"; import { GetStageSessionCommandInput, GetStageSessionCommandOutput } from "../commands/GetStageSessionCommand"; import { GetStorageConfigurationCommandInput, GetStorageConfigurationCommandOutput, } from "../commands/GetStorageConfigurationCommand"; +import { ImportPublicKeyCommandInput, ImportPublicKeyCommandOutput } from "../commands/ImportPublicKeyCommand"; import { ListCompositionsCommandInput, ListCompositionsCommandOutput } from "../commands/ListCompositionsCommand"; import { ListEncoderConfigurationsCommandInput, @@ -75,6 +78,7 @@ import { ListParticipantEventsCommandOutput, } from "../commands/ListParticipantEventsCommand"; import { ListParticipantsCommandInput, ListParticipantsCommandOutput } from "../commands/ListParticipantsCommand"; +import { ListPublicKeysCommandInput, ListPublicKeysCommandOutput } from "../commands/ListPublicKeysCommand"; import { ListStagesCommandInput, ListStagesCommandOutput } from "../commands/ListStagesCommand"; import { ListStageSessionsCommandInput, ListStageSessionsCommandOutput } from "../commands/ListStageSessionsCommand"; import { @@ -246,6 +250,28 @@ export const se_DeleteEncoderConfigurationCommand = async ( return b.build(); }; +/** + * serializeAws_restJson1DeletePublicKeyCommand + */ +export const se_DeletePublicKeyCommand = async ( + input: DeletePublicKeyCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const b = rb(input, context); + const headers: any = { + "content-type": "application/json", + }; + b.bp("/DeletePublicKey"); + let body: any; + body = JSON.stringify( + take(input, { + arn: [], + }) + ); + b.m("POST").h(headers).b(body); + return b.build(); +}; + /** * serializeAws_restJson1DeleteStageCommand */ @@ -382,6 +408,28 @@ export const se_GetParticipantCommand = async ( return b.build(); }; +/** + * serializeAws_restJson1GetPublicKeyCommand + */ +export const se_GetPublicKeyCommand = async ( + input: GetPublicKeyCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const b = rb(input, context); + const headers: any = { + "content-type": "application/json", + }; + b.bp("/GetPublicKey"); + let body: any; + body = JSON.stringify( + take(input, { + arn: [], + }) + ); + b.m("POST").h(headers).b(body); + return b.build(); +}; + /** * serializeAws_restJson1GetStageCommand */ @@ -449,6 +497,30 @@ export const se_GetStorageConfigurationCommand = async ( return b.build(); }; +/** + * serializeAws_restJson1ImportPublicKeyCommand + */ +export const se_ImportPublicKeyCommand = async ( + input: ImportPublicKeyCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const b = rb(input, context); + const headers: any = { + "content-type": "application/json", + }; + b.bp("/ImportPublicKey"); + let body: any; + body = JSON.stringify( + take(input, { + name: [], + publicKeyMaterial: [], + tags: (_) => _json(_), + }) + ); + b.m("POST").h(headers).b(body); + return b.build(); +}; + /** * serializeAws_restJson1ListCompositionsCommand */ @@ -552,6 +624,29 @@ export const se_ListParticipantsCommand = async ( return b.build(); }; +/** + * serializeAws_restJson1ListPublicKeysCommand + */ +export const se_ListPublicKeysCommand = async ( + input: ListPublicKeysCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const b = rb(input, context); + const headers: any = { + "content-type": "application/json", + }; + b.bp("/ListPublicKeys"); + let body: any; + body = JSON.stringify( + take(input, { + maxResults: [], + nextToken: [], + }) + ); + b.m("POST").h(headers).b(body); + return b.build(); +}; + /** * serializeAws_restJson1ListStagesCommand */ @@ -857,6 +952,23 @@ export const de_DeleteEncoderConfigurationCommand = async ( return contents; }; +/** + * deserializeAws_restJson1DeletePublicKeyCommand + */ +export const de_DeletePublicKeyCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_CommandError(output, context); + } + const contents: any = map({ + $metadata: deserializeMetadata(output), + }); + await collectBody(output.body, context); + return contents; +}; + /** * deserializeAws_restJson1DeleteStageCommand */ @@ -971,6 +1083,27 @@ export const de_GetParticipantCommand = async ( return contents; }; +/** + * deserializeAws_restJson1GetPublicKeyCommand + */ +export const de_GetPublicKeyCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_CommandError(output, context); + } + const contents: any = map({ + $metadata: deserializeMetadata(output), + }); + const data: Record = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body"); + const doc = take(data, { + publicKey: _json, + }); + Object.assign(contents, doc); + return contents; +}; + /** * deserializeAws_restJson1GetStageCommand */ @@ -1034,6 +1167,27 @@ export const de_GetStorageConfigurationCommand = async ( return contents; }; +/** + * deserializeAws_restJson1ImportPublicKeyCommand + */ +export const de_ImportPublicKeyCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_CommandError(output, context); + } + const contents: any = map({ + $metadata: deserializeMetadata(output), + }); + const data: Record = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body"); + const doc = take(data, { + publicKey: _json, + }); + Object.assign(contents, doc); + return contents; +}; + /** * deserializeAws_restJson1ListCompositionsCommand */ @@ -1122,6 +1276,28 @@ export const de_ListParticipantsCommand = async ( return contents; }; +/** + * deserializeAws_restJson1ListPublicKeysCommand + */ +export const de_ListPublicKeysCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_CommandError(output, context); + } + const contents: any = map({ + $metadata: deserializeMetadata(output), + }); + const data: Record = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body"); + const doc = take(data, { + nextToken: __expectString, + publicKeys: _json, + }); + Object.assign(contents, doc); + return contents; +}; + /** * deserializeAws_restJson1ListStagesCommand */ @@ -1755,6 +1931,12 @@ const de_ParticipantTokenList = (output: any, context: __SerdeContext): Particip // de_PipConfiguration omitted. +// de_PublicKey omitted. + +// de_PublicKeyList omitted. + +// de_PublicKeySummary omitted. + // de_RecordingConfiguration omitted. // de_S3DestinationConfiguration omitted. @@ -1765,6 +1947,8 @@ const de_ParticipantTokenList = (output: any, context: __SerdeContext): Particip // de_Stage omitted. +// de_StageEndpoints omitted. + /** * deserializeAws_restJson1StageSession */ diff --git a/codegen/sdk-codegen/aws-models/ivs-realtime.json b/codegen/sdk-codegen/aws-models/ivs-realtime.json index f2f4c619ff18..4250bde46675 100644 --- a/codegen/sdk-codegen/aws-models/ivs-realtime.json +++ b/codegen/sdk-codegen/aws-models/ivs-realtime.json @@ -36,6 +36,9 @@ { "target": "com.amazonaws.ivsrealtime#DeleteEncoderConfiguration" }, + { + "target": "com.amazonaws.ivsrealtime#DeletePublicKey" + }, { "target": "com.amazonaws.ivsrealtime#DeleteStage" }, @@ -54,6 +57,9 @@ { "target": "com.amazonaws.ivsrealtime#GetParticipant" }, + { + "target": "com.amazonaws.ivsrealtime#GetPublicKey" + }, { "target": "com.amazonaws.ivsrealtime#GetStage" }, @@ -63,6 +69,9 @@ { "target": "com.amazonaws.ivsrealtime#GetStorageConfiguration" }, + { + "target": "com.amazonaws.ivsrealtime#ImportPublicKey" + }, { "target": "com.amazonaws.ivsrealtime#ListCompositions" }, @@ -75,6 +84,9 @@ { "target": "com.amazonaws.ivsrealtime#ListParticipants" }, + { + "target": "com.amazonaws.ivsrealtime#ListPublicKeys" + }, { "target": "com.amazonaws.ivsrealtime#ListStages" }, @@ -134,7 +146,7 @@ "date" ] }, - "smithy.api#documentation": "

\n Introduction\n

\n

The Amazon Interactive Video Service (IVS) real-time API is REST compatible, using a standard HTTP \n\t API and an AWS EventBridge event stream for responses. JSON is used for both requests and responses, \n\t including errors.\n

\n

Terminology:

\n
    \n
  • \n

    A stage is a virtual space where participants can exchange video in real time.

    \n
  • \n
  • \n

    A participant token is a token that authenticates a participant when they join a stage.

    \n
  • \n
  • \n

    A participant object represents participants (people) in the stage and\n contains information about them. When a token is created, it includes a participant ID;\n when a participant uses that token to join a stage, the participant is associated with\n that participant ID. There is a 1:1 mapping between participant tokens and\n participants.

    \n
  • \n
  • \n

    Server-side composition: The composition process composites participants\n of a stage into a single video and forwards it to a set of outputs (e.g., IVS channels).\n Composition endpoints support this process.

    \n
  • \n
  • \n

    Server-side composition: A composition controls the look of the outputs,\n including how participants are positioned in the video.

    \n
  • \n
\n

\n Resources\n

\n

The following resources contain information about your IVS live stream (see Getting Started with Amazon IVS Real-Time Streaming):

\n
    \n
  • \n

    \n Stage — A stage is a virtual space where participants can exchange video in real time.

    \n
  • \n
\n

\n Tagging\n

\n

A tag is a metadata label that you assign to an AWS resource. A tag\n comprises a key and a value, both set by you. For\n example, you might set a tag as topic:nature to label a particular video\n category. See Tagging AWS Resources for more information, including restrictions that apply to\n tags and \"Tag naming limits and requirements\"; Amazon IVS stages has no service-specific\n constraints beyond what is documented there.

\n

Tags can help you identify and organize your AWS resources. For example, you can use the\n same tag for different resources to indicate that they are related. You can also use tags to\n manage access (see Access Tags).

\n

The Amazon IVS real-time API has these tag-related endpoints: TagResource, UntagResource, and\n ListTagsForResource. The following resource supports tagging: Stage.

\n

At most 50 tags can be applied to a resource.

\n

\n Stages Endpoints\n

\n
    \n
  • \n

    \n CreateParticipantToken — Creates an additional token for a specified stage. This can be done after stage creation or when tokens expire.

    \n
  • \n
  • \n

    \n CreateStage — Creates a new stage (and optionally participant tokens).

    \n
  • \n
  • \n

    \n DeleteStage — Shuts down and deletes the specified stage (disconnecting all participants).

    \n
  • \n
  • \n

    \n DisconnectParticipant — Disconnects a specified participant and revokes the participant permanently from a specified stage.

    \n
  • \n
  • \n

    \n GetParticipant — Gets information about the specified\n participant token.

    \n
  • \n
  • \n

    \n GetStage — Gets information for the specified stage.

    \n
  • \n
  • \n

    \n GetStageSession — Gets information for the specified stage\n session.

    \n
  • \n
  • \n

    \n ListParticipantEvents — Lists events for a specified\n participant that occurred during a specified stage session.

    \n
  • \n
  • \n

    \n ListParticipants — Lists all participants in a specified stage\n session.

    \n
  • \n
  • \n

    \n ListStages — Gets summary information about all stages in your account, in the AWS region where the API request is processed.

    \n
  • \n
  • \n

    \n ListStageSessions — Gets all sessions for a specified stage.

    \n
  • \n
  • \n

    \n UpdateStage — Updates a stage’s configuration.

    \n
  • \n
\n

\n Composition Endpoints\n

\n
    \n
  • \n

    \n GetComposition — Gets information about the specified\n Composition resource.

    \n
  • \n
  • \n

    \n ListCompositions — Gets summary information about all\n Compositions in your account, in the AWS region where the API request is processed.

    \n
  • \n
  • \n

    \n StartComposition — Starts a Composition from a stage based on\n the configuration provided in the request.

    \n
  • \n
  • \n

    \n StopComposition — Stops and deletes a Composition resource.\n Any broadcast from the Composition resource is stopped.

    \n
  • \n
\n

\n EncoderConfiguration Endpoints\n

\n
    \n
  • \n

    \n CreateEncoderConfiguration — Creates an EncoderConfiguration object.

    \n
  • \n
  • \n

    \n DeleteEncoderConfiguration — Deletes an EncoderConfiguration\n resource. Ensures that no Compositions are using this template; otherwise, returns an\n error.

    \n
  • \n
  • \n

    \n GetEncoderConfiguration — Gets information about the specified\n EncoderConfiguration resource.

    \n
  • \n
  • \n

    \n ListEncoderConfigurations — Gets summary information about all\n EncoderConfigurations in your account, in the AWS region where the API request is\n processed.

    \n
  • \n
\n

\n StorageConfiguration Endpoints\n

\n \n

\n Tags Endpoints\n

\n
    \n
  • \n

    \n ListTagsForResource — Gets information about AWS tags for the\n specified ARN.

    \n
  • \n
  • \n

    \n TagResource — Adds or updates tags for the AWS resource with\n the specified ARN.

    \n
  • \n
  • \n

    \n UntagResource — Removes tags from the resource with the\n specified ARN.

    \n
  • \n
", + "smithy.api#documentation": "

The Amazon Interactive Video Service (IVS) real-time API is REST compatible, using a standard HTTP \n\t API and an AWS EventBridge event stream for responses. JSON is used for both requests and responses, \n\t including errors.\n

\n

\n Key Concepts\n

\n
    \n
  • \n

    \n Stage — A virtual space where participants can exchange video in real time.

    \n
  • \n
  • \n

    \n Participant token — A token that authenticates a participant when they join a stage.

    \n
  • \n
  • \n

    \n Participant object — Represents participants (people) in the stage and\n contains information about them. When a token is created, it includes a participant ID;\n when a participant uses that token to join a stage, the participant is associated with\n that participant ID. There is a 1:1 mapping between participant tokens and\n participants.

    \n
  • \n
\n

For server-side composition:

\n
    \n
  • \n

    \n Composition process — Composites participants\n of a stage into a single video and forwards it to a set of outputs (e.g., IVS channels).\n Composition endpoints support this process.

    \n
  • \n
  • \n

    \n Composition — Controls the look of the outputs,\n including how participants are positioned in the video.

    \n
  • \n
\n

For more information about your IVS live stream, also see Getting Started with Amazon IVS Real-Time Streaming.

\n

\n Tagging\n

\n

A tag is a metadata label that you assign to an AWS resource. A tag\n comprises a key and a value, both set by you. For\n example, you might set a tag as topic:nature to label a particular video\n category. See Tagging AWS Resources for more information, including restrictions that apply to\n tags and \"Tag naming limits and requirements\"; Amazon IVS stages has no service-specific\n constraints beyond what is documented there.

\n

Tags can help you identify and organize your AWS resources. For example, you can use the\n same tag for different resources to indicate that they are related. You can also use tags to\n manage access (see Access Tags).

\n

The Amazon IVS real-time API has these tag-related endpoints: TagResource, UntagResource, and\n ListTagsForResource. The following resource supports tagging: Stage.

\n

At most 50 tags can be applied to a resource.

", "smithy.api#title": "Amazon Interactive Video Service RealTime", "smithy.rules#endpointRuleSet": { "version": "1.0", @@ -818,7 +830,7 @@ "storageConfigurationArn": { "target": "com.amazonaws.ivsrealtime#AutoParticipantRecordingStorageConfigurationArn", "traits": { - "smithy.api#documentation": "

ARN of the StorageConfiguration resource to use for auto participant recording. Default: \"\" (empty string, no storage configuration is specified). Individual participant recording cannot be started unless a storage configuration is specified, when a Stage is created or updated.

", + "smithy.api#documentation": "

ARN of the StorageConfiguration resource to use for individual participant recording. Default: \"\" (empty string, no storage configuration is specified). Individual participant recording cannot be started unless a storage configuration is specified, when a Stage is created or updated.

", "smithy.api#required": {} } }, @@ -830,7 +842,7 @@ } }, "traits": { - "smithy.api#documentation": "

Object specifying an auto-participant-recording configuration.

" + "smithy.api#documentation": "

Object specifying a configuration for individual participant recording.

" } }, "com.amazonaws.ivsrealtime#AutoParticipantRecordingStorageConfigurationArn": { @@ -1280,7 +1292,7 @@ "autoParticipantRecordingConfiguration": { "target": "com.amazonaws.ivsrealtime#AutoParticipantRecordingConfiguration", "traits": { - "smithy.api#documentation": "

Auto participant recording configuration object attached to the stage.

" + "smithy.api#documentation": "

Configuration object for individual participant recording, to attach to the new stage.

" } } } @@ -1440,6 +1452,61 @@ "smithy.api#output": {} } }, + "com.amazonaws.ivsrealtime#DeletePublicKey": { + "type": "operation", + "input": { + "target": "com.amazonaws.ivsrealtime#DeletePublicKeyRequest" + }, + "output": { + "target": "com.amazonaws.ivsrealtime#DeletePublicKeyResponse" + }, + "errors": [ + { + "target": "com.amazonaws.ivsrealtime#AccessDeniedException" + }, + { + "target": "com.amazonaws.ivsrealtime#ConflictException" + }, + { + "target": "com.amazonaws.ivsrealtime#PendingVerification" + }, + { + "target": "com.amazonaws.ivsrealtime#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.ivsrealtime#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Deletes the specified public key used to sign stage participant tokens. \n\t This invalidates future participant tokens generated using the key pair’s private key.\n

", + "smithy.api#http": { + "method": "POST", + "uri": "/DeletePublicKey" + } + } + }, + "com.amazonaws.ivsrealtime#DeletePublicKeyRequest": { + "type": "structure", + "members": { + "arn": { + "target": "com.amazonaws.ivsrealtime#PublicKeyArn", + "traits": { + "smithy.api#documentation": "

ARN of the public key to be deleted.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.ivsrealtime#DeletePublicKeyResponse": { + "type": "structure", + "members": {}, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.ivsrealtime#DeleteStage": { "type": "operation", "input": { @@ -2232,6 +2299,63 @@ "smithy.api#output": {} } }, + "com.amazonaws.ivsrealtime#GetPublicKey": { + "type": "operation", + "input": { + "target": "com.amazonaws.ivsrealtime#GetPublicKeyRequest" + }, + "output": { + "target": "com.amazonaws.ivsrealtime#GetPublicKeyResponse" + }, + "errors": [ + { + "target": "com.amazonaws.ivsrealtime#AccessDeniedException" + }, + { + "target": "com.amazonaws.ivsrealtime#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.ivsrealtime#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Gets information for the specified public key.

", + "smithy.api#http": { + "method": "POST", + "uri": "/GetPublicKey" + }, + "smithy.api#readonly": {} + } + }, + "com.amazonaws.ivsrealtime#GetPublicKeyRequest": { + "type": "structure", + "members": { + "arn": { + "target": "com.amazonaws.ivsrealtime#PublicKeyArn", + "traits": { + "smithy.api#documentation": "

ARN of the public key for which the information is to be retrieved.

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.ivsrealtime#GetPublicKeyResponse": { + "type": "structure", + "members": { + "publicKey": { + "target": "com.amazonaws.ivsrealtime#PublicKey", + "traits": { + "smithy.api#documentation": "

The public key that is returned.

" + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.ivsrealtime#GetStage": { "type": "operation", "input": { @@ -2419,7 +2543,7 @@ "featuredParticipantAttribute": { "target": "com.amazonaws.ivsrealtime#AttributeKey", "traits": { - "smithy.api#documentation": "

This attribute name identifies the featured slot. A participant with this attribute set\n to \"true\" (as a string value) in ParticipantTokenConfiguration is placed in the featured\n slot.

" + "smithy.api#documentation": "

This attribute name identifies the featured slot. A participant with this attribute set\n to \"true\" (as a string value) in ParticipantTokenConfiguration is placed in the featured\n slot. Default: \"\" (no featured participant).

" } }, "omitStoppedVideo": { @@ -2432,13 +2556,13 @@ "videoAspectRatio": { "target": "com.amazonaws.ivsrealtime#VideoAspectRatio", "traits": { - "smithy.api#documentation": "

Sets the non-featured participant display mode. Default: VIDEO.

" + "smithy.api#documentation": "

Sets the non-featured participant display mode, to control the aspect ratio of video tiles. VIDEO is 16:9, SQUARE is 1:1, and PORTRAIT is 3:4. Default: VIDEO.

" } }, "videoFillMode": { "target": "com.amazonaws.ivsrealtime#VideoFillMode", "traits": { - "smithy.api#documentation": "

Defines how video fits within the participant tile. When not set, \n\t videoFillMode defaults to COVER fill mode for participants in the grid \n\t and to CONTAIN fill mode for featured participants.

" + "smithy.api#documentation": "

Defines how video content fits within the participant tile: FILL (stretched), COVER (cropped),\n or CONTAIN (letterboxed). When not set, \n videoFillMode defaults to COVER fill mode for participants in the grid \n and to CONTAIN fill mode for featured participants.

" } }, "gridGap": { @@ -2471,6 +2595,81 @@ } } }, + "com.amazonaws.ivsrealtime#ImportPublicKey": { + "type": "operation", + "input": { + "target": "com.amazonaws.ivsrealtime#ImportPublicKeyRequest" + }, + "output": { + "target": "com.amazonaws.ivsrealtime#ImportPublicKeyResponse" + }, + "errors": [ + { + "target": "com.amazonaws.ivsrealtime#AccessDeniedException" + }, + { + "target": "com.amazonaws.ivsrealtime#ConflictException" + }, + { + "target": "com.amazonaws.ivsrealtime#PendingVerification" + }, + { + "target": "com.amazonaws.ivsrealtime#ServiceQuotaExceededException" + }, + { + "target": "com.amazonaws.ivsrealtime#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Import a public key to be used for signing stage participant tokens.

", + "smithy.api#http": { + "method": "POST", + "uri": "/ImportPublicKey" + }, + "smithy.api#readonly": {} + } + }, + "com.amazonaws.ivsrealtime#ImportPublicKeyRequest": { + "type": "structure", + "members": { + "publicKeyMaterial": { + "target": "com.amazonaws.ivsrealtime#PublicKeyMaterial", + "traits": { + "smithy.api#documentation": "

The content of the public key to be imported.

", + "smithy.api#required": {} + } + }, + "name": { + "target": "com.amazonaws.ivsrealtime#PublicKeyName", + "traits": { + "smithy.api#documentation": "

Name of the public key to be imported.

" + } + }, + "tags": { + "target": "com.amazonaws.ivsrealtime#Tags", + "traits": { + "smithy.api#documentation": "

Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Tagging AWS\n Resources for details, including restrictions that apply to tags and \"Tag naming\n limits and requirements\"; Amazon IVS has no constraints on tags beyond what is documented\n there.

" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.ivsrealtime#ImportPublicKeyResponse": { + "type": "structure", + "members": { + "publicKey": { + "target": "com.amazonaws.ivsrealtime#PublicKey", + "traits": { + "smithy.api#documentation": "

The public key that was imported.

" + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.ivsrealtime#InternalServerException": { "type": "structure", "members": { @@ -2881,6 +3080,78 @@ "smithy.api#output": {} } }, + "com.amazonaws.ivsrealtime#ListPublicKeys": { + "type": "operation", + "input": { + "target": "com.amazonaws.ivsrealtime#ListPublicKeysRequest" + }, + "output": { + "target": "com.amazonaws.ivsrealtime#ListPublicKeysResponse" + }, + "errors": [ + { + "target": "com.amazonaws.ivsrealtime#AccessDeniedException" + }, + { + "target": "com.amazonaws.ivsrealtime#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

Gets summary information about all public keys in your account, in the AWS region where the API request is processed.

", + "smithy.api#http": { + "method": "POST", + "uri": "/ListPublicKeys" + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken", + "pageSize": "maxResults", + "items": "publicKeys" + }, + "smithy.api#readonly": {} + } + }, + "com.amazonaws.ivsrealtime#ListPublicKeysRequest": { + "type": "structure", + "members": { + "nextToken": { + "target": "com.amazonaws.ivsrealtime#PaginationToken", + "traits": { + "smithy.api#documentation": "

The first public key to retrieve. This is used for pagination; see the nextToken response field.

" + } + }, + "maxResults": { + "target": "com.amazonaws.ivsrealtime#MaxPublicKeyResults", + "traits": { + "smithy.api#documentation": "

Maximum number of results to return. Default: 50.

" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.ivsrealtime#ListPublicKeysResponse": { + "type": "structure", + "members": { + "publicKeys": { + "target": "com.amazonaws.ivsrealtime#PublicKeyList", + "traits": { + "smithy.api#documentation": "

List of the matching public keys (summary information only).

", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.ivsrealtime#PaginationToken", + "traits": { + "smithy.api#documentation": "

If there are more public keys than maxResults, use nextToken in the request to get the next set.

" + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.ivsrealtime#ListStageSessions": { "type": "operation", "input": { @@ -3196,6 +3467,15 @@ } } }, + "com.amazonaws.ivsrealtime#MaxPublicKeyResults": { + "type": "integer", + "traits": { + "smithy.api#range": { + "min": 1, + "max": 100 + } + } + }, "com.amazonaws.ivsrealtime#MaxStageResults": { "type": "integer", "traits": { @@ -3318,19 +3598,19 @@ "recordingS3BucketName": { "target": "com.amazonaws.ivsrealtime#ParticipantRecordingS3BucketName", "traits": { - "smithy.api#documentation": "

Name of the S3 bucket to where the participant is being recorded, if individual participant recording is enabled, or \"\" (empty string), if recording is not enabled.

" + "smithy.api#documentation": "

Name of the S3 bucket to where the participant is being recorded, if individual participant recording is enabled, or \"\" (empty string), if recording is not enabled.

" } }, "recordingS3Prefix": { "target": "com.amazonaws.ivsrealtime#ParticipantRecordingS3Prefix", "traits": { - "smithy.api#documentation": "

S3 prefix of the S3 bucket to where the participant is being recorded, if individual participant recording is enabled, or \"\" (empty string), if recording is not enabled.

" + "smithy.api#documentation": "

S3 prefix of the S3 bucket where the participant is being recorded, if individual participant recording is enabled, or \"\" (empty string), if recording is not enabled.

" } }, "recordingState": { "target": "com.amazonaws.ivsrealtime#ParticipantRecordingState", "traits": { - "smithy.api#documentation": "

Participant’s recording state.

" + "smithy.api#documentation": "

The participant’s recording state.

" } } }, @@ -3530,7 +3810,7 @@ "recordingState": { "target": "com.amazonaws.ivsrealtime#ParticipantRecordingState", "traits": { - "smithy.api#documentation": "

Participant’s recording state.

" + "smithy.api#documentation": "

The participant’s recording state.

" } } }, @@ -3746,7 +4026,7 @@ "featuredParticipantAttribute": { "target": "com.amazonaws.ivsrealtime#AttributeKey", "traits": { - "smithy.api#documentation": "

This attribute name identifies the featured slot. A participant with this attribute set\n to \"true\" (as a string value) in ParticipantTokenConfiguration is placed in the featured\n slot.

" + "smithy.api#documentation": "

This attribute name identifies the featured slot. A participant with this attribute set\n to \"true\" (as a string value) in ParticipantTokenConfiguration is placed in the featured\n slot. Default: \"\" (no featured participant).

" } }, "omitStoppedVideo": { @@ -3759,7 +4039,7 @@ "videoFillMode": { "target": "com.amazonaws.ivsrealtime#VideoFillMode", "traits": { - "smithy.api#documentation": "

Defines how video fits within the participant tile. Default: COVER.\n

" + "smithy.api#documentation": "

Defines how video content fits within the participant tile: FILL (stretched), \n\t COVER (cropped), or CONTAIN (letterboxed). Default: COVER.

" } }, "gridGap": { @@ -3772,13 +4052,13 @@ "pipParticipantAttribute": { "target": "com.amazonaws.ivsrealtime#AttributeKey", "traits": { - "smithy.api#documentation": "

Identifies the PiP slot. A participant with this attribute set\n to \"true\" (as a string value) in ParticipantTokenConfiguration \n\t\t is placed in the PiP slot.

" + "smithy.api#documentation": "

Specifies the participant for the PiP window. A participant with this attribute set\n to \"true\" (as a string value) in ParticipantTokenConfiguration \n\t is placed in the PiP slot. Default: \"\" (no PiP participant).

" } }, "pipBehavior": { "target": "com.amazonaws.ivsrealtime#PipBehavior", "traits": { - "smithy.api#documentation": "

Defines PiP behavior when all participants have left. Default: STATIC.

" + "smithy.api#documentation": "

Defines PiP behavior when all participants have left: STATIC (maintains original position/size) or DYNAMIC (expands to full composition). Default: STATIC.

" } }, "pipOffset": { @@ -3865,6 +4145,105 @@ } } }, + "com.amazonaws.ivsrealtime#PublicKey": { + "type": "structure", + "members": { + "arn": { + "target": "com.amazonaws.ivsrealtime#PublicKeyArn", + "traits": { + "smithy.api#documentation": "

Public key ARN.

" + } + }, + "name": { + "target": "com.amazonaws.ivsrealtime#PublicKeyName", + "traits": { + "smithy.api#documentation": "

Public key name.

" + } + }, + "publicKeyMaterial": { + "target": "com.amazonaws.ivsrealtime#PublicKeyMaterial", + "traits": { + "smithy.api#documentation": "

Public key material.

" + } + }, + "fingerprint": { + "target": "com.amazonaws.ivsrealtime#PublicKeyFingerprint", + "traits": { + "smithy.api#documentation": "

The public key fingerprint, a short string used to identify or verify the full public key.

" + } + }, + "tags": { + "target": "com.amazonaws.ivsrealtime#Tags", + "traits": { + "smithy.api#documentation": "

Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Tagging AWS\n Resources for details, including restrictions that apply to tags and \"Tag naming\n limits and requirements\"; Amazon IVS has no constraints on tags beyond what is documented\n there.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Object specifying a public key used to sign stage participant tokens.

" + } + }, + "com.amazonaws.ivsrealtime#PublicKeyArn": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 128 + }, + "smithy.api#pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:public-key/[a-zA-Z0-9-]+$" + } + }, + "com.amazonaws.ivsrealtime#PublicKeyFingerprint": { + "type": "string" + }, + "com.amazonaws.ivsrealtime#PublicKeyList": { + "type": "list", + "member": { + "target": "com.amazonaws.ivsrealtime#PublicKeySummary" + } + }, + "com.amazonaws.ivsrealtime#PublicKeyMaterial": { + "type": "string", + "traits": { + "smithy.api#pattern": "-----BEGIN PUBLIC KEY-----\\r?\\n([a-zA-Z0-9+/=\\r\\n]+)\\r?\\n-----END PUBLIC KEY-----(\\r?\\n)?" + } + }, + "com.amazonaws.ivsrealtime#PublicKeyName": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 128 + }, + "smithy.api#pattern": "^[a-zA-Z0-9-_]*$" + } + }, + "com.amazonaws.ivsrealtime#PublicKeySummary": { + "type": "structure", + "members": { + "arn": { + "target": "com.amazonaws.ivsrealtime#PublicKeyArn", + "traits": { + "smithy.api#documentation": "

Public key ARN.

" + } + }, + "name": { + "target": "com.amazonaws.ivsrealtime#PublicKeyName", + "traits": { + "smithy.api#documentation": "

Public key name.

" + } + }, + "tags": { + "target": "com.amazonaws.ivsrealtime#Tags", + "traits": { + "smithy.api#documentation": "

Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Tagging AWS\n Resources for details, including restrictions that apply to tags and \"Tag naming\n limits and requirements\"; Amazon IVS has no constraints on tags beyond what is documented\n there.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Summary information about a public key.

" + } + }, "com.amazonaws.ivsrealtime#Published": { "type": "boolean", "traits": { @@ -4037,7 +4416,13 @@ "autoParticipantRecordingConfiguration": { "target": "com.amazonaws.ivsrealtime#AutoParticipantRecordingConfiguration", "traits": { - "smithy.api#documentation": "

Auto-participant-recording configuration object attached to the stage.

" + "smithy.api#documentation": "

Configuration object for individual participant recording, attached to the stage.

" + } + }, + "endpoints": { + "target": "com.amazonaws.ivsrealtime#StageEndpoints", + "traits": { + "smithy.api#documentation": "

Summary information about various endpoints for a stage.

" } } }, @@ -4055,6 +4440,35 @@ "smithy.api#pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:stage/[a-zA-Z0-9-]+$" } }, + "com.amazonaws.ivsrealtime#StageEndpoint": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 2048 + } + } + }, + "com.amazonaws.ivsrealtime#StageEndpoints": { + "type": "structure", + "members": { + "events": { + "target": "com.amazonaws.ivsrealtime#StageEndpoint", + "traits": { + "smithy.api#documentation": "

Events endpoint.

" + } + }, + "whip": { + "target": "com.amazonaws.ivsrealtime#StageEndpoint", + "traits": { + "smithy.api#documentation": "

WHIP endpoint.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Summary information about various endpoints for a stage.

" + } + }, "com.amazonaws.ivsrealtime#StageName": { "type": "string", "traits": { @@ -4628,7 +5042,7 @@ "autoParticipantRecordingConfiguration": { "target": "com.amazonaws.ivsrealtime#AutoParticipantRecordingConfiguration", "traits": { - "smithy.api#documentation": "

Auto-participant-recording configuration object to attach to the stage.\n Auto-participant-recording configuration cannot be updated while recording is active.

" + "smithy.api#documentation": "

Configuration object for individual participant recording, to attach to the stage. Note that this cannot be updated while recording is active.

" } } }