From 7850f23315cadd2a77e060a4b6742b202d58505f Mon Sep 17 00:00:00 2001 From: awstools Date: Mon, 17 Jul 2023 18:26:25 +0000 Subject: [PATCH] feat(client-ivs): This release provides the flexibility to configure what renditions or thumbnail qualities to record when creating recording configuration. --- ...atchStartViewerSessionRevocationCommand.ts | 9 + .../CreateRecordingConfigurationCommand.ts | 20 ++ .../GetRecordingConfigurationCommand.ts | 10 + .../src/commands/GetStreamSessionCommand.ts | 10 + .../StartViewerSessionRevocationCommand.ts | 6 + clients/client-ivs/src/models/models_0.ts | 230 +++++++++++++----- .../client-ivs/src/protocols/Aws_restJson1.ts | 31 +++ codegen/sdk-codegen/aws-models/ivs.json | 153 +++++++++++- 8 files changed, 411 insertions(+), 58 deletions(-) diff --git a/clients/client-ivs/src/commands/BatchStartViewerSessionRevocationCommand.ts b/clients/client-ivs/src/commands/BatchStartViewerSessionRevocationCommand.ts index adfc9457561f..57b164b257b6 100644 --- a/clients/client-ivs/src/commands/BatchStartViewerSessionRevocationCommand.ts +++ b/clients/client-ivs/src/commands/BatchStartViewerSessionRevocationCommand.ts @@ -82,6 +82,15 @@ export interface BatchStartViewerSessionRevocationCommandOutput * @see {@link BatchStartViewerSessionRevocationCommandOutput} for command's `response` shape. * @see {@link IvsClientResolvedConfig | config} for IvsClient's `config` shape. * + * @throws {@link AccessDeniedException} (client fault) + *

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

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

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

* diff --git a/clients/client-ivs/src/commands/CreateRecordingConfigurationCommand.ts b/clients/client-ivs/src/commands/CreateRecordingConfigurationCommand.ts index f52bafb42ac5..a2f0a7385fa9 100644 --- a/clients/client-ivs/src/commands/CreateRecordingConfigurationCommand.ts +++ b/clients/client-ivs/src/commands/CreateRecordingConfigurationCommand.ts @@ -72,8 +72,18 @@ export interface CreateRecordingConfigurationCommandOutput * thumbnailConfiguration: { // ThumbnailConfiguration * recordingMode: "STRING_VALUE", * targetIntervalSeconds: Number("long"), + * resolution: "STRING_VALUE", + * storage: [ // ThumbnailConfigurationStorageList + * "STRING_VALUE", + * ], * }, * recordingReconnectWindowSeconds: Number("int"), + * renditionConfiguration: { // RenditionConfiguration + * renditionSelection: "STRING_VALUE", + * renditions: [ // RenditionConfigurationRenditionList + * "STRING_VALUE", + * ], + * }, * }; * const command = new CreateRecordingConfigurationCommand(input); * const response = await client.send(command); @@ -93,8 +103,18 @@ export interface CreateRecordingConfigurationCommandOutput * // thumbnailConfiguration: { // ThumbnailConfiguration * // recordingMode: "STRING_VALUE", * // targetIntervalSeconds: Number("long"), + * // resolution: "STRING_VALUE", + * // storage: [ // ThumbnailConfigurationStorageList + * // "STRING_VALUE", + * // ], * // }, * // recordingReconnectWindowSeconds: Number("int"), + * // renditionConfiguration: { // RenditionConfiguration + * // renditionSelection: "STRING_VALUE", + * // renditions: [ // RenditionConfigurationRenditionList + * // "STRING_VALUE", + * // ], + * // }, * // }, * // }; * diff --git a/clients/client-ivs/src/commands/GetRecordingConfigurationCommand.ts b/clients/client-ivs/src/commands/GetRecordingConfigurationCommand.ts index aa6a8402bb6b..c141b2b72057 100644 --- a/clients/client-ivs/src/commands/GetRecordingConfigurationCommand.ts +++ b/clients/client-ivs/src/commands/GetRecordingConfigurationCommand.ts @@ -64,8 +64,18 @@ export interface GetRecordingConfigurationCommandOutput extends GetRecordingConf * // thumbnailConfiguration: { // ThumbnailConfiguration * // recordingMode: "STRING_VALUE", * // targetIntervalSeconds: Number("long"), + * // resolution: "STRING_VALUE", + * // storage: [ // ThumbnailConfigurationStorageList + * // "STRING_VALUE", + * // ], * // }, * // recordingReconnectWindowSeconds: Number("int"), + * // renditionConfiguration: { // RenditionConfiguration + * // renditionSelection: "STRING_VALUE", + * // renditions: [ // RenditionConfigurationRenditionList + * // "STRING_VALUE", + * // ], + * // }, * // }, * // }; * diff --git a/clients/client-ivs/src/commands/GetStreamSessionCommand.ts b/clients/client-ivs/src/commands/GetStreamSessionCommand.ts index c87d12660d05..fb068bc1dc41 100644 --- a/clients/client-ivs/src/commands/GetStreamSessionCommand.ts +++ b/clients/client-ivs/src/commands/GetStreamSessionCommand.ts @@ -102,8 +102,18 @@ export interface GetStreamSessionCommandOutput extends GetStreamSessionResponse, * // thumbnailConfiguration: { // ThumbnailConfiguration * // recordingMode: "STRING_VALUE", * // targetIntervalSeconds: Number("long"), + * // resolution: "STRING_VALUE", + * // storage: [ // ThumbnailConfigurationStorageList + * // "STRING_VALUE", + * // ], * // }, * // recordingReconnectWindowSeconds: Number("int"), + * // renditionConfiguration: { // RenditionConfiguration + * // renditionSelection: "STRING_VALUE", + * // renditions: [ // RenditionConfigurationRenditionList + * // "STRING_VALUE", + * // ], + * // }, * // }, * // truncatedEvents: [ // StreamEvents * // { // StreamEvent diff --git a/clients/client-ivs/src/commands/StartViewerSessionRevocationCommand.ts b/clients/client-ivs/src/commands/StartViewerSessionRevocationCommand.ts index 3af88efec4d8..7cfb1433b5d6 100644 --- a/clients/client-ivs/src/commands/StartViewerSessionRevocationCommand.ts +++ b/clients/client-ivs/src/commands/StartViewerSessionRevocationCommand.ts @@ -75,6 +75,12 @@ export interface StartViewerSessionRevocationCommandOutput * @throws {@link InternalServerException} (server fault) *

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

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

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

* diff --git a/clients/client-ivs/src/models/models_0.ts b/clients/client-ivs/src/models/models_0.ts index f7e588287fe8..f33e65a8a81e 100644 --- a/clients/client-ivs/src/models/models_0.ts +++ b/clients/client-ivs/src/models/models_0.ts @@ -376,6 +376,56 @@ export interface BatchStartViewerSessionRevocationResponse { errors?: BatchStartViewerSessionRevocationError[]; } +/** + * @public + *

+ */ +export class PendingVerification extends __BaseException { + readonly name: "PendingVerification" = "PendingVerification"; + readonly $fault: "client" = "client"; + /** + *

Your account is pending verification.

+ */ + exceptionMessage?: string; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType) { + super({ + name: "PendingVerification", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, PendingVerification.prototype); + this.exceptionMessage = opts.exceptionMessage; + } +} + +/** + * @public + *

+ */ +export class ThrottlingException extends __BaseException { + readonly name: "ThrottlingException" = "ThrottlingException"; + readonly $fault: "client" = "client"; + /** + *

Request was denied due to request throttling.

+ */ + exceptionMessage?: string; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType) { + super({ + name: "ThrottlingException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ThrottlingException.prototype); + this.exceptionMessage = opts.exceptionMessage; + } +} + /** * @public *

@@ -531,31 +581,6 @@ export interface CreateChannelResponse { streamKey?: StreamKey; } -/** - * @public - *

- */ -export class PendingVerification extends __BaseException { - readonly name: "PendingVerification" = "PendingVerification"; - readonly $fault: "client" = "client"; - /** - *

Your account is pending verification.

- */ - exceptionMessage?: string; - /** - * @internal - */ - constructor(opts: __ExceptionOptionType) { - super({ - name: "PendingVerification", - $fault: "client", - ...opts, - }); - Object.setPrototypeOf(this, PendingVerification.prototype); - this.exceptionMessage = opts.exceptionMessage; - } -} - /** * @public *

@@ -655,6 +680,62 @@ export interface DestinationConfiguration { s3?: S3DestinationConfiguration; } +/** + * @public + * @enum + */ +export const RenditionConfigurationRendition = { + FULL_HD: "FULL_HD", + HD: "HD", + LOWEST_RESOLUTION: "LOWEST_RESOLUTION", + SD: "SD", +} as const; + +/** + * @public + */ +export type RenditionConfigurationRendition = + (typeof RenditionConfigurationRendition)[keyof typeof RenditionConfigurationRendition]; + +/** + * @public + * @enum + */ +export const RenditionConfigurationRenditionSelection = { + ALL: "ALL", + CUSTOM: "CUSTOM", + NONE: "NONE", +} as const; + +/** + * @public + */ +export type RenditionConfigurationRenditionSelection = + (typeof RenditionConfigurationRenditionSelection)[keyof typeof RenditionConfigurationRenditionSelection]; + +/** + * @public + *

Object that describes which renditions should be recorded for a stream.

+ */ +export interface RenditionConfiguration { + /** + *

Indicates which set of renditions are recorded for a stream. For BASIC + * channels, the CUSTOM value has no effect. If CUSTOM is specified, a + * set of renditions must be specified in the renditions field. Default: + * ALL.

+ */ + renditionSelection?: RenditionConfigurationRenditionSelection | string; + + /** + *

Indicates which renditions are recorded for a stream, if renditionSelection + * is CUSTOM; otherwise, this field is irrelevant. The selected renditions are + * recorded if they are available during the stream. If a selected rendition is unavailable, the + * best available rendition is recorded. For details on the resolution dimensions of each + * rendition, see Auto-Record to Amazon S3.

+ */ + renditions?: (RenditionConfigurationRendition | string)[]; +} + /** * @public * @enum @@ -669,6 +750,38 @@ export const RecordingMode = { */ export type RecordingMode = (typeof RecordingMode)[keyof typeof RecordingMode]; +/** + * @public + * @enum + */ +export const ThumbnailConfigurationResolution = { + FULL_HD: "FULL_HD", + HD: "HD", + LOWEST_RESOLUTION: "LOWEST_RESOLUTION", + SD: "SD", +} as const; + +/** + * @public + */ +export type ThumbnailConfigurationResolution = + (typeof ThumbnailConfigurationResolution)[keyof typeof ThumbnailConfigurationResolution]; + +/** + * @public + * @enum + */ +export const ThumbnailConfigurationStorage = { + LATEST: "LATEST", + SEQUENTIAL: "SEQUENTIAL", +} as const; + +/** + * @public + */ +export type ThumbnailConfigurationStorage = + (typeof ThumbnailConfigurationStorage)[keyof typeof ThumbnailConfigurationStorage]; + /** * @public *

An object representing a configuration of thumbnails for recorded video.

@@ -683,15 +796,33 @@ export interface ThumbnailConfiguration { *

The targeted thumbnail-generation interval in seconds. This is configurable (and required) * only if recordingMode is INTERVAL. Default: 60.

*

- * Important: Setting a value for - * targetIntervalSeconds does not guarantee that thumbnails are generated at the - * specified interval. For thumbnails to be generated at the targetIntervalSeconds - * interval, the IDR/Keyframe value for the input video must be less than the - * targetIntervalSeconds value. See Amazon IVS Streaming Configuration - * for information on setting IDR/Keyframe to the recommended value in video-encoder - * settings.

+ * Important: For the BASIC channel type, + * setting a value for targetIntervalSeconds does not guarantee that thumbnails are + * generated at the specified interval. For thumbnails to be generated at the + * targetIntervalSeconds interval, the IDR/Keyframe value for the + * input video must be less than the targetIntervalSeconds value. See Amazon IVS Streaming + * Configuration for information on setting IDR/Keyframe to the + * recommended value in video-encoder settings.

*/ targetIntervalSeconds?: number; + + /** + *

Indicates the desired resolution of recorded thumbnails. Thumbnails are recorded at the + * selected resolution if the corresponding rendition is available during the stream; otherwise, + * they are recorded at source resolution. For more information about resolution values and their + * corresponding height and width dimensions, see Auto-Record to Amazon S3. Default: + * Null (source resolution is returned).

+ */ + resolution?: ThumbnailConfigurationResolution | string; + + /** + *

Indicates the format in which thumbnails are recorded. SEQUENTIAL records all + * generated thumbnails in a serial manner, to the media/thumbnails directory. + * LATEST saves the latest thumbnail in media/latest_thumbnail/thumb.jpg and + * overwrites it at the interval specified by targetIntervalSeconds. You can enable + * both SEQUENTIAL and LATEST. Default: SEQUENTIAL.

+ */ + storage?: (ThumbnailConfigurationStorage | string)[]; } /** @@ -728,6 +859,11 @@ export interface CreateRecordingConfigurationRequest { * streams will be considered a single broadcast and merged together. Default: 0.

*/ recordingReconnectWindowSeconds?: number; + + /** + *

Object that describes which renditions should be recorded for a stream.

+ */ + renditionConfiguration?: RenditionConfiguration; } /** @@ -791,6 +927,11 @@ export interface RecordingConfiguration { * streams will be considered a single broadcast and merged together. Default: 0.

*/ recordingReconnectWindowSeconds?: number; + + /** + *

Object that describes which renditions should be recorded for a stream.

+ */ + renditionConfiguration?: RenditionConfiguration; } /** @@ -1898,31 +2039,6 @@ export interface PutMetadataRequest { metadata: string | undefined; } -/** - * @public - *

- */ -export class ThrottlingException extends __BaseException { - readonly name: "ThrottlingException" = "ThrottlingException"; - readonly $fault: "client" = "client"; - /** - *

Request was denied due to request throttling.

- */ - exceptionMessage?: string; - /** - * @internal - */ - constructor(opts: __ExceptionOptionType) { - super({ - name: "ThrottlingException", - $fault: "client", - ...opts, - }); - Object.setPrototypeOf(this, ThrottlingException.prototype); - this.exceptionMessage = opts.exceptionMessage; - } -} - /** * @public */ diff --git a/clients/client-ivs/src/protocols/Aws_restJson1.ts b/clients/client-ivs/src/protocols/Aws_restJson1.ts index e97ae95b80c1..4031b963cb73 100644 --- a/clients/client-ivs/src/protocols/Aws_restJson1.ts +++ b/clients/client-ivs/src/protocols/Aws_restJson1.ts @@ -92,6 +92,8 @@ import { DestinationConfiguration, InternalServerException, PendingVerification, + RenditionConfiguration, + RenditionConfigurationRendition, ResourceNotFoundException, S3DestinationConfiguration, ServiceQuotaExceededException, @@ -103,6 +105,7 @@ import { StreamUnavailable, ThrottlingException, ThumbnailConfiguration, + ThumbnailConfigurationStorage, ValidationException, } from "../models/models_0"; @@ -249,6 +252,7 @@ export const se_CreateRecordingConfigurationCommand = async ( destinationConfiguration: (_) => _json(_), name: [], recordingReconnectWindowSeconds: [], + renditionConfiguration: (_) => _json(_), tags: (_) => _json(_), thumbnailConfiguration: (_) => _json(_), }) @@ -1132,6 +1136,15 @@ const de_BatchStartViewerSessionRevocationCommandError = async ( }; const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); switch (errorCode) { + case "AccessDeniedException": + case "com.amazonaws.ivs#AccessDeniedException": + throw await de_AccessDeniedExceptionRes(parsedOutput, context); + case "PendingVerification": + case "com.amazonaws.ivs#PendingVerification": + throw await de_PendingVerificationRes(parsedOutput, context); + case "ThrottlingException": + case "com.amazonaws.ivs#ThrottlingException": + throw await de_ThrottlingExceptionRes(parsedOutput, context); case "ValidationException": case "com.amazonaws.ivs#ValidationException": throw await de_ValidationExceptionRes(parsedOutput, context); @@ -2385,6 +2398,12 @@ const de_StartViewerSessionRevocationCommandError = async ( case "InternalServerException": case "com.amazonaws.ivs#InternalServerException": throw await de_InternalServerExceptionRes(parsedOutput, context); + case "PendingVerification": + case "com.amazonaws.ivs#PendingVerification": + throw await de_PendingVerificationRes(parsedOutput, context); + case "ResourceNotFoundException": + case "com.amazonaws.ivs#ResourceNotFoundException": + throw await de_ResourceNotFoundExceptionRes(parsedOutput, context); case "ThrottlingException": case "com.amazonaws.ivs#ThrottlingException": throw await de_ThrottlingExceptionRes(parsedOutput, context); @@ -2807,6 +2826,10 @@ const de_ValidationExceptionRes = async (parsedOutput: any, context: __SerdeCont // se_DestinationConfiguration omitted. +// se_RenditionConfiguration omitted. + +// se_RenditionConfigurationRenditionList omitted. + // se_S3DestinationConfiguration omitted. // se_StreamFilters omitted. @@ -2817,6 +2840,8 @@ const de_ValidationExceptionRes = async (parsedOutput: any, context: __SerdeCont // se_ThumbnailConfiguration omitted. +// se_ThumbnailConfigurationStorageList omitted. + // de_AudioConfiguration omitted. // de_BatchError omitted. @@ -2851,6 +2876,10 @@ const de_ValidationExceptionRes = async (parsedOutput: any, context: __SerdeCont // de_RecordingConfigurationSummary omitted. +// de_RenditionConfiguration omitted. + +// de_RenditionConfigurationRenditionList omitted. + // de_S3DestinationConfiguration omitted. /** @@ -2968,6 +2997,8 @@ const de_StreamSummary = (output: any, context: __SerdeContext): StreamSummary = // de_ThumbnailConfiguration omitted. +// de_ThumbnailConfigurationStorageList omitted. + // de_VideoConfiguration omitted. const deserializeMetadata = (output: __HttpResponse): __ResponseMetadata => ({ diff --git a/codegen/sdk-codegen/aws-models/ivs.json b/codegen/sdk-codegen/aws-models/ivs.json index db5be732075f..525ef1aa3d17 100644 --- a/codegen/sdk-codegen/aws-models/ivs.json +++ b/codegen/sdk-codegen/aws-models/ivs.json @@ -1056,6 +1056,15 @@ "target": "com.amazonaws.ivs#BatchStartViewerSessionRevocationResponse" }, "errors": [ + { + "target": "com.amazonaws.ivs#AccessDeniedException" + }, + { + "target": "com.amazonaws.ivs#PendingVerification" + }, + { + "target": "com.amazonaws.ivs#ThrottlingException" + }, { "target": "com.amazonaws.ivs#ValidationException" } @@ -1624,6 +1633,12 @@ "smithy.api#default": 0, "smithy.api#documentation": "

If a broadcast disconnects and then reconnects within the specified interval, the multiple\n streams will be considered a single broadcast and merged together. Default: 0.

" } + }, + "renditionConfiguration": { + "target": "com.amazonaws.ivs#RenditionConfiguration", + "traits": { + "smithy.api#documentation": "

Object that describes which renditions should be recorded for a stream.

" + } } } }, @@ -3101,6 +3116,12 @@ "smithy.api#default": 0, "smithy.api#documentation": "

If a broadcast disconnects and then reconnects within the specified interval, the multiple\n streams will be considered a single broadcast and merged together. Default: 0.

" } + }, + "renditionConfiguration": { + "target": "com.amazonaws.ivs#RenditionConfiguration", + "traits": { + "smithy.api#documentation": "

Object that describes which renditions should be recorded for a stream.

" + } } }, "traits": { @@ -3218,6 +3239,74 @@ } } }, + "com.amazonaws.ivs#RenditionConfiguration": { + "type": "structure", + "members": { + "renditionSelection": { + "target": "com.amazonaws.ivs#RenditionConfigurationRenditionSelection", + "traits": { + "smithy.api#documentation": "

Indicates which set of renditions are recorded for a stream. For BASIC\n channels, the CUSTOM value has no effect. If CUSTOM is specified, a\n set of renditions must be specified in the renditions field. Default:\n ALL.

" + } + }, + "renditions": { + "target": "com.amazonaws.ivs#RenditionConfigurationRenditionList", + "traits": { + "smithy.api#documentation": "

Indicates which renditions are recorded for a stream, if renditionSelection\n is CUSTOM; otherwise, this field is irrelevant. The selected renditions are\n recorded if they are available during the stream. If a selected rendition is unavailable, the\n best available rendition is recorded. For details on the resolution dimensions of each\n rendition, see Auto-Record to Amazon S3.

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

Object that describes which renditions should be recorded for a stream.

" + } + }, + "com.amazonaws.ivs#RenditionConfigurationRendition": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "FULL_HD", + "name": "FULL_HD" + }, + { + "value": "HD", + "name": "HD" + }, + { + "value": "SD", + "name": "SD" + }, + { + "value": "LOWEST_RESOLUTION", + "name": "LOWEST_RESOLUTION" + } + ] + } + }, + "com.amazonaws.ivs#RenditionConfigurationRenditionList": { + "type": "list", + "member": { + "target": "com.amazonaws.ivs#RenditionConfigurationRendition" + } + }, + "com.amazonaws.ivs#RenditionConfigurationRenditionSelection": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "ALL", + "name": "ALL" + }, + { + "value": "NONE", + "name": "NONE" + }, + { + "value": "CUSTOM", + "name": "CUSTOM" + } + ] + } + }, "com.amazonaws.ivs#ResourceArn": { "type": "string", "traits": { @@ -3300,6 +3389,12 @@ { "target": "com.amazonaws.ivs#InternalServerException" }, + { + "target": "com.amazonaws.ivs#PendingVerification" + }, + { + "target": "com.amazonaws.ivs#ResourceNotFoundException" + }, { "target": "com.amazonaws.ivs#ThrottlingException" }, @@ -3953,7 +4048,19 @@ "target": "com.amazonaws.ivs#TargetIntervalSeconds", "traits": { "smithy.api#default": 0, - "smithy.api#documentation": "

The targeted thumbnail-generation interval in seconds. This is configurable (and required)\n only if recordingMode is INTERVAL. Default: 60.

\n

\n Important: Setting a value for\n targetIntervalSeconds does not guarantee that thumbnails are generated at the\n specified interval. For thumbnails to be generated at the targetIntervalSeconds\n interval, the IDR/Keyframe value for the input video must be less than the\n targetIntervalSeconds value. See Amazon IVS Streaming Configuration\n for information on setting IDR/Keyframe to the recommended value in video-encoder\n settings.

" + "smithy.api#documentation": "

The targeted thumbnail-generation interval in seconds. This is configurable (and required)\n only if recordingMode is INTERVAL. Default: 60.

\n

\n Important: For the BASIC channel type,\n setting a value for targetIntervalSeconds does not guarantee that thumbnails are\n generated at the specified interval. For thumbnails to be generated at the\n targetIntervalSeconds interval, the IDR/Keyframe value for the\n input video must be less than the targetIntervalSeconds value. See Amazon IVS Streaming\n Configuration for information on setting IDR/Keyframe to the\n recommended value in video-encoder settings.

" + } + }, + "resolution": { + "target": "com.amazonaws.ivs#ThumbnailConfigurationResolution", + "traits": { + "smithy.api#documentation": "

Indicates the desired resolution of recorded thumbnails. Thumbnails are recorded at the\n selected resolution if the corresponding rendition is available during the stream; otherwise,\n they are recorded at source resolution. For more information about resolution values and their\n corresponding height and width dimensions, see Auto-Record to Amazon S3. Default:\n Null (source resolution is returned).

" + } + }, + "storage": { + "target": "com.amazonaws.ivs#ThumbnailConfigurationStorageList", + "traits": { + "smithy.api#documentation": "

Indicates the format in which thumbnails are recorded. SEQUENTIAL records all\n generated thumbnails in a serial manner, to the media/thumbnails directory.\n LATEST saves the latest thumbnail in media/latest_thumbnail/thumb.jpg and\n overwrites it at the interval specified by targetIntervalSeconds. You can enable\n both SEQUENTIAL and LATEST. Default: SEQUENTIAL.

" } } }, @@ -3961,6 +4068,50 @@ "smithy.api#documentation": "

An object representing a configuration of thumbnails for recorded video.

" } }, + "com.amazonaws.ivs#ThumbnailConfigurationResolution": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "FULL_HD", + "name": "FULL_HD" + }, + { + "value": "HD", + "name": "HD" + }, + { + "value": "SD", + "name": "SD" + }, + { + "value": "LOWEST_RESOLUTION", + "name": "LOWEST_RESOLUTION" + } + ] + } + }, + "com.amazonaws.ivs#ThumbnailConfigurationStorage": { + "type": "string", + "traits": { + "smithy.api#enum": [ + { + "value": "SEQUENTIAL", + "name": "SEQUENTIAL" + }, + { + "value": "LATEST", + "name": "LATEST" + } + ] + } + }, + "com.amazonaws.ivs#ThumbnailConfigurationStorageList": { + "type": "list", + "member": { + "target": "com.amazonaws.ivs#ThumbnailConfigurationStorage" + } + }, "com.amazonaws.ivs#Time": { "type": "timestamp", "traits": {