diff --git a/clients/client-ivs-realtime/README.md b/clients/client-ivs-realtime/README.md index 12ac5a5a136e..7db3745e0c27 100644 --- a/clients/client-ivs-realtime/README.md +++ b/clients/client-ivs-realtime/README.md @@ -37,7 +37,7 @@ participants.

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 operations support this process.

  • @@ -52,13 +52,13 @@ including how participants are positioned in the video.

    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.

    +category. See Best practices and strategies +in Tagging AWS Resources and Tag Editor for details, 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 real-time API has these tag-related endpoints: TagResource, UntagResource, and +

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

    At most 50 tags can be applied to a resource.

    @@ -264,6 +264,14 @@ CreateEncoderConfiguration [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/ivs-realtime/command/CreateEncoderConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/CreateEncoderConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/CreateEncoderConfigurationCommandOutput/) + +
    + +CreateIngestConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/ivs-realtime/command/CreateIngestConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/CreateIngestConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/CreateIngestConfigurationCommandOutput/) +
    @@ -296,6 +304,14 @@ DeleteEncoderConfiguration [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/ivs-realtime/command/DeleteEncoderConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/DeleteEncoderConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/DeleteEncoderConfigurationCommandOutput/) +
    +
    + +DeleteIngestConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/ivs-realtime/command/DeleteIngestConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/DeleteIngestConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/DeleteIngestConfigurationCommandOutput/) +
    @@ -344,6 +360,14 @@ GetEncoderConfiguration [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/ivs-realtime/command/GetEncoderConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/GetEncoderConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/GetEncoderConfigurationCommandOutput/) +
    +
    + +GetIngestConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/ivs-realtime/command/GetIngestConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/GetIngestConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/GetIngestConfigurationCommandOutput/) +
    @@ -408,6 +432,14 @@ ListEncoderConfigurations [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/ivs-realtime/command/ListEncoderConfigurationsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/ListEncoderConfigurationsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/ListEncoderConfigurationsCommandOutput/) +
    +
    + +ListIngestConfigurations + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/ivs-realtime/command/ListIngestConfigurationsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/ListIngestConfigurationsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/ListIngestConfigurationsCommandOutput/) +
    @@ -496,6 +528,14 @@ UntagResource [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/ivs-realtime/command/UntagResourceCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/UntagResourceCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/UntagResourceCommandOutput/) +
    +
    + +UpdateIngestConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/ivs-realtime/command/UpdateIngestConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/UpdateIngestConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ivs-realtime/Interface/UpdateIngestConfigurationCommandOutput/) +
    diff --git a/clients/client-ivs-realtime/src/IVSRealTime.ts b/clients/client-ivs-realtime/src/IVSRealTime.ts index a59175462d88..de5d48bdcb93 100644 --- a/clients/client-ivs-realtime/src/IVSRealTime.ts +++ b/clients/client-ivs-realtime/src/IVSRealTime.ts @@ -7,6 +7,11 @@ import { CreateEncoderConfigurationCommandInput, CreateEncoderConfigurationCommandOutput, } from "./commands/CreateEncoderConfigurationCommand"; +import { + CreateIngestConfigurationCommand, + CreateIngestConfigurationCommandInput, + CreateIngestConfigurationCommandOutput, +} from "./commands/CreateIngestConfigurationCommand"; import { CreateParticipantTokenCommand, CreateParticipantTokenCommandInput, @@ -23,6 +28,11 @@ import { DeleteEncoderConfigurationCommandInput, DeleteEncoderConfigurationCommandOutput, } from "./commands/DeleteEncoderConfigurationCommand"; +import { + DeleteIngestConfigurationCommand, + DeleteIngestConfigurationCommandInput, + DeleteIngestConfigurationCommandOutput, +} from "./commands/DeleteIngestConfigurationCommand"; import { DeletePublicKeyCommand, DeletePublicKeyCommandInput, @@ -49,6 +59,11 @@ import { GetEncoderConfigurationCommandInput, GetEncoderConfigurationCommandOutput, } from "./commands/GetEncoderConfigurationCommand"; +import { + GetIngestConfigurationCommand, + GetIngestConfigurationCommandInput, + GetIngestConfigurationCommandOutput, +} from "./commands/GetIngestConfigurationCommand"; import { GetParticipantCommand, GetParticipantCommandInput, @@ -85,6 +100,11 @@ import { ListEncoderConfigurationsCommandInput, ListEncoderConfigurationsCommandOutput, } from "./commands/ListEncoderConfigurationsCommand"; +import { + ListIngestConfigurationsCommand, + ListIngestConfigurationsCommandInput, + ListIngestConfigurationsCommandOutput, +} from "./commands/ListIngestConfigurationsCommand"; import { ListParticipantEventsCommand, ListParticipantEventsCommandInput, @@ -132,21 +152,29 @@ import { UntagResourceCommandInput, UntagResourceCommandOutput, } from "./commands/UntagResourceCommand"; +import { + UpdateIngestConfigurationCommand, + UpdateIngestConfigurationCommandInput, + UpdateIngestConfigurationCommandOutput, +} from "./commands/UpdateIngestConfigurationCommand"; import { UpdateStageCommand, UpdateStageCommandInput, UpdateStageCommandOutput } from "./commands/UpdateStageCommand"; import { IVSRealTimeClient, IVSRealTimeClientConfig } from "./IVSRealTimeClient"; const commands = { CreateEncoderConfigurationCommand, + CreateIngestConfigurationCommand, CreateParticipantTokenCommand, CreateStageCommand, CreateStorageConfigurationCommand, DeleteEncoderConfigurationCommand, + DeleteIngestConfigurationCommand, DeletePublicKeyCommand, DeleteStageCommand, DeleteStorageConfigurationCommand, DisconnectParticipantCommand, GetCompositionCommand, GetEncoderConfigurationCommand, + GetIngestConfigurationCommand, GetParticipantCommand, GetPublicKeyCommand, GetStageCommand, @@ -155,6 +183,7 @@ const commands = { ImportPublicKeyCommand, ListCompositionsCommand, ListEncoderConfigurationsCommand, + ListIngestConfigurationsCommand, ListParticipantEventsCommand, ListParticipantsCommand, ListPublicKeysCommand, @@ -166,6 +195,7 @@ const commands = { StopCompositionCommand, TagResourceCommand, UntagResourceCommand, + UpdateIngestConfigurationCommand, UpdateStageCommand, }; @@ -188,6 +218,23 @@ export interface IVSRealTime { cb: (err: any, data?: CreateEncoderConfigurationCommandOutput) => void ): void; + /** + * @see {@link CreateIngestConfigurationCommand} + */ + createIngestConfiguration( + args: CreateIngestConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + createIngestConfiguration( + args: CreateIngestConfigurationCommandInput, + cb: (err: any, data?: CreateIngestConfigurationCommandOutput) => void + ): void; + createIngestConfiguration( + args: CreateIngestConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: CreateIngestConfigurationCommandOutput) => void + ): void; + /** * @see {@link CreateParticipantTokenCommand} */ @@ -251,6 +298,23 @@ export interface IVSRealTime { cb: (err: any, data?: DeleteEncoderConfigurationCommandOutput) => void ): void; + /** + * @see {@link DeleteIngestConfigurationCommand} + */ + deleteIngestConfiguration( + args: DeleteIngestConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteIngestConfiguration( + args: DeleteIngestConfigurationCommandInput, + cb: (err: any, data?: DeleteIngestConfigurationCommandOutput) => void + ): void; + deleteIngestConfiguration( + args: DeleteIngestConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteIngestConfigurationCommandOutput) => void + ): void; + /** * @see {@link DeletePublicKeyCommand} */ @@ -341,6 +405,23 @@ export interface IVSRealTime { cb: (err: any, data?: GetEncoderConfigurationCommandOutput) => void ): void; + /** + * @see {@link GetIngestConfigurationCommand} + */ + getIngestConfiguration( + args: GetIngestConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getIngestConfiguration( + args: GetIngestConfigurationCommandInput, + cb: (err: any, data?: GetIngestConfigurationCommandOutput) => void + ): void; + getIngestConfiguration( + args: GetIngestConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetIngestConfigurationCommandOutput) => void + ): void; + /** * @see {@link GetParticipantCommand} */ @@ -458,6 +539,24 @@ export interface IVSRealTime { cb: (err: any, data?: ListEncoderConfigurationsCommandOutput) => void ): void; + /** + * @see {@link ListIngestConfigurationsCommand} + */ + listIngestConfigurations(): Promise; + listIngestConfigurations( + args: ListIngestConfigurationsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listIngestConfigurations( + args: ListIngestConfigurationsCommandInput, + cb: (err: any, data?: ListIngestConfigurationsCommandOutput) => void + ): void; + listIngestConfigurations( + args: ListIngestConfigurationsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListIngestConfigurationsCommandOutput) => void + ): void; + /** * @see {@link ListParticipantEventsCommand} */ @@ -624,6 +723,23 @@ export interface IVSRealTime { cb: (err: any, data?: UntagResourceCommandOutput) => void ): void; + /** + * @see {@link UpdateIngestConfigurationCommand} + */ + updateIngestConfiguration( + args: UpdateIngestConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + updateIngestConfiguration( + args: UpdateIngestConfigurationCommandInput, + cb: (err: any, data?: UpdateIngestConfigurationCommandOutput) => void + ): void; + updateIngestConfiguration( + args: UpdateIngestConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: UpdateIngestConfigurationCommandOutput) => void + ): void; + /** * @see {@link UpdateStageCommand} */ @@ -668,7 +784,7 @@ export interface IVSRealTime { *

    * 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 operations support this process.

    *
  • *
  • *

    @@ -683,13 +799,13 @@ export interface IVSRealTime { *

    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.

    + * category. See Best practices and strategies + * in Tagging AWS Resources and Tag Editor for details, 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 real-time API has these tag-related endpoints: TagResource, UntagResource, and + *

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

    *

    At most 50 tags can be applied to a resource.

    * @public diff --git a/clients/client-ivs-realtime/src/IVSRealTimeClient.ts b/clients/client-ivs-realtime/src/IVSRealTimeClient.ts index 8d8a9fda1062..d314333bb3db 100644 --- a/clients/client-ivs-realtime/src/IVSRealTimeClient.ts +++ b/clients/client-ivs-realtime/src/IVSRealTimeClient.ts @@ -57,6 +57,10 @@ import { CreateEncoderConfigurationCommandInput, CreateEncoderConfigurationCommandOutput, } from "./commands/CreateEncoderConfigurationCommand"; +import { + CreateIngestConfigurationCommandInput, + CreateIngestConfigurationCommandOutput, +} from "./commands/CreateIngestConfigurationCommand"; import { CreateParticipantTokenCommandInput, CreateParticipantTokenCommandOutput, @@ -70,6 +74,10 @@ import { DeleteEncoderConfigurationCommandInput, DeleteEncoderConfigurationCommandOutput, } from "./commands/DeleteEncoderConfigurationCommand"; +import { + DeleteIngestConfigurationCommandInput, + DeleteIngestConfigurationCommandOutput, +} from "./commands/DeleteIngestConfigurationCommand"; import { DeletePublicKeyCommandInput, DeletePublicKeyCommandOutput } from "./commands/DeletePublicKeyCommand"; import { DeleteStageCommandInput, DeleteStageCommandOutput } from "./commands/DeleteStageCommand"; import { @@ -85,6 +93,10 @@ import { GetEncoderConfigurationCommandInput, GetEncoderConfigurationCommandOutput, } from "./commands/GetEncoderConfigurationCommand"; +import { + GetIngestConfigurationCommandInput, + GetIngestConfigurationCommandOutput, +} from "./commands/GetIngestConfigurationCommand"; import { GetParticipantCommandInput, GetParticipantCommandOutput } from "./commands/GetParticipantCommand"; import { GetPublicKeyCommandInput, GetPublicKeyCommandOutput } from "./commands/GetPublicKeyCommand"; import { GetStageCommandInput, GetStageCommandOutput } from "./commands/GetStageCommand"; @@ -99,6 +111,10 @@ import { ListEncoderConfigurationsCommandInput, ListEncoderConfigurationsCommandOutput, } from "./commands/ListEncoderConfigurationsCommand"; +import { + ListIngestConfigurationsCommandInput, + ListIngestConfigurationsCommandOutput, +} from "./commands/ListIngestConfigurationsCommand"; import { ListParticipantEventsCommandInput, ListParticipantEventsCommandOutput, @@ -119,6 +135,10 @@ import { StartCompositionCommandInput, StartCompositionCommandOutput } from "./c import { StopCompositionCommandInput, StopCompositionCommandOutput } from "./commands/StopCompositionCommand"; import { TagResourceCommandInput, TagResourceCommandOutput } from "./commands/TagResourceCommand"; import { UntagResourceCommandInput, UntagResourceCommandOutput } from "./commands/UntagResourceCommand"; +import { + UpdateIngestConfigurationCommandInput, + UpdateIngestConfigurationCommandOutput, +} from "./commands/UpdateIngestConfigurationCommand"; import { UpdateStageCommandInput, UpdateStageCommandOutput } from "./commands/UpdateStageCommand"; import { ClientInputEndpointParameters, @@ -136,16 +156,19 @@ export { __Client }; */ export type ServiceInputTypes = | CreateEncoderConfigurationCommandInput + | CreateIngestConfigurationCommandInput | CreateParticipantTokenCommandInput | CreateStageCommandInput | CreateStorageConfigurationCommandInput | DeleteEncoderConfigurationCommandInput + | DeleteIngestConfigurationCommandInput | DeletePublicKeyCommandInput | DeleteStageCommandInput | DeleteStorageConfigurationCommandInput | DisconnectParticipantCommandInput | GetCompositionCommandInput | GetEncoderConfigurationCommandInput + | GetIngestConfigurationCommandInput | GetParticipantCommandInput | GetPublicKeyCommandInput | GetStageCommandInput @@ -154,6 +177,7 @@ export type ServiceInputTypes = | ImportPublicKeyCommandInput | ListCompositionsCommandInput | ListEncoderConfigurationsCommandInput + | ListIngestConfigurationsCommandInput | ListParticipantEventsCommandInput | ListParticipantsCommandInput | ListPublicKeysCommandInput @@ -165,6 +189,7 @@ export type ServiceInputTypes = | StopCompositionCommandInput | TagResourceCommandInput | UntagResourceCommandInput + | UpdateIngestConfigurationCommandInput | UpdateStageCommandInput; /** @@ -172,16 +197,19 @@ export type ServiceInputTypes = */ export type ServiceOutputTypes = | CreateEncoderConfigurationCommandOutput + | CreateIngestConfigurationCommandOutput | CreateParticipantTokenCommandOutput | CreateStageCommandOutput | CreateStorageConfigurationCommandOutput | DeleteEncoderConfigurationCommandOutput + | DeleteIngestConfigurationCommandOutput | DeletePublicKeyCommandOutput | DeleteStageCommandOutput | DeleteStorageConfigurationCommandOutput | DisconnectParticipantCommandOutput | GetCompositionCommandOutput | GetEncoderConfigurationCommandOutput + | GetIngestConfigurationCommandOutput | GetParticipantCommandOutput | GetPublicKeyCommandOutput | GetStageCommandOutput @@ -190,6 +218,7 @@ export type ServiceOutputTypes = | ImportPublicKeyCommandOutput | ListCompositionsCommandOutput | ListEncoderConfigurationsCommandOutput + | ListIngestConfigurationsCommandOutput | ListParticipantEventsCommandOutput | ListParticipantsCommandOutput | ListPublicKeysCommandOutput @@ -201,6 +230,7 @@ export type ServiceOutputTypes = | StopCompositionCommandOutput | TagResourceCommandOutput | UntagResourceCommandOutput + | UpdateIngestConfigurationCommandOutput | UpdateStageCommandOutput; /** @@ -406,7 +436,7 @@ export interface IVSRealTimeClientResolvedConfig extends IVSRealTimeClientResolv *

    * 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 operations support this process.

    *
  • *
  • *

    @@ -421,13 +451,13 @@ export interface IVSRealTimeClientResolvedConfig extends IVSRealTimeClientResolv *

    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.

    + * category. See Best practices and strategies + * in Tagging AWS Resources and Tag Editor for details, 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 real-time API has these tag-related endpoints: TagResource, UntagResource, and + *

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

    *

    At most 50 tags can be applied to a resource.

    * @public diff --git a/clients/client-ivs-realtime/src/commands/CreateIngestConfigurationCommand.ts b/clients/client-ivs-realtime/src/commands/CreateIngestConfigurationCommand.ts new file mode 100644 index 000000000000..ab3e8ca7c6fa --- /dev/null +++ b/clients/client-ivs-realtime/src/commands/CreateIngestConfigurationCommand.ts @@ -0,0 +1,123 @@ +// 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 { + CreateIngestConfigurationRequest, + CreateIngestConfigurationResponse, + CreateIngestConfigurationResponseFilterSensitiveLog, +} from "../models/models_0"; +import { de_CreateIngestConfigurationCommand, se_CreateIngestConfigurationCommand } from "../protocols/Aws_restJson1"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CreateIngestConfigurationCommand}. + */ +export interface CreateIngestConfigurationCommandInput extends CreateIngestConfigurationRequest {} +/** + * @public + * + * The output of {@link CreateIngestConfigurationCommand}. + */ +export interface CreateIngestConfigurationCommandOutput extends CreateIngestConfigurationResponse, __MetadataBearer {} + +/** + *

    Creates a new IngestConfiguration resource, used to specify the ingest protocol for a stage.

    + * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { IVSRealTimeClient, CreateIngestConfigurationCommand } from "@aws-sdk/client-ivs-realtime"; // ES Modules import + * // const { IVSRealTimeClient, CreateIngestConfigurationCommand } = require("@aws-sdk/client-ivs-realtime"); // CommonJS import + * const client = new IVSRealTimeClient(config); + * const input = { // CreateIngestConfigurationRequest + * name: "STRING_VALUE", + * stageArn: "STRING_VALUE", + * userId: "STRING_VALUE", + * attributes: { // ParticipantAttributes + * "": "STRING_VALUE", + * }, + * ingestProtocol: "RTMP" || "RTMPS", // required + * insecureIngest: true || false, + * tags: { // Tags + * "": "STRING_VALUE", + * }, + * }; + * const command = new CreateIngestConfigurationCommand(input); + * const response = await client.send(command); + * // { // CreateIngestConfigurationResponse + * // ingestConfiguration: { // IngestConfiguration + * // name: "STRING_VALUE", + * // arn: "STRING_VALUE", // required + * // ingestProtocol: "RTMP" || "RTMPS", // required + * // streamKey: "STRING_VALUE", // required + * // stageArn: "STRING_VALUE", // required + * // participantId: "STRING_VALUE", // required + * // state: "STRING_VALUE", // required + * // userId: "STRING_VALUE", + * // attributes: { // ParticipantAttributes + * // "": "STRING_VALUE", + * // }, + * // tags: { // Tags + * // "": "STRING_VALUE", + * // }, + * // }, + * // }; + * + * ``` + * + * @param CreateIngestConfigurationCommandInput - {@link CreateIngestConfigurationCommandInput} + * @returns {@link CreateIngestConfigurationCommandOutput} + * @see {@link CreateIngestConfigurationCommandInput} for command's `input` shape. + * @see {@link CreateIngestConfigurationCommandOutput} for command's `response` shape. + * @see {@link IVSRealTimeClientResolvedConfig | config} for IVSRealTimeClient's `config` shape. + * + * @throws {@link AccessDeniedException} (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 CreateIngestConfigurationCommand extends $Command + .classBuilder< + CreateIngestConfigurationCommandInput, + CreateIngestConfigurationCommandOutput, + 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", "CreateIngestConfiguration", {}) + .n("IVSRealTimeClient", "CreateIngestConfigurationCommand") + .f(void 0, CreateIngestConfigurationResponseFilterSensitiveLog) + .ser(se_CreateIngestConfigurationCommand) + .de(de_CreateIngestConfigurationCommand) + .build() {} diff --git a/clients/client-ivs-realtime/src/commands/CreateStageCommand.ts b/clients/client-ivs-realtime/src/commands/CreateStageCommand.ts index 319c3255ed70..6e3020fc12e8 100644 --- a/clients/client-ivs-realtime/src/commands/CreateStageCommand.ts +++ b/clients/client-ivs-realtime/src/commands/CreateStageCommand.ts @@ -78,6 +78,8 @@ export interface CreateStageCommandOutput extends CreateStageResponse, __Metadat * // endpoints: { // StageEndpoints * // events: "STRING_VALUE", * // whip: "STRING_VALUE", + * // rtmp: "STRING_VALUE", + * // rtmps: "STRING_VALUE", * // }, * // }, * // participantTokens: [ // ParticipantTokenList diff --git a/clients/client-ivs-realtime/src/commands/DeleteIngestConfigurationCommand.ts b/clients/client-ivs-realtime/src/commands/DeleteIngestConfigurationCommand.ts new file mode 100644 index 000000000000..1542b7b8b412 --- /dev/null +++ b/clients/client-ivs-realtime/src/commands/DeleteIngestConfigurationCommand.ts @@ -0,0 +1,96 @@ +// 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 { DeleteIngestConfigurationRequest, DeleteIngestConfigurationResponse } from "../models/models_0"; +import { de_DeleteIngestConfigurationCommand, se_DeleteIngestConfigurationCommand } from "../protocols/Aws_restJson1"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteIngestConfigurationCommand}. + */ +export interface DeleteIngestConfigurationCommandInput extends DeleteIngestConfigurationRequest {} +/** + * @public + * + * The output of {@link DeleteIngestConfigurationCommand}. + */ +export interface DeleteIngestConfigurationCommandOutput extends DeleteIngestConfigurationResponse, __MetadataBearer {} + +/** + *

    Deletes a specified IngestConfiguration, so it can no longer be used to broadcast. An IngestConfiguration cannot be deleted if the publisher is actively streaming to a stage, unless force is set to true.

    + * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { IVSRealTimeClient, DeleteIngestConfigurationCommand } from "@aws-sdk/client-ivs-realtime"; // ES Modules import + * // const { IVSRealTimeClient, DeleteIngestConfigurationCommand } = require("@aws-sdk/client-ivs-realtime"); // CommonJS import + * const client = new IVSRealTimeClient(config); + * const input = { // DeleteIngestConfigurationRequest + * arn: "STRING_VALUE", // required + * force: true || false, + * }; + * const command = new DeleteIngestConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteIngestConfigurationCommandInput - {@link DeleteIngestConfigurationCommandInput} + * @returns {@link DeleteIngestConfigurationCommandOutput} + * @see {@link DeleteIngestConfigurationCommandInput} for command's `input` shape. + * @see {@link DeleteIngestConfigurationCommandOutput} 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 DeleteIngestConfigurationCommand extends $Command + .classBuilder< + DeleteIngestConfigurationCommandInput, + DeleteIngestConfigurationCommandOutput, + 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", "DeleteIngestConfiguration", {}) + .n("IVSRealTimeClient", "DeleteIngestConfigurationCommand") + .f(void 0, void 0) + .ser(se_DeleteIngestConfigurationCommand) + .de(de_DeleteIngestConfigurationCommand) + .build() {} diff --git a/clients/client-ivs-realtime/src/commands/DeleteStageCommand.ts b/clients/client-ivs-realtime/src/commands/DeleteStageCommand.ts index facd1b185520..9ca6d62b7318 100644 --- a/clients/client-ivs-realtime/src/commands/DeleteStageCommand.ts +++ b/clients/client-ivs-realtime/src/commands/DeleteStageCommand.ts @@ -28,7 +28,9 @@ export interface DeleteStageCommandInput extends DeleteStageRequest {} export interface DeleteStageCommandOutput extends DeleteStageResponse, __MetadataBearer {} /** - *

    Shuts down and deletes the specified stage (disconnecting all participants).

    + *

    Shuts down and deletes the specified stage (disconnecting all participants). This operation also + * removes the stageArn from the associated IngestConfiguration, if there are participants + * using the IngestConfiguration to publish to the stage.

    * @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-ivs-realtime/src/commands/DisconnectParticipantCommand.ts b/clients/client-ivs-realtime/src/commands/DisconnectParticipantCommand.ts index 440e048918ad..fb6c40ca9dd3 100644 --- a/clients/client-ivs-realtime/src/commands/DisconnectParticipantCommand.ts +++ b/clients/client-ivs-realtime/src/commands/DisconnectParticipantCommand.ts @@ -28,8 +28,9 @@ export interface DisconnectParticipantCommandInput extends DisconnectParticipant export interface DisconnectParticipantCommandOutput extends DisconnectParticipantResponse, __MetadataBearer {} /** - *

    Disconnects a specified participant and revokes the participant permanently from a - * specified stage.

    + *

    Disconnects a specified participant from a specified stage. If the participant is publishing using + * an IngestConfiguration, DisconnectParticipant also updates the stageArn + * in the IngestConfiguration to be an empty string.

    * @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-ivs-realtime/src/commands/GetIngestConfigurationCommand.ts b/clients/client-ivs-realtime/src/commands/GetIngestConfigurationCommand.ts new file mode 100644 index 000000000000..523df5752d77 --- /dev/null +++ b/clients/client-ivs-realtime/src/commands/GetIngestConfigurationCommand.ts @@ -0,0 +1,110 @@ +// 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 { + GetIngestConfigurationRequest, + GetIngestConfigurationResponse, + GetIngestConfigurationResponseFilterSensitiveLog, +} from "../models/models_0"; +import { de_GetIngestConfigurationCommand, se_GetIngestConfigurationCommand } from "../protocols/Aws_restJson1"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetIngestConfigurationCommand}. + */ +export interface GetIngestConfigurationCommandInput extends GetIngestConfigurationRequest {} +/** + * @public + * + * The output of {@link GetIngestConfigurationCommand}. + */ +export interface GetIngestConfigurationCommandOutput extends GetIngestConfigurationResponse, __MetadataBearer {} + +/** + *

    Gets information about the specified IngestConfiguration.

    + * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { IVSRealTimeClient, GetIngestConfigurationCommand } from "@aws-sdk/client-ivs-realtime"; // ES Modules import + * // const { IVSRealTimeClient, GetIngestConfigurationCommand } = require("@aws-sdk/client-ivs-realtime"); // CommonJS import + * const client = new IVSRealTimeClient(config); + * const input = { // GetIngestConfigurationRequest + * arn: "STRING_VALUE", // required + * }; + * const command = new GetIngestConfigurationCommand(input); + * const response = await client.send(command); + * // { // GetIngestConfigurationResponse + * // ingestConfiguration: { // IngestConfiguration + * // name: "STRING_VALUE", + * // arn: "STRING_VALUE", // required + * // ingestProtocol: "RTMP" || "RTMPS", // required + * // streamKey: "STRING_VALUE", // required + * // stageArn: "STRING_VALUE", // required + * // participantId: "STRING_VALUE", // required + * // state: "STRING_VALUE", // required + * // userId: "STRING_VALUE", + * // attributes: { // ParticipantAttributes + * // "": "STRING_VALUE", + * // }, + * // tags: { // Tags + * // "": "STRING_VALUE", + * // }, + * // }, + * // }; + * + * ``` + * + * @param GetIngestConfigurationCommandInput - {@link GetIngestConfigurationCommandInput} + * @returns {@link GetIngestConfigurationCommandOutput} + * @see {@link GetIngestConfigurationCommandInput} for command's `input` shape. + * @see {@link GetIngestConfigurationCommandOutput} 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 GetIngestConfigurationCommand extends $Command + .classBuilder< + GetIngestConfigurationCommandInput, + GetIngestConfigurationCommandOutput, + 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", "GetIngestConfiguration", {}) + .n("IVSRealTimeClient", "GetIngestConfigurationCommand") + .f(void 0, GetIngestConfigurationResponseFilterSensitiveLog) + .ser(se_GetIngestConfigurationCommand) + .de(de_GetIngestConfigurationCommand) + .build() {} diff --git a/clients/client-ivs-realtime/src/commands/GetParticipantCommand.ts b/clients/client-ivs-realtime/src/commands/GetParticipantCommand.ts index 353a4220dbbe..c83ab9d71116 100644 --- a/clients/client-ivs-realtime/src/commands/GetParticipantCommand.ts +++ b/clients/client-ivs-realtime/src/commands/GetParticipantCommand.ts @@ -61,6 +61,7 @@ export interface GetParticipantCommandOutput extends GetParticipantResponse, __M * // recordingS3BucketName: "STRING_VALUE", * // recordingS3Prefix: "STRING_VALUE", * // recordingState: "STRING_VALUE", + * // protocol: "UNKNOWN" || "WHIP" || "RTMP" || "RTMPS", * // }, * // }; * diff --git a/clients/client-ivs-realtime/src/commands/GetStageCommand.ts b/clients/client-ivs-realtime/src/commands/GetStageCommand.ts index bcfe62e49ea7..fb86474df44e 100644 --- a/clients/client-ivs-realtime/src/commands/GetStageCommand.ts +++ b/clients/client-ivs-realtime/src/commands/GetStageCommand.ts @@ -57,6 +57,8 @@ export interface GetStageCommandOutput extends GetStageResponse, __MetadataBeare * // endpoints: { // StageEndpoints * // events: "STRING_VALUE", * // whip: "STRING_VALUE", + * // rtmp: "STRING_VALUE", + * // rtmps: "STRING_VALUE", * // }, * // }, * // }; diff --git a/clients/client-ivs-realtime/src/commands/ListIngestConfigurationsCommand.ts b/clients/client-ivs-realtime/src/commands/ListIngestConfigurationsCommand.ts new file mode 100644 index 000000000000..51bbf4882814 --- /dev/null +++ b/clients/client-ivs-realtime/src/commands/ListIngestConfigurationsCommand.ts @@ -0,0 +1,102 @@ +// 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 { ListIngestConfigurationsRequest, ListIngestConfigurationsResponse } from "../models/models_0"; +import { de_ListIngestConfigurationsCommand, se_ListIngestConfigurationsCommand } from "../protocols/Aws_restJson1"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListIngestConfigurationsCommand}. + */ +export interface ListIngestConfigurationsCommandInput extends ListIngestConfigurationsRequest {} +/** + * @public + * + * The output of {@link ListIngestConfigurationsCommand}. + */ +export interface ListIngestConfigurationsCommandOutput extends ListIngestConfigurationsResponse, __MetadataBearer {} + +/** + *

    Lists all IngestConfigurations 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, ListIngestConfigurationsCommand } from "@aws-sdk/client-ivs-realtime"; // ES Modules import + * // const { IVSRealTimeClient, ListIngestConfigurationsCommand } = require("@aws-sdk/client-ivs-realtime"); // CommonJS import + * const client = new IVSRealTimeClient(config); + * const input = { // ListIngestConfigurationsRequest + * filterByStageArn: "STRING_VALUE", + * filterByState: "STRING_VALUE", + * nextToken: "STRING_VALUE", + * maxResults: Number("int"), + * }; + * const command = new ListIngestConfigurationsCommand(input); + * const response = await client.send(command); + * // { // ListIngestConfigurationsResponse + * // ingestConfigurations: [ // IngestConfigurationList // required + * // { // IngestConfigurationSummary + * // name: "STRING_VALUE", + * // arn: "STRING_VALUE", // required + * // ingestProtocol: "RTMP" || "RTMPS", // required + * // stageArn: "STRING_VALUE", // required + * // participantId: "STRING_VALUE", // required + * // state: "STRING_VALUE", // required + * // userId: "STRING_VALUE", + * // }, + * // ], + * // nextToken: "STRING_VALUE", + * // }; + * + * ``` + * + * @param ListIngestConfigurationsCommandInput - {@link ListIngestConfigurationsCommandInput} + * @returns {@link ListIngestConfigurationsCommandOutput} + * @see {@link ListIngestConfigurationsCommandInput} for command's `input` shape. + * @see {@link ListIngestConfigurationsCommandOutput} 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 ListIngestConfigurationsCommand extends $Command + .classBuilder< + ListIngestConfigurationsCommandInput, + ListIngestConfigurationsCommandOutput, + 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", "ListIngestConfigurations", {}) + .n("IVSRealTimeClient", "ListIngestConfigurationsCommand") + .f(void 0, void 0) + .ser(se_ListIngestConfigurationsCommand) + .de(de_ListIngestConfigurationsCommand) + .build() {} diff --git a/clients/client-ivs-realtime/src/commands/ListParticipantEventsCommand.ts b/clients/client-ivs-realtime/src/commands/ListParticipantEventsCommand.ts index 12be08fdbcbe..70b1b5485e15 100644 --- a/clients/client-ivs-realtime/src/commands/ListParticipantEventsCommand.ts +++ b/clients/client-ivs-realtime/src/commands/ListParticipantEventsCommand.ts @@ -52,7 +52,7 @@ export interface ListParticipantEventsCommandOutput extends ListParticipantEvent * // participantId: "STRING_VALUE", * // eventTime: new Date("TIMESTAMP"), * // remoteParticipantId: "STRING_VALUE", - * // errorCode: "STRING_VALUE", + * // errorCode: "INSUFFICIENT_CAPABILITIES" || "QUOTA_EXCEEDED" || "PUBLISHER_NOT_FOUND" || "BITRATE_EXCEEDED" || "RESOLUTION_EXCEEDED" || "STREAM_DURATION_EXCEEDED" || "INVALID_AUDIO_CODEC" || "INVALID_VIDEO_CODEC" || "INVALID_PROTOCOL" || "INVALID_STREAM_KEY" || "REUSE_OF_STREAM_KEY", * // }, * // ], * // nextToken: "STRING_VALUE", diff --git a/clients/client-ivs-realtime/src/commands/StartCompositionCommand.ts b/clients/client-ivs-realtime/src/commands/StartCompositionCommand.ts index 2bfbaa36c258..00d5f97afa11 100644 --- a/clients/client-ivs-realtime/src/commands/StartCompositionCommand.ts +++ b/clients/client-ivs-realtime/src/commands/StartCompositionCommand.ts @@ -30,7 +30,7 @@ export interface StartCompositionCommandOutput extends StartCompositionResponse, /** *

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

    - *

    A Composition is an ephemeral resource that exists after this endpoint returns + *

    A Composition is an ephemeral resource that exists after this operation returns * successfully. Composition stops and the resource is deleted:

    *
      *
    • diff --git a/clients/client-ivs-realtime/src/commands/UpdateIngestConfigurationCommand.ts b/clients/client-ivs-realtime/src/commands/UpdateIngestConfigurationCommand.ts new file mode 100644 index 000000000000..fb9fe85f6bab --- /dev/null +++ b/clients/client-ivs-realtime/src/commands/UpdateIngestConfigurationCommand.ts @@ -0,0 +1,117 @@ +// 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 { + UpdateIngestConfigurationRequest, + UpdateIngestConfigurationResponse, + UpdateIngestConfigurationResponseFilterSensitiveLog, +} from "../models/models_0"; +import { de_UpdateIngestConfigurationCommand, se_UpdateIngestConfigurationCommand } from "../protocols/Aws_restJson1"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link UpdateIngestConfigurationCommand}. + */ +export interface UpdateIngestConfigurationCommandInput extends UpdateIngestConfigurationRequest {} +/** + * @public + * + * The output of {@link UpdateIngestConfigurationCommand}. + */ +export interface UpdateIngestConfigurationCommandOutput extends UpdateIngestConfigurationResponse, __MetadataBearer {} + +/** + *

      Updates a specified IngestConfiguration. Only the stage ARN attached to the IngestConfiguration can be updated. An IngestConfiguration that is active cannot be updated.

      + * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { IVSRealTimeClient, UpdateIngestConfigurationCommand } from "@aws-sdk/client-ivs-realtime"; // ES Modules import + * // const { IVSRealTimeClient, UpdateIngestConfigurationCommand } = require("@aws-sdk/client-ivs-realtime"); // CommonJS import + * const client = new IVSRealTimeClient(config); + * const input = { // UpdateIngestConfigurationRequest + * arn: "STRING_VALUE", // required + * stageArn: "STRING_VALUE", + * }; + * const command = new UpdateIngestConfigurationCommand(input); + * const response = await client.send(command); + * // { // UpdateIngestConfigurationResponse + * // ingestConfiguration: { // IngestConfiguration + * // name: "STRING_VALUE", + * // arn: "STRING_VALUE", // required + * // ingestProtocol: "RTMP" || "RTMPS", // required + * // streamKey: "STRING_VALUE", // required + * // stageArn: "STRING_VALUE", // required + * // participantId: "STRING_VALUE", // required + * // state: "STRING_VALUE", // required + * // userId: "STRING_VALUE", + * // attributes: { // ParticipantAttributes + * // "": "STRING_VALUE", + * // }, + * // tags: { // Tags + * // "": "STRING_VALUE", + * // }, + * // }, + * // }; + * + * ``` + * + * @param UpdateIngestConfigurationCommandInput - {@link UpdateIngestConfigurationCommandInput} + * @returns {@link UpdateIngestConfigurationCommandOutput} + * @see {@link UpdateIngestConfigurationCommandInput} for command's `input` shape. + * @see {@link UpdateIngestConfigurationCommandOutput} 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 UpdateIngestConfigurationCommand extends $Command + .classBuilder< + UpdateIngestConfigurationCommandInput, + UpdateIngestConfigurationCommandOutput, + 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", "UpdateIngestConfiguration", {}) + .n("IVSRealTimeClient", "UpdateIngestConfigurationCommand") + .f(void 0, UpdateIngestConfigurationResponseFilterSensitiveLog) + .ser(se_UpdateIngestConfigurationCommand) + .de(de_UpdateIngestConfigurationCommand) + .build() {} diff --git a/clients/client-ivs-realtime/src/commands/UpdateStageCommand.ts b/clients/client-ivs-realtime/src/commands/UpdateStageCommand.ts index 3e428e963e40..54bbf1f9e237 100644 --- a/clients/client-ivs-realtime/src/commands/UpdateStageCommand.ts +++ b/clients/client-ivs-realtime/src/commands/UpdateStageCommand.ts @@ -64,6 +64,8 @@ export interface UpdateStageCommandOutput extends UpdateStageResponse, __Metadat * // endpoints: { // StageEndpoints * // events: "STRING_VALUE", * // whip: "STRING_VALUE", + * // rtmp: "STRING_VALUE", + * // rtmps: "STRING_VALUE", * // }, * // }, * // }; diff --git a/clients/client-ivs-realtime/src/commands/index.ts b/clients/client-ivs-realtime/src/commands/index.ts index efbbd4ae7397..36a4dc4e4f29 100644 --- a/clients/client-ivs-realtime/src/commands/index.ts +++ b/clients/client-ivs-realtime/src/commands/index.ts @@ -1,15 +1,18 @@ // smithy-typescript generated code export * from "./CreateEncoderConfigurationCommand"; +export * from "./CreateIngestConfigurationCommand"; export * from "./CreateParticipantTokenCommand"; export * from "./CreateStageCommand"; export * from "./CreateStorageConfigurationCommand"; export * from "./DeleteEncoderConfigurationCommand"; +export * from "./DeleteIngestConfigurationCommand"; export * from "./DeletePublicKeyCommand"; export * from "./DeleteStageCommand"; export * from "./DeleteStorageConfigurationCommand"; export * from "./DisconnectParticipantCommand"; export * from "./GetCompositionCommand"; export * from "./GetEncoderConfigurationCommand"; +export * from "./GetIngestConfigurationCommand"; export * from "./GetParticipantCommand"; export * from "./GetPublicKeyCommand"; export * from "./GetStageCommand"; @@ -18,6 +21,7 @@ export * from "./GetStorageConfigurationCommand"; export * from "./ImportPublicKeyCommand"; export * from "./ListCompositionsCommand"; export * from "./ListEncoderConfigurationsCommand"; +export * from "./ListIngestConfigurationsCommand"; export * from "./ListParticipantEventsCommand"; export * from "./ListParticipantsCommand"; export * from "./ListPublicKeysCommand"; @@ -29,4 +33,5 @@ export * from "./StartCompositionCommand"; export * from "./StopCompositionCommand"; export * from "./TagResourceCommand"; export * from "./UntagResourceCommand"; +export * from "./UpdateIngestConfigurationCommand"; export * from "./UpdateStageCommand"; diff --git a/clients/client-ivs-realtime/src/index.ts b/clients/client-ivs-realtime/src/index.ts index 4bceace9156e..d29af422ac8d 100644 --- a/clients/client-ivs-realtime/src/index.ts +++ b/clients/client-ivs-realtime/src/index.ts @@ -32,7 +32,7 @@ *

      * 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 operations support this process.

      *
    • *
    • *

      @@ -47,13 +47,13 @@ *

      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.

      + * category. See Best practices and strategies + * in Tagging AWS Resources and Tag Editor for details, 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 real-time API has these tag-related endpoints: TagResource, UntagResource, and + *

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

      *

      At most 50 tags can be applied to a resource.

      * diff --git a/clients/client-ivs-realtime/src/models/models_0.ts b/clients/client-ivs-realtime/src/models/models_0.ts index cc31772979a5..e6363f454ab8 100644 --- a/clients/client-ivs-realtime/src/models/models_0.ts +++ b/clients/client-ivs-realtime/src/models/models_0.ts @@ -108,8 +108,8 @@ export interface CreateEncoderConfigurationRequest { /** *

      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 + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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 @@ -143,10 +143,9 @@ export interface EncoderConfiguration { /** *

      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.

      + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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; @@ -293,6 +292,173 @@ export class ValidationException extends __BaseException { } } +/** + * @public + * @enum + */ +export const IngestProtocol = { + RTMP: "RTMP", + RTMPS: "RTMPS", +} as const; + +/** + * @public + */ +export type IngestProtocol = (typeof IngestProtocol)[keyof typeof IngestProtocol]; + +/** + * @public + */ +export interface CreateIngestConfigurationRequest { + /** + *

      Optional name that can be specified for the IngestConfiguration being created.

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

      ARN of the stage with which the IngestConfiguration is associated.

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

      Customer-assigned name to help identify the participant using the IngestConfiguration; this can be used to link a participant to a user in the customer’s own systems. This can be any UTF-8 encoded text. + * This field is exposed to all stage participants and should not be used for personally identifying, confidential, or sensitive information. + *

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

      Application-provided attributes to store in the IngestConfiguration and attach to a stage. Map keys and values can contain UTF-8 encoded text. The maximum length of this field is 1 KB total. + * This field is exposed to all stage participants and should not be used for personally identifying, confidential, or sensitive information. + *

      + * @public + */ + attributes?: Record; + + /** + *

      Type of ingest protocol that the user employs to broadcast. If this is set to RTMP, insecureIngest must be set to true.

      + * @public + */ + ingestProtocol: IngestProtocol | undefined; + + /** + *

      Whether the stage allows insecure RTMP ingest. This must be set to true, if ingestProtocol is set to RTMP. Default: false.

      + * @public + */ + insecureIngest?: boolean; + + /** + *

      Tags attached to the resource. Array of maps, each of the form string:string + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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 + * @enum + */ +export const IngestConfigurationState = { + ACTIVE: "ACTIVE", + INACTIVE: "INACTIVE", +} as const; + +/** + * @public + */ +export type IngestConfigurationState = (typeof IngestConfigurationState)[keyof typeof IngestConfigurationState]; + +/** + *

      Object specifying an ingest configuration.

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

      Ingest name

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

      Ingest configuration ARN.

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

      Type of ingest protocol that the user employs for broadcasting.

      + * @public + */ + ingestProtocol: IngestProtocol | undefined; + + /** + *

      Ingest-key value for the RTMP(S) protocol.

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

      ARN of the stage with which the IngestConfiguration is associated.

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

      ID of the participant within the stage.

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

      State of the ingest configuration. It is ACTIVE if a publisher currently is publishing to the stage associated with the ingest configuration.

      + * @public + */ + state: IngestConfigurationState | undefined; + + /** + *

      Customer-assigned name to help identify the participant using the IngestConfiguration; this can be used to link a participant to a user in the customer’s own systems. This can be any UTF-8 encoded text. + * This field is exposed to all stage participants and should not be used for personally identifying, confidential, or sensitive information. + *

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

      Application-provided attributes to to store in the IngestConfiguration and attach to a stage. Map keys and values can contain UTF-8 encoded text. The maximum length of this field is 1 KB total. + * This field is exposed to all stage participants and should not be used for personally identifying, confidential, or sensitive information. + *

      + * @public + */ + attributes?: Record; + + /** + *

      Tags attached to the resource. Array of maps, each of the form string:string + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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 CreateIngestConfigurationResponse { + /** + *

      The IngestConfiguration that was created.

      + * @public + */ + ingestConfiguration?: IngestConfiguration; +} + /** * @public * @enum @@ -511,8 +677,8 @@ export interface CreateStageRequest { /** *

      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 + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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 @@ -527,7 +693,8 @@ export interface CreateStageRequest { } /** - *

      Summary information about various endpoints for a stage.

      + *

      Summary information about various endpoints for a stage. We recommend that you cache these values at stage + * creation; the values can be cached for up to 14 days.

      * @public */ export interface StageEndpoints { @@ -538,10 +705,22 @@ export interface StageEndpoints { events?: string; /** - *

      WHIP endpoint.

      + *

      The endpoint to be used for IVS real-time streaming using the WHIP protocol.

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

      The endpoint to be used for IVS real-time streaming using the RTMP protocol.

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

      The endpoint to be used for IVS real-time streaming using the RTMPS protocol.

      + * @public + */ + rtmps?: string; } /** @@ -569,10 +748,9 @@ export interface Stage { /** *

      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.

      + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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; @@ -639,8 +817,8 @@ export interface CreateStorageConfigurationRequest { /** *

      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 + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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 @@ -673,10 +851,9 @@ export interface StorageConfiguration { /** *

      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.

      + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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; @@ -709,6 +886,28 @@ export interface DeleteEncoderConfigurationRequest { */ export interface DeleteEncoderConfigurationResponse {} +/** + * @public + */ +export interface DeleteIngestConfigurationRequest { + /** + *

      ARN of the IngestConfiguration.

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

      Optional field to force deletion of the IngestConfiguration. If this is set to true when a participant is actively publishing, the participant is disconnected from the stage, followed by deletion of the IngestConfiguration. Default: false.

      + * @public + */ + force?: boolean; +} + +/** + * @public + */ +export interface DeleteIngestConfigurationResponse {} + /** * @public */ @@ -768,8 +967,9 @@ export interface DisconnectParticipantRequest { stageArn: string | undefined; /** - *

      Identifier of the participant to be disconnected. This is assigned by IVS and returned - * by CreateParticipantToken.

      + *

      Identifier of the participant to be disconnected. IVS assigns this; it is returned + * by CreateParticipantToken (for streams using WebRTC ingest) or CreateIngestConfiguration (for + * streams using RTMP ingest).

      * @public */ participantId: string | undefined; @@ -1237,10 +1437,9 @@ export interface Composition { /** *

      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.

      + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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; @@ -1293,6 +1492,28 @@ export interface GetEncoderConfigurationResponse { encoderConfiguration?: EncoderConfiguration; } +/** + * @public + */ +export interface GetIngestConfigurationRequest { + /** + *

      ARN of the ingest for which the information is to be retrieved.

      + * @public + */ + arn: string | undefined; +} + +/** + * @public + */ +export interface GetIngestConfigurationResponse { + /** + *

      The IngestConfiguration that was returned.

      + * @public + */ + ingestConfiguration?: IngestConfiguration; +} + /** * @public */ @@ -1316,6 +1537,22 @@ export interface GetParticipantRequest { participantId: string | undefined; } +/** + * @public + * @enum + */ +export const ParticipantProtocol = { + RTMP: "RTMP", + RTMPS: "RTMPS", + UNKNOWN: "UNKNOWN", + WHIP: "WHIP", +} as const; + +/** + * @public + */ +export type ParticipantProtocol = (typeof ParticipantProtocol)[keyof typeof ParticipantProtocol]; + /** * @public * @enum @@ -1449,6 +1686,12 @@ export interface Participant { * @public */ recordingState?: ParticipantRecordingState; + + /** + *

      Type of ingest protocol that the participant employs for broadcasting.

      + * @public + */ + protocol?: ParticipantProtocol; } /** @@ -1504,10 +1747,9 @@ export interface PublicKey { /** *

      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.

      + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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; @@ -1642,8 +1884,8 @@ export interface ImportPublicKeyRequest { /** *

      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 + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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 @@ -1756,10 +1998,9 @@ export interface CompositionSummary { /** *

      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.

      + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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; @@ -1834,10 +2075,9 @@ export interface EncoderConfigurationSummary { /** *

      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.

      + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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; @@ -1861,6 +2101,102 @@ export interface ListEncoderConfigurationsResponse { nextToken?: string; } +/** + * @public + */ +export interface ListIngestConfigurationsRequest { + /** + *

      Filters the response list to match the specified stage ARN. Only one filter (by stage ARN or by state) can be used at a time.

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

      Filters the response list to match the specified state. Only one filter (by stage ARN or by state) can be used at a time.

      + * @public + */ + filterByState?: IngestConfigurationState; + + /** + *

      The first IngestConfiguration 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 an IngestConfiguration.

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

      Ingest name.

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

      Ingest configuration ARN.

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

      Type of ingest protocol that the user employs for broadcasting.

      + * @public + */ + ingestProtocol: IngestProtocol | undefined; + + /** + *

      ARN of the stage with which the IngestConfiguration is associated.

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

      ID of the participant within the stage.

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

      State of the ingest configuration. It is ACTIVE if a publisher currently is publishing to the stage associated with the ingest configuration.

      + * @public + */ + state: IngestConfigurationState | undefined; + + /** + *

      Customer-assigned name to help identify the participant using the IngestConfiguration; this can be used to link a participant to a user in the customer’s own systems. This can be any UTF-8 encoded text. + * This field is exposed to all stage participants and should not be used for personally identifying, confidential, or sensitive information. + *

      + * @public + */ + userId?: string; +} + +/** + * @public + */ +export interface ListIngestConfigurationsResponse { + /** + *

      List of the matching ingest configurations (summary information only).

      + * @public + */ + ingestConfigurations: IngestConfigurationSummary[] | undefined; + + /** + *

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

      + * @public + */ + nextToken?: string; +} + /** * @public */ @@ -1902,9 +2238,17 @@ export interface ListParticipantEventsRequest { * @enum */ export const EventErrorCode = { + BITRATE_EXCEEDED: "BITRATE_EXCEEDED", INSUFFICIENT_CAPABILITIES: "INSUFFICIENT_CAPABILITIES", + INVALID_AUDIO_CODEC: "INVALID_AUDIO_CODEC", + INVALID_PROTOCOL: "INVALID_PROTOCOL", + INVALID_STREAM_KEY: "INVALID_STREAM_KEY", + INVALID_VIDEO_CODEC: "INVALID_VIDEO_CODEC", PUBLISHER_NOT_FOUND: "PUBLISHER_NOT_FOUND", QUOTA_EXCEEDED: "QUOTA_EXCEEDED", + RESOLUTION_EXCEEDED: "RESOLUTION_EXCEEDED", + REUSE_OF_STREAM_KEY: "REUSE_OF_STREAM_KEY", + STREAM_DURATION_EXCEEDED: "STREAM_DURATION_EXCEEDED", } as const; /** @@ -2180,10 +2524,9 @@ export interface PublicKeySummary { /** *

      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.

      + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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; @@ -2249,10 +2592,9 @@ export interface StageSummary { /** *

      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.

      + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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; @@ -2387,10 +2729,9 @@ export interface StorageConfigurationSummary { /** *

      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.

      + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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; @@ -2467,8 +2808,8 @@ export interface StartCompositionRequest { /** *

      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 + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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 @@ -2515,9 +2856,9 @@ export interface TagResourceRequest { /** *

      Array of tags to be added or updated. 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 beyond what is documented + * string:string (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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 */ @@ -2541,9 +2882,9 @@ export interface UntagResourceRequest { /** *

      Array of tags to be removed. 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 beyond what is documented + * (key:value). See Best practices and strategies + * in Tagging AWS Resources and Tag Editor 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 */ @@ -2555,6 +2896,34 @@ export interface UntagResourceRequest { */ export interface UntagResourceResponse {} +/** + * @public + */ +export interface UpdateIngestConfigurationRequest { + /** + *

      ARN of the IngestConfiguration, for which the related stage ARN needs to be updated.

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

      Stage ARN that needs to be updated.

      + * @public + */ + stageArn?: string; +} + +/** + * @public + */ +export interface UpdateIngestConfigurationResponse { + /** + *

      The updated IngestConfiguration.

      + * @public + */ + ingestConfiguration?: IngestConfiguration; +} + /** * @public */ @@ -2589,6 +2958,24 @@ export interface UpdateStageResponse { stage?: Stage; } +/** + * @internal + */ +export const IngestConfigurationFilterSensitiveLog = (obj: IngestConfiguration): any => ({ + ...obj, + ...(obj.streamKey && { streamKey: SENSITIVE_STRING }), +}); + +/** + * @internal + */ +export const CreateIngestConfigurationResponseFilterSensitiveLog = (obj: CreateIngestConfigurationResponse): any => ({ + ...obj, + ...(obj.ingestConfiguration && { + ingestConfiguration: IngestConfigurationFilterSensitiveLog(obj.ingestConfiguration), + }), +}); + /** * @internal */ @@ -2614,3 +3001,23 @@ export const CreateStageResponseFilterSensitiveLog = (obj: CreateStageResponse): participantTokens: obj.participantTokens.map((item) => ParticipantTokenFilterSensitiveLog(item)), }), }); + +/** + * @internal + */ +export const GetIngestConfigurationResponseFilterSensitiveLog = (obj: GetIngestConfigurationResponse): any => ({ + ...obj, + ...(obj.ingestConfiguration && { + ingestConfiguration: IngestConfigurationFilterSensitiveLog(obj.ingestConfiguration), + }), +}); + +/** + * @internal + */ +export const UpdateIngestConfigurationResponseFilterSensitiveLog = (obj: UpdateIngestConfigurationResponse): any => ({ + ...obj, + ...(obj.ingestConfiguration && { + ingestConfiguration: IngestConfigurationFilterSensitiveLog(obj.ingestConfiguration), + }), +}); diff --git a/clients/client-ivs-realtime/src/pagination/ListIngestConfigurationsPaginator.ts b/clients/client-ivs-realtime/src/pagination/ListIngestConfigurationsPaginator.ts new file mode 100644 index 000000000000..504151eeaded --- /dev/null +++ b/clients/client-ivs-realtime/src/pagination/ListIngestConfigurationsPaginator.ts @@ -0,0 +1,24 @@ +// smithy-typescript generated code +import { createPaginator } from "@smithy/core"; +import { Paginator } from "@smithy/types"; + +import { + ListIngestConfigurationsCommand, + ListIngestConfigurationsCommandInput, + ListIngestConfigurationsCommandOutput, +} from "../commands/ListIngestConfigurationsCommand"; +import { IVSRealTimeClient } from "../IVSRealTimeClient"; +import { IVSRealTimePaginationConfiguration } from "./Interfaces"; + +/** + * @public + */ +export const paginateListIngestConfigurations: ( + config: IVSRealTimePaginationConfiguration, + input: ListIngestConfigurationsCommandInput, + ...rest: any[] +) => Paginator = createPaginator< + IVSRealTimePaginationConfiguration, + ListIngestConfigurationsCommandInput, + ListIngestConfigurationsCommandOutput +>(IVSRealTimeClient, ListIngestConfigurationsCommand, "nextToken", "nextToken", "maxResults"); diff --git a/clients/client-ivs-realtime/src/pagination/index.ts b/clients/client-ivs-realtime/src/pagination/index.ts index 5490fbffea65..e2076250c067 100644 --- a/clients/client-ivs-realtime/src/pagination/index.ts +++ b/clients/client-ivs-realtime/src/pagination/index.ts @@ -2,6 +2,7 @@ export * from "./Interfaces"; export * from "./ListCompositionsPaginator"; export * from "./ListEncoderConfigurationsPaginator"; +export * from "./ListIngestConfigurationsPaginator"; export * from "./ListParticipantEventsPaginator"; export * from "./ListParticipantsPaginator"; export * from "./ListPublicKeysPaginator"; diff --git a/clients/client-ivs-realtime/src/protocols/Aws_restJson1.ts b/clients/client-ivs-realtime/src/protocols/Aws_restJson1.ts index 7268b3b36fd0..b2921a900bde 100644 --- a/clients/client-ivs-realtime/src/protocols/Aws_restJson1.ts +++ b/clients/client-ivs-realtime/src/protocols/Aws_restJson1.ts @@ -31,6 +31,10 @@ import { CreateEncoderConfigurationCommandInput, CreateEncoderConfigurationCommandOutput, } from "../commands/CreateEncoderConfigurationCommand"; +import { + CreateIngestConfigurationCommandInput, + CreateIngestConfigurationCommandOutput, +} from "../commands/CreateIngestConfigurationCommand"; import { CreateParticipantTokenCommandInput, CreateParticipantTokenCommandOutput, @@ -44,6 +48,10 @@ import { DeleteEncoderConfigurationCommandInput, DeleteEncoderConfigurationCommandOutput, } from "../commands/DeleteEncoderConfigurationCommand"; +import { + DeleteIngestConfigurationCommandInput, + DeleteIngestConfigurationCommandOutput, +} from "../commands/DeleteIngestConfigurationCommand"; import { DeletePublicKeyCommandInput, DeletePublicKeyCommandOutput } from "../commands/DeletePublicKeyCommand"; import { DeleteStageCommandInput, DeleteStageCommandOutput } from "../commands/DeleteStageCommand"; import { @@ -59,6 +67,10 @@ import { GetEncoderConfigurationCommandInput, GetEncoderConfigurationCommandOutput, } from "../commands/GetEncoderConfigurationCommand"; +import { + GetIngestConfigurationCommandInput, + GetIngestConfigurationCommandOutput, +} from "../commands/GetIngestConfigurationCommand"; import { GetParticipantCommandInput, GetParticipantCommandOutput } from "../commands/GetParticipantCommand"; import { GetPublicKeyCommandInput, GetPublicKeyCommandOutput } from "../commands/GetPublicKeyCommand"; import { GetStageCommandInput, GetStageCommandOutput } from "../commands/GetStageCommand"; @@ -73,6 +85,10 @@ import { ListEncoderConfigurationsCommandInput, ListEncoderConfigurationsCommandOutput, } from "../commands/ListEncoderConfigurationsCommand"; +import { + ListIngestConfigurationsCommandInput, + ListIngestConfigurationsCommandOutput, +} from "../commands/ListIngestConfigurationsCommand"; import { ListParticipantEventsCommandInput, ListParticipantEventsCommandOutput, @@ -93,6 +109,10 @@ import { StartCompositionCommandInput, StartCompositionCommandOutput } from "../ import { StopCompositionCommandInput, StopCompositionCommandOutput } from "../commands/StopCompositionCommand"; import { TagResourceCommandInput, TagResourceCommandOutput } from "../commands/TagResourceCommand"; import { UntagResourceCommandInput, UntagResourceCommandOutput } from "../commands/UntagResourceCommand"; +import { + UpdateIngestConfigurationCommandInput, + UpdateIngestConfigurationCommandOutput, +} from "../commands/UpdateIngestConfigurationCommand"; import { UpdateStageCommandInput, UpdateStageCommandOutput } from "../commands/UpdateStageCommand"; import { IVSRealTimeServiceException as __BaseException } from "../models/IVSRealTimeServiceException"; import { @@ -153,6 +173,34 @@ export const se_CreateEncoderConfigurationCommand = async ( return b.build(); }; +/** + * serializeAws_restJson1CreateIngestConfigurationCommand + */ +export const se_CreateIngestConfigurationCommand = async ( + input: CreateIngestConfigurationCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const b = rb(input, context); + const headers: any = { + "content-type": "application/json", + }; + b.bp("/CreateIngestConfiguration"); + let body: any; + body = JSON.stringify( + take(input, { + attributes: (_) => _json(_), + ingestProtocol: [], + insecureIngest: [], + name: [], + stageArn: [], + tags: (_) => _json(_), + userId: [], + }) + ); + b.m("POST").h(headers).b(body); + return b.build(); +}; + /** * serializeAws_restJson1CreateParticipantTokenCommand */ @@ -250,6 +298,29 @@ export const se_DeleteEncoderConfigurationCommand = async ( return b.build(); }; +/** + * serializeAws_restJson1DeleteIngestConfigurationCommand + */ +export const se_DeleteIngestConfigurationCommand = async ( + input: DeleteIngestConfigurationCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const b = rb(input, context); + const headers: any = { + "content-type": "application/json", + }; + b.bp("/DeleteIngestConfiguration"); + let body: any; + body = JSON.stringify( + take(input, { + arn: [], + force: [], + }) + ); + b.m("POST").h(headers).b(body); + return b.build(); +}; + /** * serializeAws_restJson1DeletePublicKeyCommand */ @@ -384,6 +455,28 @@ export const se_GetEncoderConfigurationCommand = async ( return b.build(); }; +/** + * serializeAws_restJson1GetIngestConfigurationCommand + */ +export const se_GetIngestConfigurationCommand = async ( + input: GetIngestConfigurationCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const b = rb(input, context); + const headers: any = { + "content-type": "application/json", + }; + b.bp("/GetIngestConfiguration"); + let body: any; + body = JSON.stringify( + take(input, { + arn: [], + }) + ); + b.m("POST").h(headers).b(body); + return b.build(); +}; + /** * serializeAws_restJson1GetParticipantCommand */ @@ -569,6 +662,31 @@ export const se_ListEncoderConfigurationsCommand = async ( return b.build(); }; +/** + * serializeAws_restJson1ListIngestConfigurationsCommand + */ +export const se_ListIngestConfigurationsCommand = async ( + input: ListIngestConfigurationsCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const b = rb(input, context); + const headers: any = { + "content-type": "application/json", + }; + b.bp("/ListIngestConfigurations"); + let body: any; + body = JSON.stringify( + take(input, { + filterByStageArn: [], + filterByState: [], + maxResults: [], + nextToken: [], + }) + ); + b.m("POST").h(headers).b(body); + return b.build(); +}; + /** * serializeAws_restJson1ListParticipantEventsCommand */ @@ -826,6 +944,29 @@ export const se_UntagResourceCommand = async ( return b.build(); }; +/** + * serializeAws_restJson1UpdateIngestConfigurationCommand + */ +export const se_UpdateIngestConfigurationCommand = async ( + input: UpdateIngestConfigurationCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const b = rb(input, context); + const headers: any = { + "content-type": "application/json", + }; + b.bp("/UpdateIngestConfiguration"); + let body: any; + body = JSON.stringify( + take(input, { + arn: [], + stageArn: [], + }) + ); + b.m("POST").h(headers).b(body); + return b.build(); +}; + /** * serializeAws_restJson1UpdateStageCommand */ @@ -871,6 +1012,27 @@ export const de_CreateEncoderConfigurationCommand = async ( return contents; }; +/** + * deserializeAws_restJson1CreateIngestConfigurationCommand + */ +export const de_CreateIngestConfigurationCommand = 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, { + ingestConfiguration: _json, + }); + Object.assign(contents, doc); + return contents; +}; + /** * deserializeAws_restJson1CreateParticipantTokenCommand */ @@ -952,6 +1114,23 @@ export const de_DeleteEncoderConfigurationCommand = async ( return contents; }; +/** + * deserializeAws_restJson1DeleteIngestConfigurationCommand + */ +export const de_DeleteIngestConfigurationCommand = 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_restJson1DeletePublicKeyCommand */ @@ -1062,6 +1241,27 @@ export const de_GetEncoderConfigurationCommand = async ( return contents; }; +/** + * deserializeAws_restJson1GetIngestConfigurationCommand + */ +export const de_GetIngestConfigurationCommand = 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, { + ingestConfiguration: _json, + }); + Object.assign(contents, doc); + return contents; +}; + /** * deserializeAws_restJson1GetParticipantCommand */ @@ -1232,6 +1432,28 @@ export const de_ListEncoderConfigurationsCommand = async ( return contents; }; +/** + * deserializeAws_restJson1ListIngestConfigurationsCommand + */ +export const de_ListIngestConfigurationsCommand = 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, { + ingestConfigurations: _json, + nextToken: __expectString, + }); + Object.assign(contents, doc); + return contents; +}; + /** * deserializeAws_restJson1ListParticipantEventsCommand */ @@ -1457,6 +1679,27 @@ export const de_UntagResourceCommand = async ( return contents; }; +/** + * deserializeAws_restJson1UpdateIngestConfigurationCommand + */ +export const de_UpdateIngestConfigurationCommand = 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, { + ingestConfiguration: _json, + }); + Object.assign(contents, doc); + return contents; +}; + /** * deserializeAws_restJson1UpdateStageCommand */ @@ -1665,6 +1908,8 @@ const de_ValidationExceptionRes = async (parsedOutput: any, context: __SerdeCont // se_LayoutConfiguration omitted. +// se_ParticipantAttributes omitted. + // se_ParticipantRecordingMediaTypeList omitted. // se_ParticipantTokenAttributes omitted. @@ -1843,6 +2088,12 @@ const de_EventList = (output: any, context: __SerdeContext): Event[] => { // de_GridConfiguration omitted. +// de_IngestConfiguration omitted. + +// de_IngestConfigurationList omitted. + +// de_IngestConfigurationSummary omitted. + // de_LayoutConfiguration omitted. /** @@ -1858,6 +2109,7 @@ const de_Participant = (output: any, context: __SerdeContext): Participant => { osName: __expectString, osVersion: __expectString, participantId: __expectString, + protocol: __expectString, published: __expectBoolean, recordingS3BucketName: __expectString, recordingS3Prefix: __expectString, diff --git a/codegen/sdk-codegen/aws-models/ivs-realtime.json b/codegen/sdk-codegen/aws-models/ivs-realtime.json index 15ed58b59786..718158ceaf6e 100644 --- a/codegen/sdk-codegen/aws-models/ivs-realtime.json +++ b/codegen/sdk-codegen/aws-models/ivs-realtime.json @@ -24,6 +24,9 @@ { "target": "com.amazonaws.ivsrealtime#CreateEncoderConfiguration" }, + { + "target": "com.amazonaws.ivsrealtime#CreateIngestConfiguration" + }, { "target": "com.amazonaws.ivsrealtime#CreateParticipantToken" }, @@ -36,6 +39,9 @@ { "target": "com.amazonaws.ivsrealtime#DeleteEncoderConfiguration" }, + { + "target": "com.amazonaws.ivsrealtime#DeleteIngestConfiguration" + }, { "target": "com.amazonaws.ivsrealtime#DeletePublicKey" }, @@ -54,6 +60,9 @@ { "target": "com.amazonaws.ivsrealtime#GetEncoderConfiguration" }, + { + "target": "com.amazonaws.ivsrealtime#GetIngestConfiguration" + }, { "target": "com.amazonaws.ivsrealtime#GetParticipant" }, @@ -78,6 +87,9 @@ { "target": "com.amazonaws.ivsrealtime#ListEncoderConfigurations" }, + { + "target": "com.amazonaws.ivsrealtime#ListIngestConfigurations" + }, { "target": "com.amazonaws.ivsrealtime#ListParticipantEvents" }, @@ -111,6 +123,9 @@ { "target": "com.amazonaws.ivsrealtime#UntagResource" }, + { + "target": "com.amazonaws.ivsrealtime#UpdateIngestConfiguration" + }, { "target": "com.amazonaws.ivsrealtime#UpdateStage" } @@ -146,7 +161,7 @@ "date" ] }, - "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#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 operations 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 Best practices and strategies\n in Tagging AWS Resources and Tag Editor for details, including restrictions that apply to tags and \"Tag naming\n limits and requirements\"; Amazon IVS stages has no service-specific 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 operations: 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", @@ -864,6 +879,12 @@ } } }, + "com.amazonaws.ivsrealtime#Boolean": { + "type": "boolean", + "traits": { + "smithy.api#default": false + } + }, "com.amazonaws.ivsrealtime#ChannelArn": { "type": "string", "traits": { @@ -936,7 +957,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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 there.

      " } }, "startTime": { @@ -1037,7 +1058,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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 there.

      " } }, "startTime": { @@ -1136,7 +1157,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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.

      " } } }, @@ -1158,6 +1179,102 @@ "smithy.api#output": {} } }, + "com.amazonaws.ivsrealtime#CreateIngestConfiguration": { + "type": "operation", + "input": { + "target": "com.amazonaws.ivsrealtime#CreateIngestConfigurationRequest" + }, + "output": { + "target": "com.amazonaws.ivsrealtime#CreateIngestConfigurationResponse" + }, + "errors": [ + { + "target": "com.amazonaws.ivsrealtime#AccessDeniedException" + }, + { + "target": "com.amazonaws.ivsrealtime#PendingVerification" + }, + { + "target": "com.amazonaws.ivsrealtime#ServiceQuotaExceededException" + }, + { + "target": "com.amazonaws.ivsrealtime#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

      Creates a new IngestConfiguration resource, used to specify the ingest protocol for a stage.

      ", + "smithy.api#http": { + "method": "POST", + "uri": "/CreateIngestConfiguration" + } + } + }, + "com.amazonaws.ivsrealtime#CreateIngestConfigurationRequest": { + "type": "structure", + "members": { + "name": { + "target": "com.amazonaws.ivsrealtime#IngestConfigurationName", + "traits": { + "smithy.api#documentation": "

      Optional name that can be specified for the IngestConfiguration being created.

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

      ARN of the stage with which the IngestConfiguration is associated.

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

      Customer-assigned name to help identify the participant using the IngestConfiguration; this can be used to link a participant to a user in the customer’s own systems. This can be any UTF-8 encoded text.\n This field is exposed to all stage participants and should not be used for personally identifying, confidential, or sensitive information.\n

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

      Application-provided attributes to store in the IngestConfiguration and attach to a stage. Map keys and values can contain UTF-8 encoded text. The maximum length of this field is 1 KB total.\n This field is exposed to all stage participants and should not be used for personally identifying, confidential, or sensitive information.\n

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

      Type of ingest protocol that the user employs to broadcast. If this is set to RTMP, insecureIngest must be set to true.

      ", + "smithy.api#required": {} + } + }, + "insecureIngest": { + "target": "com.amazonaws.ivsrealtime#InsecureIngest", + "traits": { + "smithy.api#default": false, + "smithy.api#documentation": "

      Whether the stage allows insecure RTMP ingest. This must be set to true, if ingestProtocol is set to RTMP. Default: false.

      " + } + }, + "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 Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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\t there.

      " + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.ivsrealtime#CreateIngestConfigurationResponse": { + "type": "structure", + "members": { + "ingestConfiguration": { + "target": "com.amazonaws.ivsrealtime#IngestConfiguration", + "traits": { + "smithy.api#documentation": "

      The IngestConfiguration that was created.

      " + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.ivsrealtime#CreateParticipantToken": { "type": "operation", "input": { @@ -1286,7 +1403,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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.

      " } }, "autoParticipantRecordingConfiguration": { @@ -1372,7 +1489,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n\t in Tagging AWS Resources and Tag Editor 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.

      " } } }, @@ -1452,6 +1569,68 @@ "smithy.api#output": {} } }, + "com.amazonaws.ivsrealtime#DeleteIngestConfiguration": { + "type": "operation", + "input": { + "target": "com.amazonaws.ivsrealtime#DeleteIngestConfigurationRequest" + }, + "output": { + "target": "com.amazonaws.ivsrealtime#DeleteIngestConfigurationResponse" + }, + "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 a specified IngestConfiguration, so it can no longer be used to broadcast. An IngestConfiguration cannot be deleted if the publisher is actively streaming to a stage, unless force is set to true.

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

      ARN of the IngestConfiguration.

      ", + "smithy.api#required": {} + } + }, + "force": { + "target": "com.amazonaws.ivsrealtime#Boolean", + "traits": { + "smithy.api#default": false, + "smithy.api#documentation": "

      Optional field to force deletion of the IngestConfiguration. If this is set to true when a participant is actively publishing, the participant is disconnected from the stage, followed by deletion of the IngestConfiguration. Default: false.

      " + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.ivsrealtime#DeleteIngestConfigurationResponse": { + "type": "structure", + "members": {}, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.ivsrealtime#DeletePublicKey": { "type": "operation", "input": { @@ -1533,7 +1712,7 @@ } ], "traits": { - "smithy.api#documentation": "

      Shuts down and deletes the specified stage (disconnecting all participants).

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

      Shuts down and deletes the specified stage (disconnecting all participants). This operation also\n removes the stageArn from the associated IngestConfiguration, if there are participants\n\t using the IngestConfiguration to publish to the stage.

      ", "smithy.api#http": { "method": "POST", "uri": "/DeleteStage" @@ -1838,7 +2017,7 @@ } ], "traits": { - "smithy.api#documentation": "

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

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

      Disconnects a specified participant from a specified stage. If the participant is publishing using\n an IngestConfiguration, DisconnectParticipant also updates the stageArn\n\t in the IngestConfiguration to be an empty string.

      ", "smithy.api#http": { "method": "POST", "uri": "/DisconnectParticipant" @@ -1867,7 +2046,7 @@ "participantId": { "target": "com.amazonaws.ivsrealtime#ParticipantTokenId", "traits": { - "smithy.api#documentation": "

      Identifier of the participant to be disconnected. This is assigned by IVS and returned\n by CreateParticipantToken.

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

      Identifier of the participant to be disconnected. IVS assigns this; it is returned\n by CreateParticipantToken (for streams using WebRTC ingest) or CreateIngestConfiguration (for\n\t streams using RTMP ingest).

      ", "smithy.api#required": {} } }, @@ -1908,7 +2087,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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 there.

      " } } }, @@ -1967,7 +2146,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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 there.

      " } } }, @@ -2020,22 +2199,74 @@ } }, "com.amazonaws.ivsrealtime#EventErrorCode": { - "type": "string", - "traits": { - "smithy.api#enum": [ - { - "value": "INSUFFICIENT_CAPABILITIES", - "name": "INSUFFICIENT_CAPABILITIES" - }, - { - "value": "QUOTA_EXCEEDED", - "name": "QUOTA_EXCEEDED" - }, - { - "value": "PUBLISHER_NOT_FOUND", - "name": "PUBLISHER_NOT_FOUND" + "type": "enum", + "members": { + "INSUFFICIENT_CAPABILITIES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INSUFFICIENT_CAPABILITIES" } - ] + }, + "QUOTA_EXCEEDED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "QUOTA_EXCEEDED" + } + }, + "PUBLISHER_NOT_FOUND": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PUBLISHER_NOT_FOUND" + } + }, + "BITRATE_EXCEEDED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BITRATE_EXCEEDED" + } + }, + "RESOLUTION_EXCEEDED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RESOLUTION_EXCEEDED" + } + }, + "STREAM_DURATION_EXCEEDED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "STREAM_DURATION_EXCEEDED" + } + }, + "INVALID_AUDIO_CODEC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INVALID_AUDIO_CODEC" + } + }, + "INVALID_VIDEO_CODEC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INVALID_VIDEO_CODEC" + } + }, + "INVALID_PROTOCOL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INVALID_PROTOCOL" + } + }, + "INVALID_STREAM_KEY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INVALID_STREAM_KEY" + } + }, + "REUSE_OF_STREAM_KEY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "REUSE_OF_STREAM_KEY" + } + } } }, "com.amazonaws.ivsrealtime#EventList": { @@ -2228,6 +2459,63 @@ "smithy.api#output": {} } }, + "com.amazonaws.ivsrealtime#GetIngestConfiguration": { + "type": "operation", + "input": { + "target": "com.amazonaws.ivsrealtime#GetIngestConfigurationRequest" + }, + "output": { + "target": "com.amazonaws.ivsrealtime#GetIngestConfigurationResponse" + }, + "errors": [ + { + "target": "com.amazonaws.ivsrealtime#AccessDeniedException" + }, + { + "target": "com.amazonaws.ivsrealtime#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.ivsrealtime#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

      Gets information about the specified IngestConfiguration.

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

      ARN of the ingest for which the information is to be retrieved.

      ", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.ivsrealtime#GetIngestConfigurationResponse": { + "type": "structure", + "members": { + "ingestConfiguration": { + "target": "com.amazonaws.ivsrealtime#IngestConfiguration", + "traits": { + "smithy.api#documentation": "

      The IngestConfiguration that was returned.

      " + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.ivsrealtime#GetParticipant": { "type": "operation", "input": { @@ -2648,7 +2936,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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.

      " } } }, @@ -2670,28 +2958,231 @@ "smithy.api#output": {} } }, - "com.amazonaws.ivsrealtime#InternalServerException": { + "com.amazonaws.ivsrealtime#IngestConfiguration": { "type": "structure", "members": { - "exceptionMessage": { - "target": "com.amazonaws.ivsrealtime#errorMessage", + "name": { + "target": "com.amazonaws.ivsrealtime#IngestConfigurationName", "traits": { - "smithy.api#documentation": "

      Unexpected error during processing of request.

      " + "smithy.api#documentation": "

      Ingest name

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

      ", - "smithy.api#error": "server", - "smithy.api#httpError": 500 - } - }, - "com.amazonaws.ivsrealtime#LayoutConfiguration": { - "type": "structure", - "members": { - "grid": { - "target": "com.amazonaws.ivsrealtime#GridConfiguration", - "traits": { + }, + "arn": { + "target": "com.amazonaws.ivsrealtime#IngestConfigurationArn", + "traits": { + "smithy.api#documentation": "

      Ingest configuration ARN.

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

      Type of ingest protocol that the user employs for broadcasting.

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

      Ingest-key value for the RTMP(S) protocol.

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

      ARN of the stage with which the IngestConfiguration is associated.

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

      ID of the participant within the stage.

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

      State of the ingest configuration. It is ACTIVE if a publisher currently is publishing to the stage associated with the ingest configuration.

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

      Customer-assigned name to help identify the participant using the IngestConfiguration; this can be used to link a participant to a user in the customer’s own systems. This can be any UTF-8 encoded text.\n This field is exposed to all stage participants and should not be used for personally identifying, confidential, or sensitive information.\n

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

      Application-provided attributes to to store in the IngestConfiguration and attach to a stage. Map keys and values can contain UTF-8 encoded text. The maximum length of this field is 1 KB total.\n This field is exposed to all stage participants and should not be used for personally identifying, confidential, or sensitive information.\n

      " + } + }, + "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 Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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 there.

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

      Object specifying an ingest configuration.

      " + } + }, + "com.amazonaws.ivsrealtime#IngestConfigurationArn": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 128 + }, + "smithy.api#pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:ingest-configuration/[a-zA-Z0-9-]+$" + } + }, + "com.amazonaws.ivsrealtime#IngestConfigurationList": { + "type": "list", + "member": { + "target": "com.amazonaws.ivsrealtime#IngestConfigurationSummary" + } + }, + "com.amazonaws.ivsrealtime#IngestConfigurationName": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 128 + }, + "smithy.api#pattern": "^[a-zA-Z0-9-_]*$" + } + }, + "com.amazonaws.ivsrealtime#IngestConfigurationStageArn": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 128 + }, + "smithy.api#pattern": "^^$|^arn:aws:ivs:[a-z0-9-]+:[0-9]+:stage/[a-zA-Z0-9-]+$$" + } + }, + "com.amazonaws.ivsrealtime#IngestConfigurationState": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "ACTIVE", + "name": "ACTIVE" + }, + { + "value": "INACTIVE", + "name": "INACTIVE" + } + ] + } + }, + "com.amazonaws.ivsrealtime#IngestConfigurationSummary": { + "type": "structure", + "members": { + "name": { + "target": "com.amazonaws.ivsrealtime#IngestConfigurationName", + "traits": { + "smithy.api#documentation": "

      Ingest name.

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

      Ingest configuration ARN.

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

      Type of ingest protocol that the user employs for broadcasting.

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

      ARN of the stage with which the IngestConfiguration is associated.

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

      ID of the participant within the stage.

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

      State of the ingest configuration. It is ACTIVE if a publisher currently is publishing to the stage associated with the ingest configuration.

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

      Customer-assigned name to help identify the participant using the IngestConfiguration; this can be used to link a participant to a user in the customer’s own systems. This can be any UTF-8 encoded text.\n This field is exposed to all stage participants and should not be used for personally identifying, confidential, or sensitive information.\n

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

      Summary information about an IngestConfiguration.

      " + } + }, + "com.amazonaws.ivsrealtime#IngestProtocol": { + "type": "enum", + "members": { + "RTMP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RTMP" + } + }, + "RTMPS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RTMPS" + } + } + } + }, + "com.amazonaws.ivsrealtime#InsecureIngest": { + "type": "boolean", + "traits": { + "smithy.api#default": false + } + }, + "com.amazonaws.ivsrealtime#InternalServerException": { + "type": "structure", + "members": { + "exceptionMessage": { + "target": "com.amazonaws.ivsrealtime#errorMessage", + "traits": { + "smithy.api#documentation": "

      Unexpected error during processing of request.

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

      ", + "smithy.api#error": "server", + "smithy.api#httpError": 500 + } + }, + "com.amazonaws.ivsrealtime#LayoutConfiguration": { + "type": "structure", + "members": { + "grid": { + "target": "com.amazonaws.ivsrealtime#GridConfiguration", + "traits": { "smithy.api#documentation": "

      Configuration related to grid layout. Default: Grid layout.

      " } }, @@ -2878,6 +3369,90 @@ "smithy.api#output": {} } }, + "com.amazonaws.ivsrealtime#ListIngestConfigurations": { + "type": "operation", + "input": { + "target": "com.amazonaws.ivsrealtime#ListIngestConfigurationsRequest" + }, + "output": { + "target": "com.amazonaws.ivsrealtime#ListIngestConfigurationsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.ivsrealtime#AccessDeniedException" + }, + { + "target": "com.amazonaws.ivsrealtime#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

      Lists all IngestConfigurations in your account, in the AWS region where the API request is processed.

      ", + "smithy.api#http": { + "method": "POST", + "uri": "/ListIngestConfigurations" + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken", + "pageSize": "maxResults", + "items": "ingestConfigurations" + }, + "smithy.api#readonly": {} + } + }, + "com.amazonaws.ivsrealtime#ListIngestConfigurationsRequest": { + "type": "structure", + "members": { + "filterByStageArn": { + "target": "com.amazonaws.ivsrealtime#StageArn", + "traits": { + "smithy.api#documentation": "

      Filters the response list to match the specified stage ARN. Only one filter (by stage ARN or by state) can be used at a time.

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

      Filters the response list to match the specified state. Only one filter (by stage ARN or by state) can be used at a time.

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

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

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

      Maximum number of results to return. Default: 50.

      " + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.ivsrealtime#ListIngestConfigurationsResponse": { + "type": "structure", + "members": { + "ingestConfigurations": { + "target": "com.amazonaws.ivsrealtime#IngestConfigurationList", + "traits": { + "smithy.api#documentation": "

      List of the matching ingest configurations (summary information only).

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

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

      " + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.ivsrealtime#ListParticipantEvents": { "type": "operation", "input": { @@ -3449,6 +4024,15 @@ } } }, + "com.amazonaws.ivsrealtime#MaxIngestConfigurationResults": { + "type": "integer", + "traits": { + "smithy.api#range": { + "min": 1, + "max": 100 + } + } + }, "com.amazonaws.ivsrealtime#MaxParticipantEventResults": { "type": "integer", "traits": { @@ -3612,6 +4196,12 @@ "traits": { "smithy.api#documentation": "

      The participant’s recording state.

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

      Type of ingest protocol that the participant employs for broadcasting.

      " + } } }, "traits": { @@ -3653,6 +4243,35 @@ "target": "com.amazonaws.ivsrealtime#ParticipantSummary" } }, + "com.amazonaws.ivsrealtime#ParticipantProtocol": { + "type": "enum", + "members": { + "UNKNOWN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UNKNOWN" + } + }, + "WHIP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WHIP" + } + }, + "RTMP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RTMP" + } + }, + "RTMPS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RTMPS" + } + } + } + }, "com.amazonaws.ivsrealtime#ParticipantRecordingFilterByRecordingState": { "type": "string", "traits": { @@ -4175,7 +4794,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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 there.

      " } } }, @@ -4236,7 +4855,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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 there.

      " } } }, @@ -4410,7 +5029,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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 there.

      " } }, "autoParticipantRecordingConfiguration": { @@ -4461,12 +5080,24 @@ "whip": { "target": "com.amazonaws.ivsrealtime#StageEndpoint", "traits": { - "smithy.api#documentation": "

      WHIP endpoint.

      " + "smithy.api#documentation": "

      The endpoint to be used for IVS real-time streaming using the WHIP protocol.

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

      The endpoint to be used for IVS real-time streaming using the RTMP protocol.

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

      The endpoint to be used for IVS real-time streaming using the RTMPS protocol.

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

      Summary information about various endpoints for a stage.

      " + "smithy.api#documentation": "

      Summary information about various endpoints for a stage. We recommend that you cache these values at stage\n creation; the values can be cached for up to 14 days.

      " } }, "com.amazonaws.ivsrealtime#StageName": { @@ -4572,7 +5203,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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 there.

      " } } }, @@ -4618,7 +5249,7 @@ } ], "traits": { - "smithy.api#documentation": "

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

      \n

      A Composition is an ephemeral resource that exists after this endpoint returns\n successfully. Composition stops and the resource is deleted:

      \n
        \n
      • \n

        When StopComposition is called.

        \n
      • \n
      • \n

        After a 1-minute timeout, when all participants are disconnected from the\n stage.

        \n
      • \n
      • \n

        After a 1-minute timeout, if there are no participants in the stage when\n StartComposition is called.

        \n
      • \n
      • \n

        When broadcasting to the IVS channel fails and all retries are exhausted.

        \n
      • \n
      • \n

        When broadcasting is disconnected and all attempts to reconnect are\n exhausted.

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

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

      \n

      A Composition is an ephemeral resource that exists after this operation returns\n successfully. Composition stops and the resource is deleted:

      \n
        \n
      • \n

        When StopComposition is called.

        \n
      • \n
      • \n

        After a 1-minute timeout, when all participants are disconnected from the\n stage.

        \n
      • \n
      • \n

        After a 1-minute timeout, if there are no participants in the stage when\n StartComposition is called.

        \n
      • \n
      • \n

        When broadcasting to the IVS channel fails and all retries are exhausted.

        \n
      • \n
      • \n

        When broadcasting is disconnected and all attempts to reconnect are\n exhausted.

        \n
      • \n
      ", "smithy.api#http": { "method": "POST", "uri": "/StartComposition" @@ -4658,7 +5289,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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.

      " } } }, @@ -4763,7 +5394,7 @@ "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.

      " + "smithy.api#documentation": "

      Tags attached to the resource. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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 there.

      " } } }, @@ -4816,7 +5447,7 @@ "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.

      " + "smithy.api#documentation": "

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

      " } } }, @@ -4830,6 +5461,13 @@ "target": "com.amazonaws.ivsrealtime#StorageConfigurationSummary" } }, + "com.amazonaws.ivsrealtime#StreamKey": { + "type": "string", + "traits": { + "smithy.api#pattern": "^rt_[0-9]+_[a-z0-9-]+_[a-zA-Z0-9-]+_.+$", + "smithy.api#sensitive": {} + } + }, "com.amazonaws.ivsrealtime#String": { "type": "string" }, @@ -4895,7 +5533,7 @@ "tags": { "target": "com.amazonaws.ivsrealtime#Tags", "traits": { - "smithy.api#documentation": "

      Array of tags to be added or updated. Array of maps, each of the form\n string:string (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 beyond what is documented\n there.

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

      Array of tags to be added or updated. Array of maps, each of the form\n string:string (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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.

      ", "smithy.api#required": {} } } @@ -4976,7 +5614,7 @@ "tagKeys": { "target": "com.amazonaws.ivsrealtime#TagKeyList", "traits": { - "smithy.api#documentation": "

      Array of tags to be removed. 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 beyond what is documented\n there.

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

      Array of tags to be removed. Array of maps, each of the form string:string\n (key:value). See Best practices and strategies\n in Tagging AWS Resources and Tag Editor 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.

      ", "smithy.api#httpQuery": "tagKeys", "smithy.api#required": {} } @@ -4987,6 +5625,74 @@ "type": "structure", "members": {} }, + "com.amazonaws.ivsrealtime#UpdateIngestConfiguration": { + "type": "operation", + "input": { + "target": "com.amazonaws.ivsrealtime#UpdateIngestConfigurationRequest" + }, + "output": { + "target": "com.amazonaws.ivsrealtime#UpdateIngestConfigurationResponse" + }, + "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": "

      Updates a specified IngestConfiguration. Only the stage ARN attached to the IngestConfiguration can be updated. An IngestConfiguration that is active cannot be updated.

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

      ARN of the IngestConfiguration, for which the related stage ARN needs to be updated.

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

      Stage ARN that needs to be updated.

      " + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.ivsrealtime#UpdateIngestConfigurationResponse": { + "type": "structure", + "members": { + "ingestConfiguration": { + "target": "com.amazonaws.ivsrealtime#IngestConfiguration", + "traits": { + "smithy.api#documentation": "

      The updated IngestConfiguration.

      " + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.ivsrealtime#UpdateStage": { "type": "operation", "input": {