From 31ffd5a743e0706a100c18dc81bc9fadbac417a0 Mon Sep 17 00:00:00 2001 From: awstools Date: Tue, 27 Jun 2023 18:25:31 +0000 Subject: [PATCH] feat(client-kinesis-video): General Availability (GA) release of Kinesis Video Streams at Edge, enabling customers to provide a configuration for the Kinesis Video Streams EdgeAgent running on an on-premise IoT device. Customers can now locally record from cameras and stream videos to the cloud on a configured schedule. --- clients/client-kinesis-video/README.md | 16 + .../client-kinesis-video/src/KinesisVideo.ts | 46 + .../src/KinesisVideoClient.ts | 12 + .../DeleteEdgeConfigurationCommand.ts | 160 ++ .../DescribeEdgeConfigurationCommand.ts | 24 +- ...cribeMappedResourceConfigurationCommand.ts | 3 +- .../ListEdgeAgentConfigurationsCommand.ts | 202 ++ .../StartEdgeConfigurationUpdateCommand.ts | 2 +- .../src/commands/index.ts | 2 + .../src/endpoint/EndpointParameters.ts | 2 +- .../src/endpoint/ruleset.ts | 39 +- .../src/models/models_0.ts | 306 ++- .../ListEdgeAgentConfigurationsPaginator.ts | 50 + .../src/pagination/index.ts | 1 + .../src/protocols/Aws_restJson1.ts | 252 +++ .../sdk-codegen/aws-models/kinesis-video.json | 1925 ++++++++--------- 16 files changed, 1963 insertions(+), 1079 deletions(-) create mode 100644 clients/client-kinesis-video/src/commands/DeleteEdgeConfigurationCommand.ts create mode 100644 clients/client-kinesis-video/src/commands/ListEdgeAgentConfigurationsCommand.ts create mode 100644 clients/client-kinesis-video/src/pagination/ListEdgeAgentConfigurationsPaginator.ts diff --git a/clients/client-kinesis-video/README.md b/clients/client-kinesis-video/README.md index 1b6c06ff6e5e..13012d754aad 100644 --- a/clients/client-kinesis-video/README.md +++ b/clients/client-kinesis-video/README.md @@ -218,6 +218,14 @@ CreateStream [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-kinesis-video/classes/createstreamcommand.html) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-kinesis-video/interfaces/createstreamcommandinput.html) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-kinesis-video/interfaces/createstreamcommandoutput.html) + +
+ +DeleteEdgeConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-kinesis-video/classes/deleteedgeconfigurationcommand.html) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-kinesis-video/interfaces/deleteedgeconfigurationcommandinput.html) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-kinesis-video/interfaces/deleteedgeconfigurationcommandoutput.html) +
@@ -306,6 +314,14 @@ GetSignalingChannelEndpoint [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-kinesis-video/classes/getsignalingchannelendpointcommand.html) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-kinesis-video/interfaces/getsignalingchannelendpointcommandinput.html) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-kinesis-video/interfaces/getsignalingchannelendpointcommandoutput.html) +
+
+ +ListEdgeAgentConfigurations + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-kinesis-video/classes/listedgeagentconfigurationscommand.html) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-kinesis-video/interfaces/listedgeagentconfigurationscommandinput.html) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-kinesis-video/interfaces/listedgeagentconfigurationscommandoutput.html) +
diff --git a/clients/client-kinesis-video/src/KinesisVideo.ts b/clients/client-kinesis-video/src/KinesisVideo.ts index d8c28e811282..6b2ca745a957 100644 --- a/clients/client-kinesis-video/src/KinesisVideo.ts +++ b/clients/client-kinesis-video/src/KinesisVideo.ts @@ -12,6 +12,11 @@ import { CreateStreamCommandInput, CreateStreamCommandOutput, } from "./commands/CreateStreamCommand"; +import { + DeleteEdgeConfigurationCommand, + DeleteEdgeConfigurationCommandInput, + DeleteEdgeConfigurationCommandOutput, +} from "./commands/DeleteEdgeConfigurationCommand"; import { DeleteSignalingChannelCommand, DeleteSignalingChannelCommandInput, @@ -67,6 +72,11 @@ import { GetSignalingChannelEndpointCommandInput, GetSignalingChannelEndpointCommandOutput, } from "./commands/GetSignalingChannelEndpointCommand"; +import { + ListEdgeAgentConfigurationsCommand, + ListEdgeAgentConfigurationsCommandInput, + ListEdgeAgentConfigurationsCommandOutput, +} from "./commands/ListEdgeAgentConfigurationsCommand"; import { ListSignalingChannelsCommand, ListSignalingChannelsCommandInput, @@ -131,6 +141,7 @@ import { KinesisVideoClient, KinesisVideoClientConfig } from "./KinesisVideoClie const commands = { CreateSignalingChannelCommand, CreateStreamCommand, + DeleteEdgeConfigurationCommand, DeleteSignalingChannelCommand, DeleteStreamCommand, DescribeEdgeConfigurationCommand, @@ -142,6 +153,7 @@ const commands = { DescribeStreamCommand, GetDataEndpointCommand, GetSignalingChannelEndpointCommand, + ListEdgeAgentConfigurationsCommand, ListSignalingChannelsCommand, ListStreamsCommand, ListTagsForResourceCommand, @@ -188,6 +200,23 @@ export interface KinesisVideo { cb: (err: any, data?: CreateStreamCommandOutput) => void ): void; + /** + * @see {@link DeleteEdgeConfigurationCommand} + */ + deleteEdgeConfiguration( + args: DeleteEdgeConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteEdgeConfiguration( + args: DeleteEdgeConfigurationCommandInput, + cb: (err: any, data?: DeleteEdgeConfigurationCommandOutput) => void + ): void; + deleteEdgeConfiguration( + args: DeleteEdgeConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteEdgeConfigurationCommandOutput) => void + ): void; + /** * @see {@link DeleteSignalingChannelCommand} */ @@ -363,6 +392,23 @@ export interface KinesisVideo { cb: (err: any, data?: GetSignalingChannelEndpointCommandOutput) => void ): void; + /** + * @see {@link ListEdgeAgentConfigurationsCommand} + */ + listEdgeAgentConfigurations( + args: ListEdgeAgentConfigurationsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listEdgeAgentConfigurations( + args: ListEdgeAgentConfigurationsCommandInput, + cb: (err: any, data?: ListEdgeAgentConfigurationsCommandOutput) => void + ): void; + listEdgeAgentConfigurations( + args: ListEdgeAgentConfigurationsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListEdgeAgentConfigurationsCommandOutput) => void + ): void; + /** * @see {@link ListSignalingChannelsCommand} */ diff --git a/clients/client-kinesis-video/src/KinesisVideoClient.ts b/clients/client-kinesis-video/src/KinesisVideoClient.ts index e615c366a442..2a50e0569735 100644 --- a/clients/client-kinesis-video/src/KinesisVideoClient.ts +++ b/clients/client-kinesis-video/src/KinesisVideoClient.ts @@ -56,6 +56,10 @@ import { CreateSignalingChannelCommandOutput, } from "./commands/CreateSignalingChannelCommand"; import { CreateStreamCommandInput, CreateStreamCommandOutput } from "./commands/CreateStreamCommand"; +import { + DeleteEdgeConfigurationCommandInput, + DeleteEdgeConfigurationCommandOutput, +} from "./commands/DeleteEdgeConfigurationCommand"; import { DeleteSignalingChannelCommandInput, DeleteSignalingChannelCommandOutput, @@ -91,6 +95,10 @@ import { GetSignalingChannelEndpointCommandInput, GetSignalingChannelEndpointCommandOutput, } from "./commands/GetSignalingChannelEndpointCommand"; +import { + ListEdgeAgentConfigurationsCommandInput, + ListEdgeAgentConfigurationsCommandOutput, +} from "./commands/ListEdgeAgentConfigurationsCommand"; import { ListSignalingChannelsCommandInput, ListSignalingChannelsCommandOutput, @@ -146,6 +154,7 @@ export { __Client }; export type ServiceInputTypes = | CreateSignalingChannelCommandInput | CreateStreamCommandInput + | DeleteEdgeConfigurationCommandInput | DeleteSignalingChannelCommandInput | DeleteStreamCommandInput | DescribeEdgeConfigurationCommandInput @@ -157,6 +166,7 @@ export type ServiceInputTypes = | DescribeStreamCommandInput | GetDataEndpointCommandInput | GetSignalingChannelEndpointCommandInput + | ListEdgeAgentConfigurationsCommandInput | ListSignalingChannelsCommandInput | ListStreamsCommandInput | ListTagsForResourceCommandInput @@ -179,6 +189,7 @@ export type ServiceInputTypes = export type ServiceOutputTypes = | CreateSignalingChannelCommandOutput | CreateStreamCommandOutput + | DeleteEdgeConfigurationCommandOutput | DeleteSignalingChannelCommandOutput | DeleteStreamCommandOutput | DescribeEdgeConfigurationCommandOutput @@ -190,6 +201,7 @@ export type ServiceOutputTypes = | DescribeStreamCommandOutput | GetDataEndpointCommandOutput | GetSignalingChannelEndpointCommandOutput + | ListEdgeAgentConfigurationsCommandOutput | ListSignalingChannelsCommandOutput | ListStreamsCommandOutput | ListTagsForResourceCommandOutput diff --git a/clients/client-kinesis-video/src/commands/DeleteEdgeConfigurationCommand.ts b/clients/client-kinesis-video/src/commands/DeleteEdgeConfigurationCommand.ts new file mode 100644 index 000000000000..39695b3d6f40 --- /dev/null +++ b/clients/client-kinesis-video/src/commands/DeleteEdgeConfigurationCommand.ts @@ -0,0 +1,160 @@ +// smithy-typescript generated code +import { EndpointParameterInstructions, getEndpointPlugin } from "@aws-sdk/middleware-endpoint"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + HttpHandlerOptions as __HttpHandlerOptions, + MetadataBearer as __MetadataBearer, + MiddlewareStack, +} from "@aws-sdk/types"; +import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@smithy/protocol-http"; +import { SerdeContext as __SerdeContext } from "@smithy/types"; + +import { KinesisVideoClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../KinesisVideoClient"; +import { DeleteEdgeConfigurationInput, DeleteEdgeConfigurationOutput } from "../models/models_0"; +import { de_DeleteEdgeConfigurationCommand, se_DeleteEdgeConfigurationCommand } from "../protocols/Aws_restJson1"; + +/** + * @public + */ +export { __MetadataBearer, $Command }; +/** + * @public + * + * The input for {@link DeleteEdgeConfigurationCommand}. + */ +export interface DeleteEdgeConfigurationCommandInput extends DeleteEdgeConfigurationInput {} +/** + * @public + * + * The output of {@link DeleteEdgeConfigurationCommand}. + */ +export interface DeleteEdgeConfigurationCommandOutput extends DeleteEdgeConfigurationOutput, __MetadataBearer {} + +/** + * @public + *

An asynchronous API that deletes a stream’s existing edge configuration, as well as the corresponding media from the Edge Agent.

+ *

When you invoke this API, the sync status is set to DELETING. A deletion process starts, in which active edge jobs are stopped and all media is deleted from the edge device. The time to delete varies, depending on the total amount of stored media. If the deletion process fails, the sync status changes to DELETE_FAILED. You will need to re-try the deletion.

+ *

When the deletion process has completed successfully, the edge configuration is no longer accessible.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { KinesisVideoClient, DeleteEdgeConfigurationCommand } from "@aws-sdk/client-kinesis-video"; // ES Modules import + * // const { KinesisVideoClient, DeleteEdgeConfigurationCommand } = require("@aws-sdk/client-kinesis-video"); // CommonJS import + * const client = new KinesisVideoClient(config); + * const input = { // DeleteEdgeConfigurationInput + * StreamName: "STRING_VALUE", + * StreamARN: "STRING_VALUE", + * }; + * const command = new DeleteEdgeConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteEdgeConfigurationCommandInput - {@link DeleteEdgeConfigurationCommandInput} + * @returns {@link DeleteEdgeConfigurationCommandOutput} + * @see {@link DeleteEdgeConfigurationCommandInput} for command's `input` shape. + * @see {@link DeleteEdgeConfigurationCommandOutput} for command's `response` shape. + * @see {@link KinesisVideoClientResolvedConfig | config} for KinesisVideoClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

You do not have required permissions to perform this operation.

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

Kinesis Video Streams has throttled the request because you have exceeded the limit of + * allowed client calls. Try making the call later.

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

The value for this input parameter is invalid.

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

Amazon Kinesis Video Streams can't find the stream that you specified.

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

The Exception rendered when the Amazon Kinesis Video Stream can't find a stream's edge configuration + * that you specified.

+ * + * @throws {@link KinesisVideoServiceException} + *

Base exception class for all service exceptions from KinesisVideo service.

+ * + */ +export class DeleteEdgeConfigurationCommand extends $Command< + DeleteEdgeConfigurationCommandInput, + DeleteEdgeConfigurationCommandOutput, + KinesisVideoClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + public static getEndpointParameterInstructions(): EndpointParameterInstructions { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, + }; + } + + /** + * @public + */ + constructor(readonly input: DeleteEdgeConfigurationCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + /** + * @internal + */ + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: KinesisVideoClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler { + this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use( + getEndpointPlugin(configuration, DeleteEdgeConfigurationCommand.getEndpointParameterInstructions()) + ); + + const stack = clientStack.concat(this.middlewareStack); + + const { logger } = configuration; + const clientName = "KinesisVideoClient"; + const commandName = "DeleteEdgeConfigurationCommand"; + const handlerExecutionContext: HandlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_: any) => _, + outputFilterSensitiveLog: (_: any) => _, + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + /** + * @internal + */ + private serialize(input: DeleteEdgeConfigurationCommandInput, context: __SerdeContext): Promise<__HttpRequest> { + return se_DeleteEdgeConfigurationCommand(input, context); + } + + /** + * @internal + */ + private deserialize(output: __HttpResponse, context: __SerdeContext): Promise { + return de_DeleteEdgeConfigurationCommand(output, context); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-kinesis-video/src/commands/DescribeEdgeConfigurationCommand.ts b/clients/client-kinesis-video/src/commands/DescribeEdgeConfigurationCommand.ts index e18c5c33a9d5..fbbbd8632978 100644 --- a/clients/client-kinesis-video/src/commands/DescribeEdgeConfigurationCommand.ts +++ b/clients/client-kinesis-video/src/commands/DescribeEdgeConfigurationCommand.ts @@ -40,9 +40,11 @@ export interface DescribeEdgeConfigurationCommandOutput extends DescribeEdgeConf /** * @public - *

Describes a stream’s edge configuration that was set using the StartEdgeConfigurationUpdate API. - * Use this API to get the status of the configuration if the configuration is in sync with the - * Edge Agent.

+ *

Describes a stream’s edge configuration that was set using the + * StartEdgeConfigurationUpdate API and the latest status of the edge + * agent's recorder and uploader jobs. Use this API to get the status of the configuration + * to determine if the configuration is in sync with the Edge Agent. Use this API to + * evaluate the health of the Edge Agent.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript @@ -60,7 +62,7 @@ export interface DescribeEdgeConfigurationCommandOutput extends DescribeEdgeConf * // StreamARN: "STRING_VALUE", * // CreationTime: new Date("TIMESTAMP"), * // LastUpdatedTime: new Date("TIMESTAMP"), - * // SyncStatus: "SYNCING" || "ACKNOWLEDGED" || "IN_SYNC" || "SYNC_FAILED" || "DELETING" || "DELETE_FAILED", + * // SyncStatus: "SYNCING" || "ACKNOWLEDGED" || "IN_SYNC" || "SYNC_FAILED" || "DELETING" || "DELETE_FAILED" || "DELETING_ACKNOWLEDGED", * // FailedStatusDetails: "STRING_VALUE", * // EdgeConfig: { // EdgeConfig * // HubDeviceArn: "STRING_VALUE", // required @@ -89,6 +91,20 @@ export interface DescribeEdgeConfigurationCommandOutput extends DescribeEdgeConf * // DeleteAfterUpload: true || false, * // }, * // }, + * // EdgeAgentStatus: { // EdgeAgentStatus + * // LastRecorderStatus: { // LastRecorderStatus + * // JobStatusDetails: "STRING_VALUE", + * // LastCollectedTime: new Date("TIMESTAMP"), + * // LastUpdatedTime: new Date("TIMESTAMP"), + * // RecorderStatus: "SUCCESS" || "USER_ERROR" || "SYSTEM_ERROR", + * // }, + * // LastUploaderStatus: { // LastUploaderStatus + * // JobStatusDetails: "STRING_VALUE", + * // LastCollectedTime: new Date("TIMESTAMP"), + * // LastUpdatedTime: new Date("TIMESTAMP"), + * // UploaderStatus: "SUCCESS" || "USER_ERROR" || "SYSTEM_ERROR", + * // }, + * // }, * // }; * * ``` diff --git a/clients/client-kinesis-video/src/commands/DescribeMappedResourceConfigurationCommand.ts b/clients/client-kinesis-video/src/commands/DescribeMappedResourceConfigurationCommand.ts index c72ad6656563..b5a9cd3a8deb 100644 --- a/clients/client-kinesis-video/src/commands/DescribeMappedResourceConfigurationCommand.ts +++ b/clients/client-kinesis-video/src/commands/DescribeMappedResourceConfigurationCommand.ts @@ -44,8 +44,7 @@ export interface DescribeMappedResourceConfigurationCommandOutput /** * @public - *

Returns the most current information about the stream. Either streamName or streamARN should be provided in the input.

- *

Returns the most current information about the stream. The streamName + *

Returns the most current information about the stream. The streamName * or streamARN should be provided in the input.

* @example * Use a bare-bones client and the command you need to make an API call. diff --git a/clients/client-kinesis-video/src/commands/ListEdgeAgentConfigurationsCommand.ts b/clients/client-kinesis-video/src/commands/ListEdgeAgentConfigurationsCommand.ts new file mode 100644 index 000000000000..6f8bbfcaeb3d --- /dev/null +++ b/clients/client-kinesis-video/src/commands/ListEdgeAgentConfigurationsCommand.ts @@ -0,0 +1,202 @@ +// smithy-typescript generated code +import { EndpointParameterInstructions, getEndpointPlugin } from "@aws-sdk/middleware-endpoint"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + HttpHandlerOptions as __HttpHandlerOptions, + MetadataBearer as __MetadataBearer, + MiddlewareStack, +} from "@aws-sdk/types"; +import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@smithy/protocol-http"; +import { SerdeContext as __SerdeContext } from "@smithy/types"; + +import { KinesisVideoClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../KinesisVideoClient"; +import { + ListEdgeAgentConfigurationsInput, + ListEdgeAgentConfigurationsOutput, + ListEdgeAgentConfigurationsOutputFilterSensitiveLog, +} from "../models/models_0"; +import { + de_ListEdgeAgentConfigurationsCommand, + se_ListEdgeAgentConfigurationsCommand, +} from "../protocols/Aws_restJson1"; + +/** + * @public + */ +export { __MetadataBearer, $Command }; +/** + * @public + * + * The input for {@link ListEdgeAgentConfigurationsCommand}. + */ +export interface ListEdgeAgentConfigurationsCommandInput extends ListEdgeAgentConfigurationsInput {} +/** + * @public + * + * The output of {@link ListEdgeAgentConfigurationsCommand}. + */ +export interface ListEdgeAgentConfigurationsCommandOutput extends ListEdgeAgentConfigurationsOutput, __MetadataBearer {} + +/** + * @public + *

Returns an array of edge configurations associated with the specified Edge Agent.

+ *

In the request, you must specify the Edge Agent HubDeviceArn.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { KinesisVideoClient, ListEdgeAgentConfigurationsCommand } from "@aws-sdk/client-kinesis-video"; // ES Modules import + * // const { KinesisVideoClient, ListEdgeAgentConfigurationsCommand } = require("@aws-sdk/client-kinesis-video"); // CommonJS import + * const client = new KinesisVideoClient(config); + * const input = { // ListEdgeAgentConfigurationsInput + * HubDeviceArn: "STRING_VALUE", // required + * MaxResults: Number("int"), + * NextToken: "STRING_VALUE", + * }; + * const command = new ListEdgeAgentConfigurationsCommand(input); + * const response = await client.send(command); + * // { // ListEdgeAgentConfigurationsOutput + * // EdgeConfigs: [ // ListEdgeAgentConfigurationsEdgeConfigList + * // { // ListEdgeAgentConfigurationsEdgeConfig + * // StreamName: "STRING_VALUE", + * // StreamARN: "STRING_VALUE", + * // CreationTime: new Date("TIMESTAMP"), + * // LastUpdatedTime: new Date("TIMESTAMP"), + * // SyncStatus: "SYNCING" || "ACKNOWLEDGED" || "IN_SYNC" || "SYNC_FAILED" || "DELETING" || "DELETE_FAILED" || "DELETING_ACKNOWLEDGED", + * // FailedStatusDetails: "STRING_VALUE", + * // EdgeConfig: { // EdgeConfig + * // HubDeviceArn: "STRING_VALUE", // required + * // RecorderConfig: { // RecorderConfig + * // MediaSourceConfig: { // MediaSourceConfig + * // MediaUriSecretArn: "STRING_VALUE", // required + * // MediaUriType: "RTSP_URI" || "FILE_URI", // required + * // }, + * // ScheduleConfig: { // ScheduleConfig + * // ScheduleExpression: "STRING_VALUE", // required + * // DurationInSeconds: Number("int"), // required + * // }, + * // }, + * // UploaderConfig: { // UploaderConfig + * // ScheduleConfig: { + * // ScheduleExpression: "STRING_VALUE", // required + * // DurationInSeconds: Number("int"), // required + * // }, + * // }, + * // DeletionConfig: { // DeletionConfig + * // EdgeRetentionInHours: Number("int"), + * // LocalSizeConfig: { // LocalSizeConfig + * // MaxLocalMediaSizeInMB: Number("int"), + * // StrategyOnFullSize: "DELETE_OLDEST_MEDIA" || "DENY_NEW_MEDIA", + * // }, + * // DeleteAfterUpload: true || false, + * // }, + * // }, + * // }, + * // ], + * // NextToken: "STRING_VALUE", + * // }; + * + * ``` + * + * @param ListEdgeAgentConfigurationsCommandInput - {@link ListEdgeAgentConfigurationsCommandInput} + * @returns {@link ListEdgeAgentConfigurationsCommandOutput} + * @see {@link ListEdgeAgentConfigurationsCommandInput} for command's `input` shape. + * @see {@link ListEdgeAgentConfigurationsCommandOutput} for command's `response` shape. + * @see {@link KinesisVideoClientResolvedConfig | config} for KinesisVideoClient's `config` shape. + * + * @throws {@link ClientLimitExceededException} (client fault) + *

Kinesis Video Streams has throttled the request because you have exceeded the limit of + * allowed client calls. Try making the call later.

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

The value for this input parameter is invalid.

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

The caller is not authorized to perform this operation.

+ * + * @throws {@link KinesisVideoServiceException} + *

Base exception class for all service exceptions from KinesisVideo service.

+ * + */ +export class ListEdgeAgentConfigurationsCommand extends $Command< + ListEdgeAgentConfigurationsCommandInput, + ListEdgeAgentConfigurationsCommandOutput, + KinesisVideoClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + public static getEndpointParameterInstructions(): EndpointParameterInstructions { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, + }; + } + + /** + * @public + */ + constructor(readonly input: ListEdgeAgentConfigurationsCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + /** + * @internal + */ + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: KinesisVideoClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler { + this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use( + getEndpointPlugin(configuration, ListEdgeAgentConfigurationsCommand.getEndpointParameterInstructions()) + ); + + const stack = clientStack.concat(this.middlewareStack); + + const { logger } = configuration; + const clientName = "KinesisVideoClient"; + const commandName = "ListEdgeAgentConfigurationsCommand"; + const handlerExecutionContext: HandlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_: any) => _, + outputFilterSensitiveLog: ListEdgeAgentConfigurationsOutputFilterSensitiveLog, + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + /** + * @internal + */ + private serialize(input: ListEdgeAgentConfigurationsCommandInput, context: __SerdeContext): Promise<__HttpRequest> { + return se_ListEdgeAgentConfigurationsCommand(input, context); + } + + /** + * @internal + */ + private deserialize( + output: __HttpResponse, + context: __SerdeContext + ): Promise { + return de_ListEdgeAgentConfigurationsCommand(output, context); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-kinesis-video/src/commands/StartEdgeConfigurationUpdateCommand.ts b/clients/client-kinesis-video/src/commands/StartEdgeConfigurationUpdateCommand.ts index b3cde275b85e..c678476ca801 100644 --- a/clients/client-kinesis-video/src/commands/StartEdgeConfigurationUpdateCommand.ts +++ b/clients/client-kinesis-video/src/commands/StartEdgeConfigurationUpdateCommand.ts @@ -102,7 +102,7 @@ export interface StartEdgeConfigurationUpdateCommandOutput * // StreamARN: "STRING_VALUE", * // CreationTime: new Date("TIMESTAMP"), * // LastUpdatedTime: new Date("TIMESTAMP"), - * // SyncStatus: "SYNCING" || "ACKNOWLEDGED" || "IN_SYNC" || "SYNC_FAILED" || "DELETING" || "DELETE_FAILED", + * // SyncStatus: "SYNCING" || "ACKNOWLEDGED" || "IN_SYNC" || "SYNC_FAILED" || "DELETING" || "DELETE_FAILED" || "DELETING_ACKNOWLEDGED", * // FailedStatusDetails: "STRING_VALUE", * // EdgeConfig: { // EdgeConfig * // HubDeviceArn: "STRING_VALUE", // required diff --git a/clients/client-kinesis-video/src/commands/index.ts b/clients/client-kinesis-video/src/commands/index.ts index b9df0da88dfb..edccc5f8913b 100644 --- a/clients/client-kinesis-video/src/commands/index.ts +++ b/clients/client-kinesis-video/src/commands/index.ts @@ -1,6 +1,7 @@ // smithy-typescript generated code export * from "./CreateSignalingChannelCommand"; export * from "./CreateStreamCommand"; +export * from "./DeleteEdgeConfigurationCommand"; export * from "./DeleteSignalingChannelCommand"; export * from "./DeleteStreamCommand"; export * from "./DescribeEdgeConfigurationCommand"; @@ -12,6 +13,7 @@ export * from "./DescribeSignalingChannelCommand"; export * from "./DescribeStreamCommand"; export * from "./GetDataEndpointCommand"; export * from "./GetSignalingChannelEndpointCommand"; +export * from "./ListEdgeAgentConfigurationsCommand"; export * from "./ListSignalingChannelsCommand"; export * from "./ListStreamsCommand"; export * from "./ListTagsForResourceCommand"; diff --git a/clients/client-kinesis-video/src/endpoint/EndpointParameters.ts b/clients/client-kinesis-video/src/endpoint/EndpointParameters.ts index 8904d8add615..9197478e4e3d 100644 --- a/clients/client-kinesis-video/src/endpoint/EndpointParameters.ts +++ b/clients/client-kinesis-video/src/endpoint/EndpointParameters.ts @@ -25,7 +25,7 @@ export const resolveClientEndpointParameters = ( }; export interface EndpointParameters extends __EndpointParameters { - Region: string; + Region?: string; UseDualStack?: boolean; UseFIPS?: boolean; Endpoint?: string; diff --git a/clients/client-kinesis-video/src/endpoint/ruleset.ts b/clients/client-kinesis-video/src/endpoint/ruleset.ts index 480b52742eca..2b65c45b09e4 100644 --- a/clients/client-kinesis-video/src/endpoint/ruleset.ts +++ b/clients/client-kinesis-video/src/endpoint/ruleset.ts @@ -6,24 +6,25 @@ import { RuleSetObject } from "@aws-sdk/util-endpoints"; or see "smithy.rules#endpointRuleSet" in codegen/sdk-codegen/aws-models/kinesis-video.json */ -const q="fn", -r="argv", -s="ref"; -const a=true, -b=false, -c="String", -d="PartitionResult", -e="tree", -f="error", -g="endpoint", -h={"required":true,"default":false,"type":"Boolean"}, -i={[s]:"Endpoint"}, -j={[q]:"booleanEquals",[r]:[{[s]:"UseFIPS"},true]}, -k={[q]:"booleanEquals",[r]:[{[s]:"UseDualStack"},true]}, -l={}, -m={[q]:"booleanEquals",[r]:[true,{[q]:"getAttr",[r]:[{[s]:d},"supportsFIPS"]}]}, -n={[q]:"booleanEquals",[r]:[true,{[q]:"getAttr",[r]:[{[s]:d},"supportsDualStack"]}]}, +const q="required", +r="fn", +s="argv", +t="ref"; +const a="isSet", +b="tree", +c="error", +d="endpoint", +e="PartitionResult", +f={[q]:false,"type":"String"}, +g={[q]:true,"default":false,"type":"Boolean"}, +h={[t]:"Endpoint"}, +i={[r]:"booleanEquals",[s]:[{[t]:"UseFIPS"},true]}, +j={[r]:"booleanEquals",[s]:[{[t]:"UseDualStack"},true]}, +k={}, +l={[r]:"booleanEquals",[s]:[true,{[r]:"getAttr",[s]:[{[t]:e},"supportsFIPS"]}]}, +m={[r]:"booleanEquals",[s]:[true,{[r]:"getAttr",[s]:[{[t]:e},"supportsDualStack"]}]}, +n=[i], o=[j], -p=[k]; -const _data={version:"1.0",parameters:{Region:{required:a,type:c},UseDualStack:h,UseFIPS:h,Endpoint:{required:b,type:c}},rules:[{conditions:[{[q]:"aws.partition",[r]:[{[s]:"Region"}],assign:d}],type:e,rules:[{conditions:[{[q]:"isSet",[r]:[i]}],type:e,rules:[{conditions:o,error:"Invalid Configuration: FIPS and custom endpoint are not supported",type:f},{type:e,rules:[{conditions:p,error:"Invalid Configuration: Dualstack and custom endpoint are not supported",type:f},{endpoint:{url:i,properties:l,headers:l},type:g}]}]},{conditions:[j,k],type:e,rules:[{conditions:[m,n],type:e,rules:[{endpoint:{url:"https://kinesisvideo-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:l,headers:l},type:g}]},{error:"FIPS and DualStack are enabled, but this partition does not support one or both",type:f}]},{conditions:o,type:e,rules:[{conditions:[m],type:e,rules:[{type:e,rules:[{endpoint:{url:"https://kinesisvideo-fips.{Region}.{PartitionResult#dnsSuffix}",properties:l,headers:l},type:g}]}]},{error:"FIPS is enabled but this partition does not support FIPS",type:f}]},{conditions:p,type:e,rules:[{conditions:[n],type:e,rules:[{endpoint:{url:"https://kinesisvideo.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:l,headers:l},type:g}]},{error:"DualStack is enabled but this partition does not support DualStack",type:f}]},{endpoint:{url:"https://kinesisvideo.{Region}.{PartitionResult#dnsSuffix}",properties:l,headers:l},type:g}]}]}; +p=[{[t]:"Region"}]; +const _data={version:"1.0",parameters:{Region:f,UseDualStack:g,UseFIPS:g,Endpoint:f},rules:[{conditions:[{[r]:a,[s]:[h]}],type:b,rules:[{conditions:n,error:"Invalid Configuration: FIPS and custom endpoint are not supported",type:c},{type:b,rules:[{conditions:o,error:"Invalid Configuration: Dualstack and custom endpoint are not supported",type:c},{endpoint:{url:h,properties:k,headers:k},type:d}]}]},{type:b,rules:[{conditions:[{[r]:a,[s]:p}],type:b,rules:[{conditions:[{[r]:"aws.partition",[s]:p,assign:e}],type:b,rules:[{conditions:[i,j],type:b,rules:[{conditions:[l,m],type:b,rules:[{type:b,rules:[{endpoint:{url:"https://kinesisvideo-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:k,headers:k},type:d}]}]},{error:"FIPS and DualStack are enabled, but this partition does not support one or both",type:c}]},{conditions:n,type:b,rules:[{conditions:[l],type:b,rules:[{type:b,rules:[{endpoint:{url:"https://kinesisvideo-fips.{Region}.{PartitionResult#dnsSuffix}",properties:k,headers:k},type:d}]}]},{error:"FIPS is enabled but this partition does not support FIPS",type:c}]},{conditions:o,type:b,rules:[{conditions:[m],type:b,rules:[{type:b,rules:[{endpoint:{url:"https://kinesisvideo.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:k,headers:k},type:d}]}]},{error:"DualStack is enabled but this partition does not support DualStack",type:c}]},{type:b,rules:[{endpoint:{url:"https://kinesisvideo.{Region}.{PartitionResult#dnsSuffix}",properties:k,headers:k},type:d}]}]}]},{error:"Invalid Configuration: Missing Region",type:c}]}]}; export const ruleSet: RuleSetObject = _data; diff --git a/clients/client-kinesis-video/src/models/models_0.ts b/clients/client-kinesis-video/src/models/models_0.ts index c0c8779475bf..47d8376f21db 100644 --- a/clients/client-kinesis-video/src/models/models_0.ts +++ b/clients/client-kinesis-video/src/models/models_0.ts @@ -446,7 +446,7 @@ export interface CreateStreamInput { *

The ID of the Key Management Service (KMS) key that you want Kinesis Video * Streams to use to encrypt stream data.

*

If no key ID is specified, the default, Kinesis Video-managed key - * (aws/kinesisvideo) is used.

+ * (Amazon Web Services/kinesisvideo) is used.

*

For more information, see DescribeKey.

*/ KmsKeyId?: string; @@ -526,25 +526,22 @@ export class InvalidDeviceException extends __BaseException { /** * @public */ -export interface DeleteSignalingChannelInput { +export interface DeleteEdgeConfigurationInput { /** - *

The Amazon Resource Name (ARN) of the signaling channel that you want to - * delete.

+ *

The name of the stream from which to delete the edge configuration. Specify either the StreamName or the StreamARN.

*/ - ChannelARN: string | undefined; + StreamName?: string; /** - *

The current version of the signaling channel that you want to delete. You can obtain - * the current version by invoking the DescribeSignalingChannel or - * ListSignalingChannels API operations.

+ *

The Amazon Resource Name (ARN) of the stream. Specify either the StreamName or the StreamARN.

*/ - CurrentVersion?: string; + StreamARN?: string; } /** * @public */ -export interface DeleteSignalingChannelOutput {} +export interface DeleteEdgeConfigurationOutput {} /** * @public @@ -568,6 +565,52 @@ export class ResourceNotFoundException extends __BaseException { } } +/** + * @public + *

The Exception rendered when the Amazon Kinesis Video Stream can't find a stream's edge configuration + * that you specified.

+ */ +export class StreamEdgeConfigurationNotFoundException extends __BaseException { + readonly name: "StreamEdgeConfigurationNotFoundException" = "StreamEdgeConfigurationNotFoundException"; + readonly $fault: "client" = "client"; + Message?: string; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType) { + super({ + name: "StreamEdgeConfigurationNotFoundException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, StreamEdgeConfigurationNotFoundException.prototype); + this.Message = opts.Message; + } +} + +/** + * @public + */ +export interface DeleteSignalingChannelInput { + /** + *

The Amazon Resource Name (ARN) of the signaling channel that you want to + * delete.

+ */ + ChannelARN: string | undefined; + + /** + *

The current version of the signaling channel that you want to delete. You can obtain + * the current version by invoking the DescribeSignalingChannel or + * ListSignalingChannels API operations.

+ */ + CurrentVersion?: string; +} + +/** + * @public + */ +export interface DeleteSignalingChannelOutput {} + /** * @public *

The stream version that you specified is not the latest version. To get the latest @@ -694,7 +737,7 @@ export interface DeletionConfig { * MaxLocalMediaSizeInMB, has been reached. *

*

Since the default value is set to true, configure the uploader schedule such - * that the media files are not being deleted before they are initially uploaded to AWS cloud.

+ * that the media files are not being deleted before they are initially uploaded to the Amazon Web Services cloud.

*/ DeleteAfterUpload?: boolean; } @@ -716,6 +759,104 @@ export interface DescribeEdgeConfigurationInput { StreamARN?: string; } +/** + * @public + * @enum + */ +export const RecorderStatus = { + SUCCESS: "SUCCESS", + SYSTEM_ERROR: "SYSTEM_ERROR", + USER_ERROR: "USER_ERROR", +} as const; + +/** + * @public + */ +export type RecorderStatus = (typeof RecorderStatus)[keyof typeof RecorderStatus]; + +/** + * @public + *

The latest status of a stream's edge recording job.

+ */ +export interface LastRecorderStatus { + /** + *

A description of a recorder job’s latest status.

+ */ + JobStatusDetails?: string; + + /** + *

The timestamp at which the recorder job was last executed and media stored to local disk.

+ */ + LastCollectedTime?: Date; + + /** + *

The timestamp at which the recorder status was last updated.

+ */ + LastUpdatedTime?: Date; + + /** + *

The status of the latest recorder job.

+ */ + RecorderStatus?: RecorderStatus | string; +} + +/** + * @public + * @enum + */ +export const UploaderStatus = { + SUCCESS: "SUCCESS", + SYSTEM_ERROR: "SYSTEM_ERROR", + USER_ERROR: "USER_ERROR", +} as const; + +/** + * @public + */ +export type UploaderStatus = (typeof UploaderStatus)[keyof typeof UploaderStatus]; + +/** + * @public + *

The latest status of a stream’s edge to cloud uploader job.

+ */ +export interface LastUploaderStatus { + /** + *

A description of an uploader job’s latest status.

+ */ + JobStatusDetails?: string; + + /** + *

The timestamp at which the uploader job was last executed and media collected to the cloud.

+ */ + LastCollectedTime?: Date; + + /** + *

The timestamp at which the uploader status was last updated.

+ */ + LastUpdatedTime?: Date; + + /** + *

The status of the latest uploader job.

+ */ + UploaderStatus?: UploaderStatus | string; +} + +/** + * @public + *

An object that contains the latest status details for an edge agent's recorder and uploader jobs. Use this information to determine the current health of an edge agent.

+ */ +export interface EdgeAgentStatus { + /** + *

The latest status of a stream’s edge recording job.

+ */ + LastRecorderStatus?: LastRecorderStatus; + + /** + *

The latest status of a stream’s edge to cloud uploader job.

+ */ + LastUploaderStatus?: LastUploaderStatus; +} + /** * @public * @enum @@ -738,7 +879,7 @@ export type MediaUriType = (typeof MediaUriType)[keyof typeof MediaUriType]; */ export interface MediaSourceConfig { /** - *

The AWS Secrets Manager ARN for the username and password of the camera, or a local media file location.

+ *

The Amazon Web Services Secrets Manager ARN for the username and password of the camera, or a local media file location.

*/ MediaUriSecretArn: string | undefined; @@ -757,8 +898,10 @@ export interface MediaSourceConfig { *

This API enables you to specify the duration that the camera, * or local media file, should record onto the Edge Agent. The ScheduleConfig consists of the ScheduleExpression and the * DurationInMinutes attributes.

- *

If the ScheduleExpression is not provided, + *

If the ScheduleConfig is not provided in the RecorderConfig, * then the Edge Agent will always be set to recording mode.

+ *

If the ScheduleConfig is not provided in the UploaderConfig, + * then the Edge Agent will upload at regular intervals (every 1 hour).

*/ export interface ScheduleConfig { /** @@ -805,17 +948,17 @@ export interface RecorderConfig { /** * @public *

The configuration that consists of the ScheduleExpression - * and the DurationInMinutesdetails, that specify the scheduling to record from a camera, - * or local media file, onto the Edge Agent. If the ScheduleExpression - * is not provided, then the Edge Agent will always be in upload mode. + * and the DurationInMinutes details that specify the scheduling to record from a camera, + * or local media file, onto the Edge Agent. If the ScheduleConfig + * is not provided in the UploaderConfig, then the Edge Agent will upload at regular intervals (every 1 hour). *

*/ export interface UploaderConfig { /** *

The configuration that consists of the ScheduleExpression and the - * DurationInMinutesdetails that specify the scheduling to record from a camera, or - * local media file, onto the Edge Agent. If the ScheduleExpression is not provided, - * then the Edge Agent will always be in recording mode.

+ * DurationInMinutes details that specify the scheduling to record from a camera, or + * local media file, onto the Edge Agent. If the ScheduleConfig is not provided in this UploaderConfig, + * then the Edge Agent will upload at regular intervals (every 1 hour).

*/ ScheduleConfig: ScheduleConfig | undefined; } @@ -859,6 +1002,7 @@ export const SyncStatus = { ACKNOWLEDGED: "ACKNOWLEDGED", DELETE_FAILED: "DELETE_FAILED", DELETING: "DELETING", + DELETING_ACKNOWLEDGED: "DELETING_ACKNOWLEDGED", IN_SYNC: "IN_SYNC", SYNCING: "SYNCING", SYNC_FAILED: "SYNC_FAILED", @@ -909,29 +1053,11 @@ export interface DescribeEdgeConfigurationOutput { * on an IoT Hub Device setup at your premise.

*/ EdgeConfig?: EdgeConfig; -} -/** - * @public - *

The Exception rendered when the Amazon Kinesis Video Stream can't find a stream's edge configuration - * that you specified.

- */ -export class StreamEdgeConfigurationNotFoundException extends __BaseException { - readonly name: "StreamEdgeConfigurationNotFoundException" = "StreamEdgeConfigurationNotFoundException"; - readonly $fault: "client" = "client"; - Message?: string; /** - * @internal + *

An object that contains the latest status details for an edge agent's recorder and uploader jobs. Use this information to determine the current health of an edge agent.

*/ - constructor(opts: __ExceptionOptionType) { - super({ - name: "StreamEdgeConfigurationNotFoundException", - $fault: "client", - ...opts, - }); - Object.setPrototypeOf(this, StreamEdgeConfigurationNotFoundException.prototype); - this.Message = opts.Message; - } + EdgeAgentStatus?: EdgeAgentStatus; } /** @@ -960,7 +1086,7 @@ export interface ImageGenerationDestinationConfig { Uri: string | undefined; /** - *

The AWS Region of the S3 bucket where images will be delivered. This DestinationRegion must match the Region where the stream is located.

+ *

The Amazon Web Services Region of the S3 bucket where images will be delivered. This DestinationRegion must match the Region where the stream is located.

*/ DestinationRegion: string | undefined; } @@ -1420,6 +1546,7 @@ export interface GetSignalingChannelEndpointInput { * @public *

An object that describes the endpoint of the signaling channel returned by the * GetSignalingChannelEndpoint API.

+ *

The media server endpoint will correspond to the WEBRTC Protocol.

*/ export interface ResourceEndpointListItem { /** @@ -1467,6 +1594,85 @@ export class InvalidResourceFormatException extends __BaseException { } } +/** + * @public + */ +export interface ListEdgeAgentConfigurationsInput { + /** + *

The "Internet of Things (IoT) Thing" Arn of the edge agent.

+ */ + HubDeviceArn: string | undefined; + + /** + *

The maximum number of edge configurations to return in the response. The default is 5.

+ */ + MaxResults?: number; + + /** + *

If you specify this parameter, when the result of a ListEdgeAgentConfigurations operation is truncated, the call returns the NextToken in the response. To get another batch of edge configurations, provide this token in your next request. + *

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

A description of a single stream's edge configuration.

+ */ +export interface ListEdgeAgentConfigurationsEdgeConfig { + /** + *

The name of the stream.

+ */ + StreamName?: string; + + /** + *

The Amazon Resource Name (ARN) of the stream.

+ */ + StreamARN?: string; + + /** + *

The timestamp when the stream first created the edge config.

+ */ + CreationTime?: Date; + + /** + *

The timestamp when the stream last updated the edge config.

+ */ + LastUpdatedTime?: Date; + + /** + *

The current sync status of the stream's edge configuration.

+ */ + SyncStatus?: SyncStatus | string; + + /** + *

A description of the generated failure status.

+ */ + FailedStatusDetails?: string; + + /** + *

A description of the stream's edge configuration that will be used to sync + * with the Edge Agent IoT Greengrass component. The Edge Agent component will run + * on an IoT Hub Device setup at your premise.

+ */ + EdgeConfig?: EdgeConfig; +} + +/** + * @public + */ +export interface ListEdgeAgentConfigurationsOutput { + /** + *

A description of a single stream's edge configuration.

+ */ + EdgeConfigs?: ListEdgeAgentConfigurationsEdgeConfig[]; + + /** + *

If the response is truncated, the call returns this element with a given token. To get the next batch of edge configurations, use this token in your next request.

+ */ + NextToken?: string; +} + /** * @public */ @@ -2056,6 +2262,26 @@ export const DescribeEdgeConfigurationOutputFilterSensitiveLog = (obj: DescribeE ...(obj.EdgeConfig && { EdgeConfig: EdgeConfigFilterSensitiveLog(obj.EdgeConfig) }), }); +/** + * @internal + */ +export const ListEdgeAgentConfigurationsEdgeConfigFilterSensitiveLog = ( + obj: ListEdgeAgentConfigurationsEdgeConfig +): any => ({ + ...obj, + ...(obj.EdgeConfig && { EdgeConfig: EdgeConfigFilterSensitiveLog(obj.EdgeConfig) }), +}); + +/** + * @internal + */ +export const ListEdgeAgentConfigurationsOutputFilterSensitiveLog = (obj: ListEdgeAgentConfigurationsOutput): any => ({ + ...obj, + ...(obj.EdgeConfigs && { + EdgeConfigs: obj.EdgeConfigs.map((item) => ListEdgeAgentConfigurationsEdgeConfigFilterSensitiveLog(item)), + }), +}); + /** * @internal */ diff --git a/clients/client-kinesis-video/src/pagination/ListEdgeAgentConfigurationsPaginator.ts b/clients/client-kinesis-video/src/pagination/ListEdgeAgentConfigurationsPaginator.ts new file mode 100644 index 000000000000..2a63ebaf9b4d --- /dev/null +++ b/clients/client-kinesis-video/src/pagination/ListEdgeAgentConfigurationsPaginator.ts @@ -0,0 +1,50 @@ +// smithy-typescript generated code +import { Paginator } from "@aws-sdk/types"; + +import { + ListEdgeAgentConfigurationsCommand, + ListEdgeAgentConfigurationsCommandInput, + ListEdgeAgentConfigurationsCommandOutput, +} from "../commands/ListEdgeAgentConfigurationsCommand"; +import { KinesisVideoClient } from "../KinesisVideoClient"; +import { KinesisVideoPaginationConfiguration } from "./Interfaces"; + +/** + * @internal + */ +const makePagedClientRequest = async ( + client: KinesisVideoClient, + input: ListEdgeAgentConfigurationsCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.send(new ListEdgeAgentConfigurationsCommand(input), ...args); +}; +/** + * @public + */ +export async function* paginateListEdgeAgentConfigurations( + config: KinesisVideoPaginationConfiguration, + input: ListEdgeAgentConfigurationsCommandInput, + ...additionalArguments: any +): Paginator { + // ToDo: replace with actual type instead of typeof input.NextToken + let token: typeof input.NextToken | undefined = config.startingToken || undefined; + let hasNext = true; + let page: ListEdgeAgentConfigurationsCommandOutput; + while (hasNext) { + input.NextToken = token; + input["MaxResults"] = config.pageSize; + if (config.client instanceof KinesisVideoClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected KinesisVideo | KinesisVideoClient"); + } + yield page; + const prevToken = token; + token = page.NextToken; + hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); + } + // @ts-ignore + return undefined; +} diff --git a/clients/client-kinesis-video/src/pagination/index.ts b/clients/client-kinesis-video/src/pagination/index.ts index 8a40b8c97ec8..8d1430202c3f 100644 --- a/clients/client-kinesis-video/src/pagination/index.ts +++ b/clients/client-kinesis-video/src/pagination/index.ts @@ -1,5 +1,6 @@ export * from "./DescribeMappedResourceConfigurationPaginator"; // smithy-typescript generated code export * from "./Interfaces"; +export * from "./ListEdgeAgentConfigurationsPaginator"; export * from "./ListSignalingChannelsPaginator"; export * from "./ListStreamsPaginator"; diff --git a/clients/client-kinesis-video/src/protocols/Aws_restJson1.ts b/clients/client-kinesis-video/src/protocols/Aws_restJson1.ts index 08fb6078de13..80513e084ead 100644 --- a/clients/client-kinesis-video/src/protocols/Aws_restJson1.ts +++ b/clients/client-kinesis-video/src/protocols/Aws_restJson1.ts @@ -22,6 +22,10 @@ import { CreateSignalingChannelCommandOutput, } from "../commands/CreateSignalingChannelCommand"; import { CreateStreamCommandInput, CreateStreamCommandOutput } from "../commands/CreateStreamCommand"; +import { + DeleteEdgeConfigurationCommandInput, + DeleteEdgeConfigurationCommandOutput, +} from "../commands/DeleteEdgeConfigurationCommand"; import { DeleteSignalingChannelCommandInput, DeleteSignalingChannelCommandOutput, @@ -57,6 +61,10 @@ import { GetSignalingChannelEndpointCommandInput, GetSignalingChannelEndpointCommandOutput, } from "../commands/GetSignalingChannelEndpointCommand"; +import { + ListEdgeAgentConfigurationsCommandInput, + ListEdgeAgentConfigurationsCommandOutput, +} from "../commands/ListEdgeAgentConfigurationsCommand"; import { ListSignalingChannelsCommandInput, ListSignalingChannelsCommandOutput, @@ -107,12 +115,16 @@ import { ClientLimitExceededException, DeletionConfig, DeviceStreamLimitExceededException, + EdgeAgentStatus, EdgeConfig, ImageGenerationConfiguration, ImageGenerationDestinationConfig, InvalidArgumentException, InvalidDeviceException, InvalidResourceFormatException, + LastRecorderStatus, + LastUploaderStatus, + ListEdgeAgentConfigurationsEdgeConfig, LocalSizeConfig, MediaSourceConfig, MediaStorageConfiguration, @@ -202,6 +214,37 @@ export const se_CreateStreamCommand = async ( }); }; +/** + * serializeAws_restJson1DeleteEdgeConfigurationCommand + */ +export const se_DeleteEdgeConfigurationCommand = async ( + input: DeleteEdgeConfigurationCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const headers: any = { + "content-type": "application/json", + }; + const resolvedPath = + `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + "/deleteEdgeConfiguration"; + let body: any; + body = JSON.stringify( + take(input, { + StreamARN: [], + StreamName: [], + }) + ); + return new __HttpRequest({ + protocol, + hostname, + port, + method: "POST", + headers, + path: resolvedPath, + body, + }); +}; + /** * serializeAws_restJson1DeleteSignalingChannelCommand */ @@ -543,6 +586,38 @@ export const se_GetSignalingChannelEndpointCommand = async ( }); }; +/** + * serializeAws_restJson1ListEdgeAgentConfigurationsCommand + */ +export const se_ListEdgeAgentConfigurationsCommand = async ( + input: ListEdgeAgentConfigurationsCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const headers: any = { + "content-type": "application/json", + }; + const resolvedPath = + `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + "/listEdgeAgentConfigurations"; + let body: any; + body = JSON.stringify( + take(input, { + HubDeviceArn: [], + MaxResults: [], + NextToken: [], + }) + ); + return new __HttpRequest({ + protocol, + hostname, + port, + method: "POST", + headers, + path: resolvedPath, + body, + }); +}; + /** * serializeAws_restJson1ListSignalingChannelsCommand */ @@ -1140,6 +1215,61 @@ const de_CreateStreamCommandError = async ( } }; +/** + * deserializeAws_restJson1DeleteEdgeConfigurationCommand + */ +export const de_DeleteEdgeConfigurationCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_DeleteEdgeConfigurationCommandError(output, context); + } + const contents: any = map({ + $metadata: deserializeMetadata(output), + }); + await collectBody(output.body, context); + return contents; +}; + +/** + * deserializeAws_restJson1DeleteEdgeConfigurationCommandError + */ +const de_DeleteEdgeConfigurationCommandError = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + const parsedOutput: any = { + ...output, + body: await parseErrorBody(output.body, context), + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "AccessDeniedException": + case "com.amazonaws.kinesisvideo#AccessDeniedException": + throw await de_AccessDeniedExceptionRes(parsedOutput, context); + case "ClientLimitExceededException": + case "com.amazonaws.kinesisvideo#ClientLimitExceededException": + throw await de_ClientLimitExceededExceptionRes(parsedOutput, context); + case "InvalidArgumentException": + case "com.amazonaws.kinesisvideo#InvalidArgumentException": + throw await de_InvalidArgumentExceptionRes(parsedOutput, context); + case "ResourceNotFoundException": + case "com.amazonaws.kinesisvideo#ResourceNotFoundException": + throw await de_ResourceNotFoundExceptionRes(parsedOutput, context); + case "StreamEdgeConfigurationNotFoundException": + case "com.amazonaws.kinesisvideo#StreamEdgeConfigurationNotFoundException": + throw await de_StreamEdgeConfigurationNotFoundExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode, + }); + } +}; + /** * deserializeAws_restJson1DeleteSignalingChannelCommand */ @@ -1272,6 +1402,7 @@ export const de_DescribeEdgeConfigurationCommand = async ( const data: Record = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body"); const doc = take(data, { CreationTime: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), + EdgeAgentStatus: (_) => de_EdgeAgentStatus(_, context), EdgeConfig: _json, FailedStatusDetails: __expectString, LastUpdatedTime: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), @@ -1773,6 +1904,60 @@ const de_GetSignalingChannelEndpointCommandError = async ( } }; +/** + * deserializeAws_restJson1ListEdgeAgentConfigurationsCommand + */ +export const de_ListEdgeAgentConfigurationsCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_ListEdgeAgentConfigurationsCommandError(output, context); + } + const contents: any = map({ + $metadata: deserializeMetadata(output), + }); + const data: Record = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body"); + const doc = take(data, { + EdgeConfigs: (_) => de_ListEdgeAgentConfigurationsEdgeConfigList(_, context), + NextToken: __expectString, + }); + Object.assign(contents, doc); + return contents; +}; + +/** + * deserializeAws_restJson1ListEdgeAgentConfigurationsCommandError + */ +const de_ListEdgeAgentConfigurationsCommandError = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + const parsedOutput: any = { + ...output, + body: await parseErrorBody(output.body, context), + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "ClientLimitExceededException": + case "com.amazonaws.kinesisvideo#ClientLimitExceededException": + throw await de_ClientLimitExceededExceptionRes(parsedOutput, context); + case "InvalidArgumentException": + case "com.amazonaws.kinesisvideo#InvalidArgumentException": + throw await de_InvalidArgumentExceptionRes(parsedOutput, context); + case "NotAuthorizedException": + case "com.amazonaws.kinesisvideo#NotAuthorizedException": + throw await de_NotAuthorizedExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode, + }); + } +}; + /** * deserializeAws_restJson1ListSignalingChannelsCommand */ @@ -3007,6 +3192,16 @@ const de_ChannelInfoList = (output: any, context: __SerdeContext): ChannelInfo[] // de_DeletionConfig omitted. +/** + * deserializeAws_restJson1EdgeAgentStatus + */ +const de_EdgeAgentStatus = (output: any, context: __SerdeContext): EdgeAgentStatus => { + return take(output, { + LastRecorderStatus: (_: any) => de_LastRecorderStatus(_, context), + LastUploaderStatus: (_: any) => de_LastUploaderStatus(_, context), + }) as any; +}; + // de_EdgeConfig omitted. // de_FormatConfig omitted. @@ -3015,6 +3210,63 @@ const de_ChannelInfoList = (output: any, context: __SerdeContext): ChannelInfo[] // de_ImageGenerationDestinationConfig omitted. +/** + * deserializeAws_restJson1LastRecorderStatus + */ +const de_LastRecorderStatus = (output: any, context: __SerdeContext): LastRecorderStatus => { + return take(output, { + JobStatusDetails: __expectString, + LastCollectedTime: (_: any) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), + LastUpdatedTime: (_: any) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), + RecorderStatus: __expectString, + }) as any; +}; + +/** + * deserializeAws_restJson1LastUploaderStatus + */ +const de_LastUploaderStatus = (output: any, context: __SerdeContext): LastUploaderStatus => { + return take(output, { + JobStatusDetails: __expectString, + LastCollectedTime: (_: any) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), + LastUpdatedTime: (_: any) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), + UploaderStatus: __expectString, + }) as any; +}; + +/** + * deserializeAws_restJson1ListEdgeAgentConfigurationsEdgeConfig + */ +const de_ListEdgeAgentConfigurationsEdgeConfig = ( + output: any, + context: __SerdeContext +): ListEdgeAgentConfigurationsEdgeConfig => { + return take(output, { + CreationTime: (_: any) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), + EdgeConfig: _json, + FailedStatusDetails: __expectString, + LastUpdatedTime: (_: any) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), + StreamARN: __expectString, + StreamName: __expectString, + SyncStatus: __expectString, + }) as any; +}; + +/** + * deserializeAws_restJson1ListEdgeAgentConfigurationsEdgeConfigList + */ +const de_ListEdgeAgentConfigurationsEdgeConfigList = ( + output: any, + context: __SerdeContext +): ListEdgeAgentConfigurationsEdgeConfig[] => { + const retVal = (output || []) + .filter((e: any) => e != null) + .map((entry: any) => { + return de_ListEdgeAgentConfigurationsEdgeConfig(entry, context); + }); + return retVal; +}; + // de_LocalSizeConfig omitted. // de_MappedResourceConfigurationList omitted. diff --git a/codegen/sdk-codegen/aws-models/kinesis-video.json b/codegen/sdk-codegen/aws-models/kinesis-video.json index 4c7f11b81f59..21b823b512dc 100644 --- a/codegen/sdk-codegen/aws-models/kinesis-video.json +++ b/codegen/sdk-codegen/aws-models/kinesis-video.json @@ -370,6 +370,9 @@ "smithy.api#documentation": "

A set of tags (key-value pairs) that you want to associate with this channel.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#CreateSignalingChannelOutput": { @@ -381,6 +384,9 @@ "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the created channel.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#CreateStream": { @@ -448,7 +454,7 @@ "KmsKeyId": { "target": "com.amazonaws.kinesisvideo#KmsKeyId", "traits": { - "smithy.api#documentation": "

The ID of the Key Management Service (KMS) key that you want Kinesis Video\n Streams to use to encrypt stream data.

\n

If no key ID is specified, the default, Kinesis Video-managed key\n (aws/kinesisvideo) is used.

\n

For more information, see DescribeKey.

" + "smithy.api#documentation": "

The ID of the Key Management Service (KMS) key that you want Kinesis Video\n Streams to use to encrypt stream data.

\n

If no key ID is specified, the default, Kinesis Video-managed key\n (Amazon Web Services/kinesisvideo) is used.

\n

For more information, see DescribeKey.

" } }, "DataRetentionInHours": { @@ -463,6 +469,9 @@ "smithy.api#documentation": "

A list of tags to associate with the specified stream. Each tag is a key-value pair\n (the value is optional).

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#CreateStreamOutput": { @@ -474,6 +483,9 @@ "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the stream.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#DataEndpoint": { @@ -498,6 +510,67 @@ "com.amazonaws.kinesisvideo#DeleteAfterUpload": { "type": "boolean" }, + "com.amazonaws.kinesisvideo#DeleteEdgeConfiguration": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesisvideo#DeleteEdgeConfigurationInput" + }, + "output": { + "target": "com.amazonaws.kinesisvideo#DeleteEdgeConfigurationOutput" + }, + "errors": [ + { + "target": "com.amazonaws.kinesisvideo#AccessDeniedException" + }, + { + "target": "com.amazonaws.kinesisvideo#ClientLimitExceededException" + }, + { + "target": "com.amazonaws.kinesisvideo#InvalidArgumentException" + }, + { + "target": "com.amazonaws.kinesisvideo#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.kinesisvideo#StreamEdgeConfigurationNotFoundException" + } + ], + "traits": { + "smithy.api#documentation": "

An asynchronous API that deletes a stream’s existing edge configuration, as well as the corresponding media from the Edge Agent.

\n

When you invoke this API, the sync status is set to DELETING. A deletion process starts, in which active edge jobs are stopped and all media is deleted from the edge device. The time to delete varies, depending on the total amount of stored media. If the deletion process fails, the sync status changes to DELETE_FAILED. You will need to re-try the deletion.

\n

When the deletion process has completed successfully, the edge configuration is no longer accessible.

", + "smithy.api#http": { + "method": "POST", + "uri": "/deleteEdgeConfiguration", + "code": 200 + } + } + }, + "com.amazonaws.kinesisvideo#DeleteEdgeConfigurationInput": { + "type": "structure", + "members": { + "StreamName": { + "target": "com.amazonaws.kinesisvideo#StreamName", + "traits": { + "smithy.api#documentation": "

The name of the stream from which to delete the edge configuration. Specify either the StreamName or the StreamARN.

" + } + }, + "StreamARN": { + "target": "com.amazonaws.kinesisvideo#ResourceARN", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the stream. Specify either the StreamName or the StreamARN.

" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.kinesisvideo#DeleteEdgeConfigurationOutput": { + "type": "structure", + "members": {}, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.kinesisvideo#DeleteSignalingChannel": { "type": "operation", "input": { @@ -551,11 +624,17 @@ "smithy.api#documentation": "

The current version of the signaling channel that you want to delete. You can obtain\n the current version by invoking the DescribeSignalingChannel or\n ListSignalingChannels API operations.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#DeleteSignalingChannelOutput": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#output": {} + } }, "com.amazonaws.kinesisvideo#DeleteStream": { "type": "operation", @@ -610,11 +689,17 @@ "smithy.api#documentation": "

Optional: The version of the stream that you want to delete.

\n

Specify the version as a safeguard to ensure that your are deleting the correct\n stream. To get the stream version, use the DescribeStream API.

\n

If not specified, only the CreationTime is checked before deleting the\n stream.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#DeleteStreamOutput": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#output": {} + } }, "com.amazonaws.kinesisvideo#DeletionConfig": { "type": "structure", @@ -634,7 +719,7 @@ "DeleteAfterUpload": { "target": "com.amazonaws.kinesisvideo#DeleteAfterUpload", "traits": { - "smithy.api#documentation": "

The boolean value used to indicate whether or not you want to mark the media for deletion, once it has been uploaded to \n the Kinesis Video Stream cloud. The media files can be deleted if any of the deletion configuration values are \n set to true, such as when the limit for the EdgeRetentionInHours, or the\n MaxLocalMediaSizeInMB, has been reached. \n

\n

Since the default value is set to true, configure the uploader schedule such \n that the media files are not being deleted before they are initially uploaded to AWS cloud.

" + "smithy.api#documentation": "

The boolean value used to indicate whether or not you want to mark the media for deletion, once it has been uploaded to \n the Kinesis Video Stream cloud. The media files can be deleted if any of the deletion configuration values are \n set to true, such as when the limit for the EdgeRetentionInHours, or the\n MaxLocalMediaSizeInMB, has been reached. \n

\n

Since the default value is set to true, configure the uploader schedule such \n that the media files are not being deleted before they are initially uploaded to the Amazon Web Services cloud.

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

Describes a stream’s edge configuration that was set using the StartEdgeConfigurationUpdate API. \n Use this API to get the status of the configuration if the configuration is in sync with the \n Edge Agent.

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

Describes a stream’s edge configuration that was set using the\n StartEdgeConfigurationUpdate API and the latest status of the edge\n agent's recorder and uploader jobs. Use this API to get the status of the configuration\n to determine if the configuration is in sync with the Edge Agent. Use this API to\n evaluate the health of the Edge Agent.

", "smithy.api#http": { "method": "POST", "uri": "/describeEdgeConfiguration", @@ -691,6 +776,9 @@ "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the stream. Specify either the StreamNameor the StreamARN.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#DescribeEdgeConfigurationOutput": { @@ -737,7 +825,16 @@ "traits": { "smithy.api#documentation": "

A description of the stream's edge configuration that will be used to sync \n with the Edge Agent IoT Greengrass component. The Edge Agent component will run\n on an IoT Hub Device setup at your premise.

" } + }, + "EdgeAgentStatus": { + "target": "com.amazonaws.kinesisvideo#EdgeAgentStatus", + "traits": { + "smithy.api#documentation": "

An object that contains the latest status details for an edge agent's recorder and uploader jobs. Use this information to determine the current health of an edge agent.

" + } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#DescribeImageGenerationConfiguration": { @@ -786,6 +883,9 @@ "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the Kinesis video stream from which to retrieve the image generation configuration. You must specify either the StreamName or the StreamARN.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#DescribeImageGenerationConfigurationOutput": { @@ -797,6 +897,9 @@ "smithy.api#documentation": "

The structure that contains the information required for the Kinesis video stream (KVS) images delivery. If this structure is null, the configuration will be deleted from the stream.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#DescribeMappedResourceConfiguration": { @@ -822,7 +925,7 @@ } ], "traits": { - "smithy.api#documentation": "

Returns the most current information about the stream. Either streamName or streamARN should be provided in the input.

\n

Returns the most current information about the stream. The streamName\n or streamARN should be provided in the input.

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

Returns the most current information about the stream. The streamName\n or streamARN should be provided in the input.

", "smithy.api#http": { "method": "POST", "uri": "/describeMappedResourceConfiguration", @@ -863,6 +966,9 @@ "smithy.api#documentation": "

The token to provide in your next request, to get another batch of results.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#DescribeMappedResourceConfigurationOutput": { @@ -880,6 +986,9 @@ "smithy.api#documentation": "

The token that was used in the NextTokenrequest to fetch the next set of results.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#DescribeMediaStorageConfiguration": { @@ -928,6 +1037,9 @@ "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the channel.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#DescribeMediaStorageConfigurationOutput": { @@ -939,6 +1051,9 @@ "smithy.api#documentation": "

A structure that encapsulates, or contains, the media storage configuration properties.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#DescribeNotificationConfiguration": { @@ -987,6 +1102,9 @@ "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the Kinesis video stream from where you want to retrieve the notification configuration. You must specify either the StreamName or the StreamARN.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#DescribeNotificationConfigurationOutput": { @@ -998,6 +1116,9 @@ "smithy.api#documentation": "

The structure that contains the information required for notifications. If the structure is null, the configuration will be deleted from the stream.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#DescribeSignalingChannel": { @@ -1046,6 +1167,9 @@ "smithy.api#documentation": "

The ARN of the signaling channel that you want to describe.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#DescribeSignalingChannelOutput": { @@ -1057,6 +1181,9 @@ "smithy.api#documentation": "

A structure that encapsulates the specified signaling channel's metadata and\n properties.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#DescribeStream": { @@ -1105,6 +1232,9 @@ "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the stream.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#DescribeStreamOutput": { @@ -1116,6 +1246,9 @@ "smithy.api#documentation": "

An object that describes the stream.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#DestinationRegion": { @@ -1170,6 +1303,26 @@ } } }, + "com.amazonaws.kinesisvideo#EdgeAgentStatus": { + "type": "structure", + "members": { + "LastRecorderStatus": { + "target": "com.amazonaws.kinesisvideo#LastRecorderStatus", + "traits": { + "smithy.api#documentation": "

The latest status of a stream’s edge recording job.

" + } + }, + "LastUploaderStatus": { + "target": "com.amazonaws.kinesisvideo#LastUploaderStatus", + "traits": { + "smithy.api#documentation": "

The latest status of a stream’s edge to cloud uploader job.

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

An object that contains the latest status details for an edge agent's recorder and uploader jobs. Use this information to determine the current health of an edge agent.

" + } + }, "com.amazonaws.kinesisvideo#EdgeConfig": { "type": "structure", "members": { @@ -1325,6 +1478,9 @@ "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#GetDataEndpointOutput": { @@ -1336,6 +1492,9 @@ "smithy.api#documentation": "

The endpoint value. To read data from the stream or to write data to it, specify\n this endpoint in your application.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#GetSignalingChannelEndpoint": { @@ -1388,6 +1547,9 @@ "smithy.api#documentation": "

A structure containing the endpoint configuration for the SINGLE_MASTER\n channel type.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#GetSignalingChannelEndpointOutput": { @@ -1399,6 +1561,9 @@ "smithy.api#documentation": "

A list of endpoints for the specified signaling channel.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#HeightPixels": { @@ -1494,7 +1659,7 @@ "DestinationRegion": { "target": "com.amazonaws.kinesisvideo#DestinationRegion", "traits": { - "smithy.api#documentation": "

The AWS Region of the S3 bucket where images will be delivered. This DestinationRegion must match the Region where the stream is located.

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

The Amazon Web Services Region of the S3 bucket where images will be delivered. This DestinationRegion must match the Region where the stream is located.

", "smithy.api#required": {} } } @@ -1559,6 +1724,9 @@ "smithy.api#httpError": 400 } }, + "com.amazonaws.kinesisvideo#JobStatusDetails": { + "type": "string" + }, "com.amazonaws.kinesisvideo#KinesisVideo_20170930": { "type": "service", "version": "2017-09-30", @@ -1569,6 +1737,9 @@ { "target": "com.amazonaws.kinesisvideo#CreateStream" }, + { + "target": "com.amazonaws.kinesisvideo#DeleteEdgeConfiguration" + }, { "target": "com.amazonaws.kinesisvideo#DeleteSignalingChannel" }, @@ -1602,6 +1773,9 @@ { "target": "com.amazonaws.kinesisvideo#GetSignalingChannelEndpoint" }, + { + "target": "com.amazonaws.kinesisvideo#ListEdgeAgentConfigurations" + }, { "target": "com.amazonaws.kinesisvideo#ListSignalingChannels" }, @@ -1670,7 +1844,7 @@ "parameters": { "Region": { "builtIn": "AWS::Region", - "required": true, + "required": false, "documentation": "The AWS region used to dispatch the request.", "type": "String" }, @@ -1699,13 +1873,12 @@ { "conditions": [ { - "fn": "aws.partition", + "fn": "isSet", "argv": [ { - "ref": "Region" + "ref": "Endpoint" } - ], - "assign": "PartitionResult" + ] } ], "type": "tree", @@ -1713,14 +1886,20 @@ { "conditions": [ { - "fn": "isSet", + "fn": "booleanEquals", "argv": [ { - "ref": "Endpoint" - } + "ref": "UseFIPS" + }, + true ] } ], + "error": "Invalid Configuration: FIPS and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], "type": "tree", "rules": [ { @@ -1729,67 +1908,42 @@ "fn": "booleanEquals", "argv": [ { - "ref": "UseFIPS" + "ref": "UseDualStack" }, true ] } ], - "error": "Invalid Configuration: FIPS and custom endpoint are not supported", + "error": "Invalid Configuration: Dualstack and custom endpoint are not supported", "type": "error" }, { "conditions": [], - "type": "tree", - "rules": [ - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" - }, - true - ] - } - ], - "error": "Invalid Configuration: Dualstack and custom endpoint are not supported", - "type": "error" + "endpoint": { + "url": { + "ref": "Endpoint" }, - { - "conditions": [], - "endpoint": { - "url": { - "ref": "Endpoint" - }, - "properties": {}, - "headers": {} - }, - "type": "endpoint" - } - ] + "properties": {}, + "headers": {} + }, + "type": "endpoint" } ] - }, + } + ] + }, + { + "conditions": [], + "type": "tree", + "rules": [ { "conditions": [ { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" - }, - true - ] - }, - { - "fn": "booleanEquals", + "fn": "isSet", "argv": [ { - "ref": "UseDualStack" - }, - true + "ref": "Region" + } ] } ], @@ -1798,1262 +1952,641 @@ { "conditions": [ { - "fn": "booleanEquals", + "fn": "aws.partition", "argv": [ - true, { - "fn": "getAttr", + "ref": "Region" + } + ], + "assign": "PartitionResult" + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", "argv": [ { - "ref": "PartitionResult" + "ref": "UseFIPS" }, - "supportsFIPS" + true ] - } - ] - }, - { - "fn": "booleanEquals", - "argv": [ - true, + }, { - "fn": "getAttr", + "fn": "booleanEquals", "argv": [ { - "ref": "PartitionResult" + "ref": "UseDualStack" + }, + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + } + ] }, - "supportsDualStack" + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://kinesisvideo-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ] + } ] + }, + { + "conditions": [], + "error": "FIPS and DualStack are enabled, but this partition does not support one or both", + "type": "error" } ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], - "endpoint": { - "url": "https://kinesisvideo-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [], - "error": "FIPS and DualStack are enabled, but this partition does not support one or both", - "type": "error" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseFIPS" }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ { - "fn": "booleanEquals", - "argv": [ - true, + "conditions": [ { - "fn": "getAttr", + "fn": "booleanEquals", "argv": [ { - "ref": "PartitionResult" + "ref": "UseFIPS" }, - "supportsFIPS" + true ] } - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [], + ], "type": "tree", "rules": [ { - "conditions": [], - "endpoint": { - "url": "https://kinesisvideo-fips.{Region}.{PartitionResult#dnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + } + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://kinesisvideo-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ] + } + ] + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" } ] - } - ] - }, - { - "conditions": [], - "error": "FIPS is enabled but this partition does not support FIPS", - "type": "error" - } - ] - }, - { - "conditions": [ - { - "fn": "booleanEquals", - "argv": [ - { - "ref": "UseDualStack" }, - true - ] - } - ], - "type": "tree", - "rules": [ - { - "conditions": [ { - "fn": "booleanEquals", - "argv": [ - true, + "conditions": [ { - "fn": "getAttr", + "fn": "booleanEquals", "argv": [ { - "ref": "PartitionResult" + "ref": "UseDualStack" }, - "supportsDualStack" + true + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "type": "tree", + "rules": [ + { + "conditions": [], + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://kinesisvideo.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ] + } ] + }, + { + "conditions": [], + "error": "DualStack is enabled but this partition does not support DualStack", + "type": "error" } ] - } - ], - "type": "tree", - "rules": [ + }, { "conditions": [], - "endpoint": { - "url": "https://kinesisvideo.{Region}.{PartitionResult#dualStackDnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" - } - ] - }, - { - "conditions": [], - "error": "DualStack is enabled but this partition does not support DualStack", - "type": "error" - } - ] - }, - { - "conditions": [], - "endpoint": { - "url": "https://kinesisvideo.{Region}.{PartitionResult#dnsSuffix}", - "properties": {}, - "headers": {} - }, - "type": "endpoint" - } - ] - } - ] - }, - "smithy.rules#endpointTests": { - "testCases": [ - { - "documentation": "For region ap-south-1 with FIPS enabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.ap-south-1.api.aws" - } - }, - "params": { - "UseFIPS": true, - "Region": "ap-south-1", - "UseDualStack": true - } - }, - { - "documentation": "For region ap-south-1 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.ap-south-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": true, - "Region": "ap-south-1", - "UseDualStack": false - } - }, - { - "documentation": "For region ap-south-1 with FIPS disabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.ap-south-1.api.aws" - } - }, - "params": { - "UseFIPS": false, - "Region": "ap-south-1", - "UseDualStack": true - } - }, - { - "documentation": "For region ap-south-1 with FIPS disabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.ap-south-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": false, - "Region": "ap-south-1", - "UseDualStack": false - } - }, - { - "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.us-gov-east-1.api.aws" - } - }, - "params": { - "UseFIPS": true, - "Region": "us-gov-east-1", - "UseDualStack": true - } - }, - { - "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.us-gov-east-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": true, - "Region": "us-gov-east-1", - "UseDualStack": false - } - }, - { - "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.us-gov-east-1.api.aws" - } - }, - "params": { - "UseFIPS": false, - "Region": "us-gov-east-1", - "UseDualStack": true - } - }, - { - "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.us-gov-east-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": false, - "Region": "us-gov-east-1", - "UseDualStack": false - } - }, - { - "documentation": "For region ca-central-1 with FIPS enabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.ca-central-1.api.aws" - } - }, - "params": { - "UseFIPS": true, - "Region": "ca-central-1", - "UseDualStack": true - } - }, - { - "documentation": "For region ca-central-1 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.ca-central-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": true, - "Region": "ca-central-1", - "UseDualStack": false - } - }, - { - "documentation": "For region ca-central-1 with FIPS disabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.ca-central-1.api.aws" - } - }, - "params": { - "UseFIPS": false, - "Region": "ca-central-1", - "UseDualStack": true - } - }, - { - "documentation": "For region ca-central-1 with FIPS disabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.ca-central-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": false, - "Region": "ca-central-1", - "UseDualStack": false - } - }, - { - "documentation": "For region eu-central-1 with FIPS enabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.eu-central-1.api.aws" - } - }, - "params": { - "UseFIPS": true, - "Region": "eu-central-1", - "UseDualStack": true - } - }, - { - "documentation": "For region eu-central-1 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.eu-central-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": true, - "Region": "eu-central-1", - "UseDualStack": false - } - }, - { - "documentation": "For region eu-central-1 with FIPS disabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.eu-central-1.api.aws" - } - }, - "params": { - "UseFIPS": false, - "Region": "eu-central-1", - "UseDualStack": true - } - }, - { - "documentation": "For region eu-central-1 with FIPS disabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.eu-central-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": false, - "Region": "eu-central-1", - "UseDualStack": false - } - }, - { - "documentation": "For region us-iso-west-1 with FIPS enabled and DualStack enabled", - "expect": { - "error": "FIPS and DualStack are enabled, but this partition does not support one or both" - }, - "params": { - "UseFIPS": true, - "Region": "us-iso-west-1", - "UseDualStack": true - } - }, - { - "documentation": "For region us-iso-west-1 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.us-iso-west-1.c2s.ic.gov" - } - }, - "params": { - "UseFIPS": true, - "Region": "us-iso-west-1", - "UseDualStack": false - } - }, - { - "documentation": "For region us-iso-west-1 with FIPS disabled and DualStack enabled", - "expect": { - "error": "DualStack is enabled but this partition does not support DualStack" - }, - "params": { - "UseFIPS": false, - "Region": "us-iso-west-1", - "UseDualStack": true - } - }, - { - "documentation": "For region us-iso-west-1 with FIPS disabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.us-iso-west-1.c2s.ic.gov" - } - }, - "params": { - "UseFIPS": false, - "Region": "us-iso-west-1", - "UseDualStack": false - } - }, - { - "documentation": "For region us-west-2 with FIPS enabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.us-west-2.api.aws" - } - }, - "params": { - "UseFIPS": true, - "Region": "us-west-2", - "UseDualStack": true - } - }, - { - "documentation": "For region us-west-2 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.us-west-2.amazonaws.com" - } - }, - "params": { - "UseFIPS": true, - "Region": "us-west-2", - "UseDualStack": false - } - }, - { - "documentation": "For region us-west-2 with FIPS disabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.us-west-2.api.aws" - } - }, - "params": { - "UseFIPS": false, - "Region": "us-west-2", - "UseDualStack": true - } - }, - { - "documentation": "For region us-west-2 with FIPS disabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.us-west-2.amazonaws.com" - } - }, - "params": { - "UseFIPS": false, - "Region": "us-west-2", - "UseDualStack": false - } - }, - { - "documentation": "For region af-south-1 with FIPS enabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.af-south-1.api.aws" - } - }, - "params": { - "UseFIPS": true, - "Region": "af-south-1", - "UseDualStack": true - } - }, - { - "documentation": "For region af-south-1 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.af-south-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": true, - "Region": "af-south-1", - "UseDualStack": false - } - }, - { - "documentation": "For region af-south-1 with FIPS disabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.af-south-1.api.aws" - } - }, - "params": { - "UseFIPS": false, - "Region": "af-south-1", - "UseDualStack": true - } - }, - { - "documentation": "For region af-south-1 with FIPS disabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.af-south-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": false, - "Region": "af-south-1", - "UseDualStack": false - } - }, - { - "documentation": "For region eu-west-3 with FIPS enabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.eu-west-3.api.aws" - } - }, - "params": { - "UseFIPS": true, - "Region": "eu-west-3", - "UseDualStack": true - } - }, - { - "documentation": "For region eu-west-3 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.eu-west-3.amazonaws.com" - } - }, - "params": { - "UseFIPS": true, - "Region": "eu-west-3", - "UseDualStack": false - } - }, - { - "documentation": "For region eu-west-3 with FIPS disabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.eu-west-3.api.aws" - } - }, - "params": { - "UseFIPS": false, - "Region": "eu-west-3", - "UseDualStack": true - } - }, - { - "documentation": "For region eu-west-3 with FIPS disabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.eu-west-3.amazonaws.com" - } - }, - "params": { - "UseFIPS": false, - "Region": "eu-west-3", - "UseDualStack": false - } - }, - { - "documentation": "For region eu-west-2 with FIPS enabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.eu-west-2.api.aws" - } - }, - "params": { - "UseFIPS": true, - "Region": "eu-west-2", - "UseDualStack": true - } - }, - { - "documentation": "For region eu-west-2 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.eu-west-2.amazonaws.com" - } - }, - "params": { - "UseFIPS": true, - "Region": "eu-west-2", - "UseDualStack": false - } - }, - { - "documentation": "For region eu-west-2 with FIPS disabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.eu-west-2.api.aws" - } - }, - "params": { - "UseFIPS": false, - "Region": "eu-west-2", - "UseDualStack": true - } - }, - { - "documentation": "For region eu-west-2 with FIPS disabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.eu-west-2.amazonaws.com" - } - }, - "params": { - "UseFIPS": false, - "Region": "eu-west-2", - "UseDualStack": false - } - }, - { - "documentation": "For region eu-west-1 with FIPS enabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.eu-west-1.api.aws" - } - }, - "params": { - "UseFIPS": true, - "Region": "eu-west-1", - "UseDualStack": true - } - }, - { - "documentation": "For region eu-west-1 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.eu-west-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": true, - "Region": "eu-west-1", - "UseDualStack": false - } - }, - { - "documentation": "For region eu-west-1 with FIPS disabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.eu-west-1.api.aws" - } - }, - "params": { - "UseFIPS": false, - "Region": "eu-west-1", - "UseDualStack": true - } - }, - { - "documentation": "For region eu-west-1 with FIPS disabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.eu-west-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": false, - "Region": "eu-west-1", - "UseDualStack": false - } - }, - { - "documentation": "For region ap-northeast-2 with FIPS enabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.ap-northeast-2.api.aws" - } - }, - "params": { - "UseFIPS": true, - "Region": "ap-northeast-2", - "UseDualStack": true - } - }, - { - "documentation": "For region ap-northeast-2 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.ap-northeast-2.amazonaws.com" - } - }, - "params": { - "UseFIPS": true, - "Region": "ap-northeast-2", - "UseDualStack": false - } - }, - { - "documentation": "For region ap-northeast-2 with FIPS disabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.ap-northeast-2.api.aws" - } - }, - "params": { - "UseFIPS": false, - "Region": "ap-northeast-2", - "UseDualStack": true - } - }, - { - "documentation": "For region ap-northeast-2 with FIPS disabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.ap-northeast-2.amazonaws.com" - } - }, - "params": { - "UseFIPS": false, - "Region": "ap-northeast-2", - "UseDualStack": false - } - }, - { - "documentation": "For region ap-northeast-1 with FIPS enabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.ap-northeast-1.api.aws" - } - }, - "params": { - "UseFIPS": true, - "Region": "ap-northeast-1", - "UseDualStack": true - } - }, - { - "documentation": "For region ap-northeast-1 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.ap-northeast-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": true, - "Region": "ap-northeast-1", - "UseDualStack": false - } - }, - { - "documentation": "For region ap-northeast-1 with FIPS disabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.ap-northeast-1.api.aws" - } - }, - "params": { - "UseFIPS": false, - "Region": "ap-northeast-1", - "UseDualStack": true - } - }, - { - "documentation": "For region ap-northeast-1 with FIPS disabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.ap-northeast-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": false, - "Region": "ap-northeast-1", - "UseDualStack": false - } - }, - { - "documentation": "For region sa-east-1 with FIPS enabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.sa-east-1.api.aws" - } - }, - "params": { - "UseFIPS": true, - "Region": "sa-east-1", - "UseDualStack": true - } - }, - { - "documentation": "For region sa-east-1 with FIPS enabled and DualStack disabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.sa-east-1.amazonaws.com" - } - }, - "params": { - "UseFIPS": true, - "Region": "sa-east-1", - "UseDualStack": false - } - }, - { - "documentation": "For region sa-east-1 with FIPS disabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo.sa-east-1.api.aws" + "type": "tree", + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://kinesisvideo.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ] + } + ] + } + ] + }, + { + "conditions": [], + "error": "Invalid Configuration: Missing Region", + "type": "error" } - }, - "params": { - "UseFIPS": false, - "Region": "sa-east-1", - "UseDualStack": true - } - }, + ] + } + ] + }, + "smithy.rules#endpointTests": { + "testCases": [ { - "documentation": "For region sa-east-1 with FIPS disabled and DualStack disabled", + "documentation": "For region af-south-1 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.sa-east-1.amazonaws.com" + "url": "https://kinesisvideo.af-south-1.amazonaws.com" } }, "params": { + "Region": "af-south-1", "UseFIPS": false, - "Region": "sa-east-1", "UseDualStack": false } }, { - "documentation": "For region ap-east-1 with FIPS enabled and DualStack enabled", - "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.ap-east-1.api.aws" - } - }, - "params": { - "UseFIPS": true, - "Region": "ap-east-1", - "UseDualStack": true - } - }, - { - "documentation": "For region ap-east-1 with FIPS enabled and DualStack disabled", + "documentation": "For region ap-east-1 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo-fips.ap-east-1.amazonaws.com" + "url": "https://kinesisvideo.ap-east-1.amazonaws.com" } }, "params": { - "UseFIPS": true, "Region": "ap-east-1", + "UseFIPS": false, "UseDualStack": false } }, { - "documentation": "For region ap-east-1 with FIPS disabled and DualStack enabled", + "documentation": "For region ap-northeast-1 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.ap-east-1.api.aws" + "url": "https://kinesisvideo.ap-northeast-1.amazonaws.com" } }, "params": { + "Region": "ap-northeast-1", "UseFIPS": false, - "Region": "ap-east-1", - "UseDualStack": true + "UseDualStack": false } }, { - "documentation": "For region ap-east-1 with FIPS disabled and DualStack disabled", + "documentation": "For region ap-northeast-2 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.ap-east-1.amazonaws.com" + "url": "https://kinesisvideo.ap-northeast-2.amazonaws.com" } }, "params": { + "Region": "ap-northeast-2", "UseFIPS": false, - "Region": "ap-east-1", "UseDualStack": false } }, { - "documentation": "For region cn-north-1 with FIPS enabled and DualStack enabled", + "documentation": "For region ap-south-1 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo-fips.cn-north-1.api.amazonwebservices.com.cn" + "url": "https://kinesisvideo.ap-south-1.amazonaws.com" } }, "params": { - "UseFIPS": true, - "Region": "cn-north-1", - "UseDualStack": true + "Region": "ap-south-1", + "UseFIPS": false, + "UseDualStack": false } }, { - "documentation": "For region cn-north-1 with FIPS enabled and DualStack disabled", + "documentation": "For region ap-southeast-1 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo-fips.cn-north-1.amazonaws.com.cn" + "url": "https://kinesisvideo.ap-southeast-1.amazonaws.com" } }, "params": { - "UseFIPS": true, - "Region": "cn-north-1", + "Region": "ap-southeast-1", + "UseFIPS": false, "UseDualStack": false } }, { - "documentation": "For region cn-north-1 with FIPS disabled and DualStack enabled", + "documentation": "For region ap-southeast-2 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.cn-north-1.api.amazonwebservices.com.cn" + "url": "https://kinesisvideo.ap-southeast-2.amazonaws.com" } }, "params": { + "Region": "ap-southeast-2", "UseFIPS": false, - "Region": "cn-north-1", - "UseDualStack": true + "UseDualStack": false } }, { - "documentation": "For region cn-north-1 with FIPS disabled and DualStack disabled", + "documentation": "For region ca-central-1 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.cn-north-1.amazonaws.com.cn" + "url": "https://kinesisvideo.ca-central-1.amazonaws.com" } }, "params": { + "Region": "ca-central-1", "UseFIPS": false, - "Region": "cn-north-1", "UseDualStack": false } }, { - "documentation": "For region us-gov-west-1 with FIPS enabled and DualStack enabled", + "documentation": "For region eu-central-1 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo-fips.us-gov-west-1.api.aws" + "url": "https://kinesisvideo.eu-central-1.amazonaws.com" } }, "params": { - "UseFIPS": true, - "Region": "us-gov-west-1", - "UseDualStack": true + "Region": "eu-central-1", + "UseFIPS": false, + "UseDualStack": false } }, { - "documentation": "For region us-gov-west-1 with FIPS enabled and DualStack disabled", + "documentation": "For region eu-west-1 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo-fips.us-gov-west-1.amazonaws.com" + "url": "https://kinesisvideo.eu-west-1.amazonaws.com" } }, "params": { - "UseFIPS": true, - "Region": "us-gov-west-1", + "Region": "eu-west-1", + "UseFIPS": false, "UseDualStack": false } }, { - "documentation": "For region us-gov-west-1 with FIPS disabled and DualStack enabled", + "documentation": "For region eu-west-2 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.us-gov-west-1.api.aws" + "url": "https://kinesisvideo.eu-west-2.amazonaws.com" } }, "params": { + "Region": "eu-west-2", "UseFIPS": false, - "Region": "us-gov-west-1", - "UseDualStack": true + "UseDualStack": false } }, { - "documentation": "For region us-gov-west-1 with FIPS disabled and DualStack disabled", + "documentation": "For region eu-west-3 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.us-gov-west-1.amazonaws.com" + "url": "https://kinesisvideo.eu-west-3.amazonaws.com" } }, "params": { + "Region": "eu-west-3", "UseFIPS": false, - "Region": "us-gov-west-1", "UseDualStack": false } }, { - "documentation": "For region ap-southeast-1 with FIPS enabled and DualStack enabled", + "documentation": "For region sa-east-1 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo-fips.ap-southeast-1.api.aws" + "url": "https://kinesisvideo.sa-east-1.amazonaws.com" } }, "params": { - "UseFIPS": true, - "Region": "ap-southeast-1", - "UseDualStack": true + "Region": "sa-east-1", + "UseFIPS": false, + "UseDualStack": false } }, { - "documentation": "For region ap-southeast-1 with FIPS enabled and DualStack disabled", + "documentation": "For region us-east-1 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo-fips.ap-southeast-1.amazonaws.com" + "url": "https://kinesisvideo.us-east-1.amazonaws.com" } }, "params": { - "UseFIPS": true, - "Region": "ap-southeast-1", + "Region": "us-east-1", + "UseFIPS": false, "UseDualStack": false } }, { - "documentation": "For region ap-southeast-1 with FIPS disabled and DualStack enabled", + "documentation": "For region us-east-2 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.ap-southeast-1.api.aws" + "url": "https://kinesisvideo.us-east-2.amazonaws.com" } }, "params": { + "Region": "us-east-2", "UseFIPS": false, - "Region": "ap-southeast-1", - "UseDualStack": true + "UseDualStack": false } }, { - "documentation": "For region ap-southeast-1 with FIPS disabled and DualStack disabled", + "documentation": "For region us-west-2 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.ap-southeast-1.amazonaws.com" + "url": "https://kinesisvideo.us-west-2.amazonaws.com" } }, "params": { + "Region": "us-west-2", "UseFIPS": false, - "Region": "ap-southeast-1", "UseDualStack": false } }, { - "documentation": "For region ap-southeast-2 with FIPS enabled and DualStack enabled", + "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled", "expect": { "endpoint": { - "url": "https://kinesisvideo-fips.ap-southeast-2.api.aws" + "url": "https://kinesisvideo-fips.us-east-1.api.aws" } }, "params": { + "Region": "us-east-1", "UseFIPS": true, - "Region": "ap-southeast-2", "UseDualStack": true } }, { - "documentation": "For region ap-southeast-2 with FIPS enabled and DualStack disabled", + "documentation": "For region us-east-1 with FIPS enabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo-fips.ap-southeast-2.amazonaws.com" + "url": "https://kinesisvideo-fips.us-east-1.amazonaws.com" } }, "params": { + "Region": "us-east-1", "UseFIPS": true, - "Region": "ap-southeast-2", "UseDualStack": false } }, { - "documentation": "For region ap-southeast-2 with FIPS disabled and DualStack enabled", + "documentation": "For region us-east-1 with FIPS disabled and DualStack enabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.ap-southeast-2.api.aws" + "url": "https://kinesisvideo.us-east-1.api.aws" } }, "params": { + "Region": "us-east-1", "UseFIPS": false, - "Region": "ap-southeast-2", "UseDualStack": true } }, { - "documentation": "For region ap-southeast-2 with FIPS disabled and DualStack disabled", + "documentation": "For region cn-north-1 with FIPS enabled and DualStack enabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.ap-southeast-2.amazonaws.com" + "url": "https://kinesisvideo-fips.cn-north-1.api.amazonwebservices.com.cn" } }, "params": { - "UseFIPS": false, - "Region": "ap-southeast-2", - "UseDualStack": false - } - }, - { - "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack enabled", - "expect": { - "error": "FIPS and DualStack are enabled, but this partition does not support one or both" - }, - "params": { + "Region": "cn-north-1", "UseFIPS": true, - "Region": "us-iso-east-1", "UseDualStack": true } }, { - "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack disabled", + "documentation": "For region cn-north-1 with FIPS enabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo-fips.us-iso-east-1.c2s.ic.gov" + "url": "https://kinesisvideo-fips.cn-north-1.amazonaws.com.cn" } }, "params": { + "Region": "cn-north-1", "UseFIPS": true, - "Region": "us-iso-east-1", "UseDualStack": false } }, { - "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack enabled", + "documentation": "For region cn-north-1 with FIPS disabled and DualStack enabled", "expect": { - "error": "DualStack is enabled but this partition does not support DualStack" + "endpoint": { + "url": "https://kinesisvideo.cn-north-1.api.amazonwebservices.com.cn" + } }, "params": { + "Region": "cn-north-1", "UseFIPS": false, - "Region": "us-iso-east-1", "UseDualStack": true } }, { - "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack disabled", + "documentation": "For region cn-north-1 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.us-iso-east-1.c2s.ic.gov" + "url": "https://kinesisvideo.cn-north-1.amazonaws.com.cn" } }, "params": { + "Region": "cn-north-1", "UseFIPS": false, - "Region": "us-iso-east-1", "UseDualStack": false } }, { - "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled", + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled", "expect": { "endpoint": { - "url": "https://kinesisvideo-fips.us-east-1.api.aws" + "url": "https://kinesisvideo-fips.us-gov-east-1.api.aws" } }, "params": { + "Region": "us-gov-east-1", "UseFIPS": true, - "Region": "us-east-1", "UseDualStack": true } }, { - "documentation": "For region us-east-1 with FIPS enabled and DualStack disabled", + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo-fips.us-east-1.amazonaws.com" + "url": "https://kinesisvideo-fips.us-gov-east-1.amazonaws.com" } }, "params": { + "Region": "us-gov-east-1", "UseFIPS": true, - "Region": "us-east-1", "UseDualStack": false } }, { - "documentation": "For region us-east-1 with FIPS disabled and DualStack enabled", + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack enabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.us-east-1.api.aws" + "url": "https://kinesisvideo.us-gov-east-1.api.aws" } }, "params": { + "Region": "us-gov-east-1", "UseFIPS": false, - "Region": "us-east-1", "UseDualStack": true } }, { - "documentation": "For region us-east-1 with FIPS disabled and DualStack disabled", + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.us-east-1.amazonaws.com" + "url": "https://kinesisvideo.us-gov-east-1.amazonaws.com" } }, "params": { + "Region": "us-gov-east-1", "UseFIPS": false, - "Region": "us-east-1", "UseDualStack": false } }, { - "documentation": "For region us-east-2 with FIPS enabled and DualStack enabled", + "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack enabled", "expect": { - "endpoint": { - "url": "https://kinesisvideo-fips.us-east-2.api.aws" - } + "error": "FIPS and DualStack are enabled, but this partition does not support one or both" }, "params": { + "Region": "us-iso-east-1", "UseFIPS": true, - "Region": "us-east-2", "UseDualStack": true } }, { - "documentation": "For region us-east-2 with FIPS enabled and DualStack disabled", + "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo-fips.us-east-2.amazonaws.com" + "url": "https://kinesisvideo-fips.us-iso-east-1.c2s.ic.gov" } }, "params": { + "Region": "us-iso-east-1", "UseFIPS": true, - "Region": "us-east-2", "UseDualStack": false } }, { - "documentation": "For region us-east-2 with FIPS disabled and DualStack enabled", + "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack enabled", "expect": { - "endpoint": { - "url": "https://kinesisvideo.us-east-2.api.aws" - } + "error": "DualStack is enabled but this partition does not support DualStack" }, "params": { + "Region": "us-iso-east-1", "UseFIPS": false, - "Region": "us-east-2", "UseDualStack": true } }, { - "documentation": "For region us-east-2 with FIPS disabled and DualStack disabled", + "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack disabled", "expect": { "endpoint": { - "url": "https://kinesisvideo.us-east-2.amazonaws.com" + "url": "https://kinesisvideo.us-iso-east-1.c2s.ic.gov" } }, "params": { + "Region": "us-iso-east-1", "UseFIPS": false, - "Region": "us-east-2", "UseDualStack": false } }, @@ -3063,8 +2596,8 @@ "error": "FIPS and DualStack are enabled, but this partition does not support one or both" }, "params": { - "UseFIPS": true, "Region": "us-isob-east-1", + "UseFIPS": true, "UseDualStack": true } }, @@ -3076,8 +2609,8 @@ } }, "params": { - "UseFIPS": true, "Region": "us-isob-east-1", + "UseFIPS": true, "UseDualStack": false } }, @@ -3087,8 +2620,8 @@ "error": "DualStack is enabled but this partition does not support DualStack" }, "params": { - "UseFIPS": false, "Region": "us-isob-east-1", + "UseFIPS": false, "UseDualStack": true } }, @@ -3100,21 +2633,34 @@ } }, "params": { - "UseFIPS": false, "Region": "us-isob-east-1", + "UseFIPS": false, "UseDualStack": false } }, { - "documentation": "For custom endpoint with fips disabled and dualstack disabled", + "documentation": "For custom endpoint with region set and fips disabled and dualstack disabled", "expect": { "endpoint": { "url": "https://example.com" } }, "params": { - "UseFIPS": false, "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with region not set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "UseFIPS": false, "UseDualStack": false, "Endpoint": "https://example.com" } @@ -3125,8 +2671,8 @@ "error": "Invalid Configuration: FIPS and custom endpoint are not supported" }, "params": { - "UseFIPS": true, "Region": "us-east-1", + "UseFIPS": true, "UseDualStack": false, "Endpoint": "https://example.com" } @@ -3137,11 +2683,17 @@ "error": "Invalid Configuration: Dualstack and custom endpoint are not supported" }, "params": { - "UseFIPS": false, "Region": "us-east-1", + "UseFIPS": false, "UseDualStack": true, "Endpoint": "https://example.com" } + }, + { + "documentation": "Missing region", + "expect": { + "error": "Invalid Configuration: Missing Region" + } } ], "version": "1.0" @@ -3158,6 +2710,213 @@ "smithy.api#pattern": "^.+$" } }, + "com.amazonaws.kinesisvideo#LastRecorderStatus": { + "type": "structure", + "members": { + "JobStatusDetails": { + "target": "com.amazonaws.kinesisvideo#JobStatusDetails", + "traits": { + "smithy.api#documentation": "

A description of a recorder job’s latest status.

" + } + }, + "LastCollectedTime": { + "target": "com.amazonaws.kinesisvideo#Timestamp", + "traits": { + "smithy.api#documentation": "

The timestamp at which the recorder job was last executed and media stored to local disk.

" + } + }, + "LastUpdatedTime": { + "target": "com.amazonaws.kinesisvideo#Timestamp", + "traits": { + "smithy.api#documentation": "

The timestamp at which the recorder status was last updated.

" + } + }, + "RecorderStatus": { + "target": "com.amazonaws.kinesisvideo#RecorderStatus", + "traits": { + "smithy.api#documentation": "

The status of the latest recorder job.

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

The latest status of a stream's edge recording job.

" + } + }, + "com.amazonaws.kinesisvideo#LastUploaderStatus": { + "type": "structure", + "members": { + "JobStatusDetails": { + "target": "com.amazonaws.kinesisvideo#JobStatusDetails", + "traits": { + "smithy.api#documentation": "

A description of an uploader job’s latest status.

" + } + }, + "LastCollectedTime": { + "target": "com.amazonaws.kinesisvideo#Timestamp", + "traits": { + "smithy.api#documentation": "

The timestamp at which the uploader job was last executed and media collected to the cloud.

" + } + }, + "LastUpdatedTime": { + "target": "com.amazonaws.kinesisvideo#Timestamp", + "traits": { + "smithy.api#documentation": "

The timestamp at which the uploader status was last updated.

" + } + }, + "UploaderStatus": { + "target": "com.amazonaws.kinesisvideo#UploaderStatus", + "traits": { + "smithy.api#documentation": "

The status of the latest uploader job.

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

The latest status of a stream’s edge to cloud uploader job.

" + } + }, + "com.amazonaws.kinesisvideo#ListEdgeAgentConfigurations": { + "type": "operation", + "input": { + "target": "com.amazonaws.kinesisvideo#ListEdgeAgentConfigurationsInput" + }, + "output": { + "target": "com.amazonaws.kinesisvideo#ListEdgeAgentConfigurationsOutput" + }, + "errors": [ + { + "target": "com.amazonaws.kinesisvideo#ClientLimitExceededException" + }, + { + "target": "com.amazonaws.kinesisvideo#InvalidArgumentException" + }, + { + "target": "com.amazonaws.kinesisvideo#NotAuthorizedException" + } + ], + "traits": { + "smithy.api#documentation": "

Returns an array of edge configurations associated with the specified Edge Agent.

\n

In the request, you must specify the Edge Agent HubDeviceArn.

", + "smithy.api#http": { + "method": "POST", + "uri": "/listEdgeAgentConfigurations", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "NextToken", + "outputToken": "NextToken", + "items": "EdgeConfigs", + "pageSize": "MaxResults" + } + } + }, + "com.amazonaws.kinesisvideo#ListEdgeAgentConfigurationsEdgeConfig": { + "type": "structure", + "members": { + "StreamName": { + "target": "com.amazonaws.kinesisvideo#StreamName", + "traits": { + "smithy.api#documentation": "

The name of the stream.

" + } + }, + "StreamARN": { + "target": "com.amazonaws.kinesisvideo#ResourceARN", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the stream.

" + } + }, + "CreationTime": { + "target": "com.amazonaws.kinesisvideo#Timestamp", + "traits": { + "smithy.api#documentation": "

The timestamp when the stream first created the edge config.

" + } + }, + "LastUpdatedTime": { + "target": "com.amazonaws.kinesisvideo#Timestamp", + "traits": { + "smithy.api#documentation": "

The timestamp when the stream last updated the edge config.

" + } + }, + "SyncStatus": { + "target": "com.amazonaws.kinesisvideo#SyncStatus", + "traits": { + "smithy.api#documentation": "

The current sync status of the stream's edge configuration.

" + } + }, + "FailedStatusDetails": { + "target": "com.amazonaws.kinesisvideo#FailedStatusDetails", + "traits": { + "smithy.api#documentation": "

A description of the generated failure status.

" + } + }, + "EdgeConfig": { + "target": "com.amazonaws.kinesisvideo#EdgeConfig" + } + }, + "traits": { + "smithy.api#documentation": "

A description of a single stream's edge configuration.

" + } + }, + "com.amazonaws.kinesisvideo#ListEdgeAgentConfigurationsEdgeConfigList": { + "type": "list", + "member": { + "target": "com.amazonaws.kinesisvideo#ListEdgeAgentConfigurationsEdgeConfig" + } + }, + "com.amazonaws.kinesisvideo#ListEdgeAgentConfigurationsInput": { + "type": "structure", + "members": { + "HubDeviceArn": { + "target": "com.amazonaws.kinesisvideo#HubDeviceArn", + "traits": { + "smithy.api#documentation": "

The \"Internet of Things (IoT) Thing\" Arn of the edge agent.

", + "smithy.api#required": {} + } + }, + "MaxResults": { + "target": "com.amazonaws.kinesisvideo#ListEdgeAgentConfigurationsInputLimit", + "traits": { + "smithy.api#documentation": "

The maximum number of edge configurations to return in the response. The default is 5.

" + } + }, + "NextToken": { + "target": "com.amazonaws.kinesisvideo#NextToken", + "traits": { + "smithy.api#documentation": "

If you specify this parameter, when the result of a ListEdgeAgentConfigurations operation is truncated, the call returns the NextToken in the response. To get another batch of edge configurations, provide this token in your next request.\n

" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.kinesisvideo#ListEdgeAgentConfigurationsInputLimit": { + "type": "integer", + "traits": { + "smithy.api#range": { + "min": 1, + "max": 10 + } + } + }, + "com.amazonaws.kinesisvideo#ListEdgeAgentConfigurationsOutput": { + "type": "structure", + "members": { + "EdgeConfigs": { + "target": "com.amazonaws.kinesisvideo#ListEdgeAgentConfigurationsEdgeConfigList", + "traits": { + "smithy.api#documentation": "

A description of a single stream's edge configuration.

" + } + }, + "NextToken": { + "target": "com.amazonaws.kinesisvideo#NextToken", + "traits": { + "smithy.api#documentation": "

If the response is truncated, the call returns this element with a given token. To get the next batch of edge configurations, use this token in your next request.

" + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.kinesisvideo#ListOfProtocols": { "type": "list", "member": { @@ -3225,6 +2984,9 @@ "smithy.api#documentation": "

Optional: Returns only the channels that satisfy a specific condition.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#ListSignalingChannelsOutput": { @@ -3242,6 +3004,9 @@ "smithy.api#documentation": "

If the response is truncated, the call returns this element with a token. To get the\n next batch of streams, use this token in your next request.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#ListStreams": { @@ -3296,6 +3061,9 @@ "smithy.api#documentation": "

Optional: Returns only streams that satisfy a specific condition. Currently, you\n can specify only the prefix of a stream name as a condition.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#ListStreamsInputLimit": { @@ -3322,6 +3090,9 @@ "smithy.api#documentation": "

If the response is truncated, the call returns this element with a token. To get\n the next batch of streams, use this token in your next request.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#ListTagsForResource": { @@ -3371,6 +3142,9 @@ "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#ListTagsForResourceOutput": { @@ -3388,6 +3162,9 @@ "smithy.api#documentation": "

A map of tag keys and values associated with the specified signaling channel.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#ListTagsForStream": { @@ -3445,6 +3222,9 @@ "smithy.api#documentation": "

The name of the stream that you want to list tags for.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#ListTagsForStreamOutput": { @@ -3462,6 +3242,9 @@ "smithy.api#documentation": "

A map of tag keys and values associated with the specified stream.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#LocalSizeConfig": { @@ -3540,7 +3323,7 @@ "MediaUriSecretArn": { "target": "com.amazonaws.kinesisvideo#MediaUriSecretArn", "traits": { - "smithy.api#documentation": "

The AWS Secrets Manager ARN for the username and password of the camera, or a local media file location.

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

The Amazon Web Services Secrets Manager ARN for the username and password of the camera, or a local media file location.

", "smithy.api#required": {} } }, @@ -3735,6 +3518,29 @@ "smithy.api#documentation": "

The recorder configuration consists of the local MediaSourceConfig details that are used as \n credentials to accesss the local media files streamed on the camera.

" } }, + "com.amazonaws.kinesisvideo#RecorderStatus": { + "type": "enum", + "members": { + "SUCCESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SUCCESS" + } + }, + "USER_ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USER_ERROR" + } + }, + "SYSTEM_ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SYSTEM_ERROR" + } + } + } + }, "com.amazonaws.kinesisvideo#ResourceARN": { "type": "string", "traits": { @@ -3771,7 +3577,7 @@ } }, "traits": { - "smithy.api#documentation": "

An object that describes the endpoint of the signaling channel returned by the\n GetSignalingChannelEndpoint API.

" + "smithy.api#documentation": "

An object that describes the endpoint of the signaling channel returned by the\n GetSignalingChannelEndpoint API.

\n

The media server endpoint will correspond to the WEBRTC Protocol.

" } }, "com.amazonaws.kinesisvideo#ResourceInUseException": { @@ -3843,7 +3649,7 @@ } }, "traits": { - "smithy.api#documentation": "

This API enables you to specify the duration that the camera,\n or local media file, should record onto the Edge Agent. The ScheduleConfig consists of the ScheduleExpression and the \n DurationInMinutes attributes.

\n

If the ScheduleExpression is not provided,\n then the Edge Agent will always be set to recording mode.

" + "smithy.api#documentation": "

This API enables you to specify the duration that the camera,\n or local media file, should record onto the Edge Agent. The ScheduleConfig consists of the ScheduleExpression and the \n DurationInMinutes attributes.

\n

If the ScheduleConfig is not provided in the RecorderConfig,\n then the Edge Agent will always be set to recording mode.

\n

If the ScheduleConfig is not provided in the UploaderConfig,\n then the Edge Agent will upload at regular intervals (every 1 hour).

" } }, "com.amazonaws.kinesisvideo#ScheduleExpression": { @@ -3949,6 +3755,9 @@ "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#StartEdgeConfigurationUpdateOutput": { @@ -3996,6 +3805,9 @@ "smithy.api#documentation": "

A description of the stream's edge configuration that will be used to sync \n with the Edge Agent IoT Greengrass component. The Edge Agent component will run\n on an IoT Hub Device setup at your premise.

" } } + }, + "traits": { + "smithy.api#output": {} } }, "com.amazonaws.kinesisvideo#Status": { @@ -4193,6 +4005,12 @@ "traits": { "smithy.api#enumValue": "DELETE_FAILED" } + }, + "DELETING_ACKNOWLEDGED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DELETING_ACKNOWLEDGED" + } } } }, @@ -4315,11 +4133,17 @@ "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#TagResourceOutput": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#output": {} + } }, "com.amazonaws.kinesisvideo#TagStream": { "type": "operation", @@ -4380,11 +4204,17 @@ "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#TagStreamOutput": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#output": {} + } }, "com.amazonaws.kinesisvideo#TagValue": { "type": "string", @@ -4463,11 +4293,17 @@ "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#UntagResourceOutput": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#output": {} + } }, "com.amazonaws.kinesisvideo#UntagStream": { "type": "operation", @@ -4525,11 +4361,17 @@ "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#UntagStreamOutput": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#output": {} + } }, "com.amazonaws.kinesisvideo#UpdateDataRetention": { "type": "operation", @@ -4604,6 +4446,9 @@ "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#UpdateDataRetentionOperation": { @@ -4625,7 +4470,10 @@ }, "com.amazonaws.kinesisvideo#UpdateDataRetentionOutput": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#output": {} + } }, "com.amazonaws.kinesisvideo#UpdateImageGenerationConfiguration": { "type": "operation", @@ -4685,11 +4533,17 @@ "smithy.api#documentation": "

The structure that contains the information required for the KVS images delivery. If the structure is null, the configuration will be deleted from the stream.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#UpdateImageGenerationConfigurationOutput": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#output": {} + } }, "com.amazonaws.kinesisvideo#UpdateMediaStorageConfiguration": { "type": "operation", @@ -4745,11 +4599,17 @@ "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#UpdateMediaStorageConfigurationOutput": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#output": {} + } }, "com.amazonaws.kinesisvideo#UpdateNotificationConfiguration": { "type": "operation", @@ -4809,11 +4669,17 @@ "smithy.api#documentation": "

The structure containing the information required for notifications. If the structure is null, the configuration will be deleted from the stream.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#UpdateNotificationConfigurationOutput": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#output": {} + } }, "com.amazonaws.kinesisvideo#UpdateSignalingChannel": { "type": "operation", @@ -4875,11 +4741,17 @@ "smithy.api#documentation": "

The structure containing the configuration for the SINGLE_MASTER type of\n the signaling channel that you want to update.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#UpdateSignalingChannelOutput": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#output": {} + } }, "com.amazonaws.kinesisvideo#UpdateStream": { "type": "operation", @@ -4952,11 +4824,17 @@ "smithy.api#documentation": "

The stream's media type. Use MediaType to specify the type of content\n that the stream contains to the consumers of the stream. For more information about\n media types, see Media\n Types. If you choose to specify the MediaType, see Naming\n Requirements.

\n

To play video on the console, you must specify the correct video type. For example,\n if the video in the stream is H.264, specify video/h264 as the\n MediaType.

" } } + }, + "traits": { + "smithy.api#input": {} } }, "com.amazonaws.kinesisvideo#UpdateStreamOutput": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#output": {} + } }, "com.amazonaws.kinesisvideo#UploaderConfig": { "type": "structure", @@ -4964,13 +4842,36 @@ "ScheduleConfig": { "target": "com.amazonaws.kinesisvideo#ScheduleConfig", "traits": { - "smithy.api#documentation": "

The configuration that consists of the ScheduleExpression and the \n DurationInMinutesdetails that specify the scheduling to record from a camera, or\n local media file, onto the Edge Agent. If the ScheduleExpression is not provided,\n then the Edge Agent will always be in recording mode.

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

The configuration that consists of the ScheduleExpression and the \n DurationInMinutes details that specify the scheduling to record from a camera, or\n local media file, onto the Edge Agent. If the ScheduleConfig is not provided in this UploaderConfig,\n then the Edge Agent will upload at regular intervals (every 1 hour).

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

The configuration that consists of the ScheduleExpression\n and the DurationInMinutesdetails, that specify the scheduling to record from a camera,\n or local media file, onto the Edge Agent. If the ScheduleExpression\n is not provided, then the Edge Agent will always be in upload mode.\n

" + "smithy.api#documentation": "

The configuration that consists of the ScheduleExpression\n and the DurationInMinutes details that specify the scheduling to record from a camera,\n or local media file, onto the Edge Agent. If the ScheduleConfig\n is not provided in the UploaderConfig, then the Edge Agent will upload at regular intervals (every 1 hour).\n

" + } + }, + "com.amazonaws.kinesisvideo#UploaderStatus": { + "type": "enum", + "members": { + "SUCCESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SUCCESS" + } + }, + "USER_ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USER_ERROR" + } + }, + "SYSTEM_ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SYSTEM_ERROR" + } + } } }, "com.amazonaws.kinesisvideo#Version": {