From 5c09c989b8e5d7aa79df14a5b85ad55aa1c038dd Mon Sep 17 00:00:00 2001 From: AWS SDK Swift Automation Date: Mon, 28 Oct 2024 18:05:32 +0000 Subject: [PATCH 1/3] Update API model --- .../aws-models/mediapackagev2.json | 2183 ++++++++++++++--- .../sdk-codegen/aws-models/opensearch.json | 69 + codegen/sdk-codegen/aws-models/rds.json | 68 +- .../aws-models/storage-gateway.json | 28 +- 4 files changed, 2024 insertions(+), 324 deletions(-) diff --git a/codegen/sdk-codegen/aws-models/mediapackagev2.json b/codegen/sdk-codegen/aws-models/mediapackagev2.json index 01de86232e9..430f33117da 100644 --- a/codegen/sdk-codegen/aws-models/mediapackagev2.json +++ b/codegen/sdk-codegen/aws-models/mediapackagev2.json @@ -42,6 +42,112 @@ } } }, + "com.amazonaws.mediapackagev2#CancelHarvestJob": { + "type": "operation", + "input": { + "target": "com.amazonaws.mediapackagev2#CancelHarvestJobRequest" + }, + "output": { + "target": "com.amazonaws.mediapackagev2#CancelHarvestJobResponse" + }, + "errors": [ + { + "target": "com.amazonaws.mediapackagev2#AccessDeniedException" + }, + { + "target": "com.amazonaws.mediapackagev2#ConflictException" + }, + { + "target": "com.amazonaws.mediapackagev2#InternalServerException" + }, + { + "target": "com.amazonaws.mediapackagev2#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.mediapackagev2#ThrottlingException" + }, + { + "target": "com.amazonaws.mediapackagev2#ValidationException" + } + ], + "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to cancel a harvest job on an endpoint", + "smithy.api#documentation": "

Cancels an in-progress harvest job.

", + "smithy.api#examples": [ + { + "title": "Cancel a Harvest Job", + "input": { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannelName", + "OriginEndpointName": "exampleOriginEndpointName", + "HarvestJobName": "HarvestJobName" + }, + "output": {} + } + ], + "smithy.api#http": { + "method": "PUT", + "uri": "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}/harvestJob/{HarvestJobName}", + "code": 200 + }, + "smithy.api#idempotent": {} + } + }, + "com.amazonaws.mediapackagev2#CancelHarvestJobRequest": { + "type": "structure", + "members": { + "ChannelGroupName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the channel group containing the channel from which the harvest job is running.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "ChannelName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the channel from which the harvest job is running.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "OriginEndpointName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the origin endpoint that the harvest job is harvesting from. This cannot be changed after the harvest job is submitted.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "HarvestJobName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the harvest job to cancel. This name must be unique within the channel and cannot be changed after the harvest job is submitted.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "ETag": { + "target": "com.amazonaws.mediapackagev2#EntityTag", + "traits": { + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The current Entity Tag (ETag) associated with the harvest job. Used for concurrency control.

", + "smithy.api#httpHeader": "x-amzn-update-if-match" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.mediapackagev2#CancelHarvestJobResponse": { + "type": "structure", + "members": {}, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.mediapackagev2#ChannelGroupListConfiguration": { "type": "structure", "members": { @@ -109,6 +215,9 @@ "resources": [ { "target": "com.amazonaws.mediapackagev2#ChannelResource" + }, + { + "target": "com.amazonaws.mediapackagev2#HarvestJobResource" } ], "traits": { @@ -821,123 +930,13 @@ "target": "com.amazonaws.mediapackagev2#CreateDashManifestConfiguration" } }, - "com.amazonaws.mediapackagev2#CreateHlsManifestConfiguration": { - "type": "structure", - "members": { - "ManifestName": { - "target": "com.amazonaws.mediapackagev2#ManifestName", - "traits": { - "smithy.api#documentation": "

A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

", - "smithy.api#required": {} - } - }, - "ChildManifestName": { - "target": "com.amazonaws.mediapackagev2#ManifestName", - "traits": { - "smithy.api#documentation": "

A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index, with an added suffix to distinguish it from the manifest name. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

" - } - }, - "ScteHls": { - "target": "com.amazonaws.mediapackagev2#ScteHls" - }, - "StartTag": { - "target": "com.amazonaws.mediapackagev2#StartTag" - }, - "ManifestWindowSeconds": { - "target": "smithy.api#Integer", - "traits": { - "smithy.api#documentation": "

The total duration (in seconds) of the manifest's content.

", - "smithy.api#range": { - "min": 30 - } - } - }, - "ProgramDateTimeIntervalSeconds": { - "target": "smithy.api#Integer", - "traits": { - "smithy.api#documentation": "

Inserts EXT-X-PROGRAM-DATE-TIME tags in the output manifest at the interval that you specify. If you don't enter an interval,\n EXT-X-PROGRAM-DATE-TIME tags aren't included in the manifest.\n The tags sync the stream to the wall clock so that viewers can seek to a specific time in the playback timeline on the player.\n ID3Timed metadata messages generate every 5 seconds whenever the content is ingested.

\n

Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.

", - "smithy.api#range": { - "min": 1, - "max": 1209600 - } - } - }, - "FilterConfiguration": { - "target": "com.amazonaws.mediapackagev2#FilterConfiguration" - } - }, - "traits": { - "smithy.api#documentation": "

Create an HTTP live streaming (HLS) manifest configuration.

" - } - }, - "com.amazonaws.mediapackagev2#CreateHlsManifests": { - "type": "list", - "member": { - "target": "com.amazonaws.mediapackagev2#CreateHlsManifestConfiguration" - } - }, - "com.amazonaws.mediapackagev2#CreateLowLatencyHlsManifestConfiguration": { - "type": "structure", - "members": { - "ManifestName": { - "target": "com.amazonaws.mediapackagev2#ManifestName", - "traits": { - "smithy.api#documentation": "

A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

", - "smithy.api#required": {} - } - }, - "ChildManifestName": { - "target": "com.amazonaws.mediapackagev2#ManifestName", - "traits": { - "smithy.api#documentation": "

A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index, with an added suffix to distinguish it from the manifest name. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

" - } - }, - "ScteHls": { - "target": "com.amazonaws.mediapackagev2#ScteHls" - }, - "StartTag": { - "target": "com.amazonaws.mediapackagev2#StartTag" - }, - "ManifestWindowSeconds": { - "target": "smithy.api#Integer", - "traits": { - "smithy.api#documentation": "

The total duration (in seconds) of the manifest's content.

", - "smithy.api#range": { - "min": 30 - } - } - }, - "ProgramDateTimeIntervalSeconds": { - "target": "smithy.api#Integer", - "traits": { - "smithy.api#documentation": "

Inserts EXT-X-PROGRAM-DATE-TIME tags in the output manifest at the interval that you specify. If you don't enter an interval,\n EXT-X-PROGRAM-DATE-TIME tags aren't included in the manifest.\n The tags sync the stream to the wall clock so that viewers can seek to a specific time in the playback timeline on the player.\n ID3Timed metadata messages generate every 5 seconds whenever the content is ingested.

\n

Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.

", - "smithy.api#range": { - "min": 1, - "max": 1209600 - } - } - }, - "FilterConfiguration": { - "target": "com.amazonaws.mediapackagev2#FilterConfiguration" - } - }, - "traits": { - "smithy.api#documentation": "

Create a low-latency HTTP live streaming (HLS) manifest configuration.

" - } - }, - "com.amazonaws.mediapackagev2#CreateLowLatencyHlsManifests": { - "type": "list", - "member": { - "target": "com.amazonaws.mediapackagev2#CreateLowLatencyHlsManifestConfiguration" - } - }, - "com.amazonaws.mediapackagev2#CreateOriginEndpoint": { + "com.amazonaws.mediapackagev2#CreateHarvestJob": { "type": "operation", "input": { - "target": "com.amazonaws.mediapackagev2#CreateOriginEndpointRequest" + "target": "com.amazonaws.mediapackagev2#CreateHarvestJobRequest" }, "output": { - "target": "com.amazonaws.mediapackagev2#CreateOriginEndpointResponse" + "target": "com.amazonaws.mediapackagev2#CreateHarvestJobResponse" }, "errors": [ { @@ -963,64 +962,492 @@ } ], "traits": { - "aws.iam#actionPermissionDescription": "Grants permission to create an origin endpoint for a channel", + "aws.iam#actionPermissionDescription": "Grants permission to create a HarvestJob", "aws.iam#conditionKeys": [ - "aws:TagKeys", - "aws:RequestTag/${TagKey}" + "aws:ResourceTag/${TagKey}" ], - "smithy.api#documentation": "

The endpoint is attached to a channel, and represents the output of the live content. You can associate multiple endpoints to a single channel. Each endpoint gives players and downstream CDNs (such as Amazon CloudFront) access to the content for playback. Content can't be served from a channel until it has an endpoint. You can create only one endpoint with each request.

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

Creates a new harvest job to export content from a MediaPackage v2 channel to an S3 bucket.

", "smithy.api#examples": [ { - "title": "Creating an OriginEndpoint with container type TS, and encryption enabled", + "title": "Creating a Harvest Job", "input": { "ChannelGroupName": "exampleChannelGroup", - "ChannelName": "exampleChannel", - "OriginEndpointName": "exampleOriginEndpointTS", - "ContainerType": "TS", - "Description": "Description for exampleOriginEndpointTS", - "StartoverWindowSeconds": 300, - "ForceEndpointErrorConfiguration": { - "EndpointErrorConditions": [ - "STALE_MANIFEST", - "INCOMPLETE_MANIFEST", - "MISSING_DRM_KEY", - "SLATE_INPUT" + "ChannelName": "exampleChannelName", + "OriginEndpointName": "exampleOriginEndpointName", + "Description": "Example HarvestJob description", + "HarvestedManifests": { + "HlsManifests": [ + { + "ManifestName": "HlsManifest" + } + ], + "DashManifests": [ + { + "ManifestName": "DashManifest" + } + ], + "LowLatencyHlsManifests": [ + { + "ManifestName": "LowLatencyHlsManifest" + } ] }, - "Segment": { - "SegmentDurationSeconds": 6, - "SegmentName": "segmentName", - "TsUseAudioRenditionGroup": true, - "IncludeIframeOnlyStreams": true, - "TsIncludeDvbSubtitles": true, - "Scte": { - "ScteFilter": [ - "SPLICE_INSERT", - "BREAK" - ] - }, - "Encryption": { - "ConstantInitializationVector": "A382A901F3C1F7718512266CFFBB0B7E", - "EncryptionMethod": { - "TsEncryptionMethod": "AES_128" - }, - "KeyRotationIntervalSeconds": 300, - "SpekeKeyProvider": { - "EncryptionContractConfiguration": { - "PresetSpeke20Audio": "SHARED", - "PresetSpeke20Video": "SHARED" - }, - "ResourceId": "ResourceId", - "DrmSystems": [ - "CLEAR_KEY_AES_128" - ], - "RoleArn": "arn:aws:iam::123456789012:role/empRole", - "Url": "https://foo.com" - } - } + "ScheduleConfiguration": { + "StartTime": "2024-05-28T06:00:00.00Z", + "EndTime": "2024-05-28T12:00:00.00Z" }, - "HlsManifests": [ - { + "Destination": { + "S3Destination": { + "BucketName": "harvestJobS3DestinationBucket", + "DestinationPath": "manifests" + } + } + }, + "output": { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannelName", + "OriginEndpointName": "exampleOriginEndpointName", + "Destination": { + "S3Destination": { + "BucketName": "harvestJobS3DestinationBucket", + "DestinationPath": "manifests" + } + }, + "HarvestJobName": "HarvestJobName", + "HarvestedManifests": { + "HlsManifests": [ + { + "ManifestName": "HlsManifest" + } + ], + "DashManifests": [ + { + "ManifestName": "DashManifest" + } + ], + "LowLatencyHlsManifests": [ + { + "ManifestName": "LowLatencyHlsManifest" + } + ] + }, + "Description": "Example HarvestJob description", + "ScheduleConfiguration": { + "StartTime": "2024-05-28T06:00:00.00Z", + "EndTime": "2024-05-28T12:00:00.00Z" + }, + "Arn": "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannelName/originEndpoint/exampleOriginEndpointName/harvestJob/HarvestJobName", + "CreatedAt": "2024-05-28T09:36:00.00Z", + "ModifiedAt": "2024-05-28T09:36:00.00Z", + "Status": "QUEUED", + "ETag": "GlfT+dwAyGIR4wuy8nKWl1RDPwSrjQej9qUutLZxoxk=", + "Tags": { + "key1": "value1", + "key2": "value2" + } + } + } + ], + "smithy.api#http": { + "method": "POST", + "uri": "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}/harvestJob" + }, + "smithy.api#idempotent": {} + } + }, + "com.amazonaws.mediapackagev2#CreateHarvestJobRequest": { + "type": "structure", + "members": { + "ChannelGroupName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the channel group containing the channel from which to harvest content.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "ChannelName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the channel from which to harvest content.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "OriginEndpointName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the origin endpoint from which to harvest content.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "Description": { + "target": "com.amazonaws.mediapackagev2#ResourceDescription", + "traits": { + "smithy.api#documentation": "

An optional description for the harvest job.

" + } + }, + "HarvestedManifests": { + "target": "com.amazonaws.mediapackagev2#HarvestedManifests", + "traits": { + "smithy.api#documentation": "

A list of manifests to be harvested.

", + "smithy.api#required": {} + } + }, + "ScheduleConfiguration": { + "target": "com.amazonaws.mediapackagev2#HarvesterScheduleConfiguration", + "traits": { + "smithy.api#documentation": "

The configuration for when the harvest job should run, including start and end times.

", + "smithy.api#required": {} + } + }, + "Destination": { + "target": "com.amazonaws.mediapackagev2#Destination", + "traits": { + "smithy.api#documentation": "

The S3 destination where the harvested content will be placed.

", + "smithy.api#required": {} + } + }, + "ClientToken": { + "target": "com.amazonaws.mediapackagev2#IdempotencyToken", + "traits": { + "smithy.api#documentation": "

A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.

", + "smithy.api#httpHeader": "x-amzn-client-token", + "smithy.api#idempotencyToken": {} + } + }, + "HarvestJobName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

A name for the harvest job. This name must be unique within the channel.

" + } + }, + "Tags": { + "target": "com.amazonaws.mediapackagev2#TagMap", + "traits": { + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

A collection of tags associated with the harvest job.

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

The request object for creating a new harvest job.

", + "smithy.api#input": {} + } + }, + "com.amazonaws.mediapackagev2#CreateHarvestJobResponse": { + "type": "structure", + "members": { + "ChannelGroupName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the channel group containing the channel from which content is being harvested.

", + "smithy.api#required": {} + } + }, + "ChannelName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the channel from which content is being harvested.

", + "smithy.api#required": {} + } + }, + "OriginEndpointName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the origin endpoint from which content is being harvested.

", + "smithy.api#required": {} + } + }, + "Destination": { + "target": "com.amazonaws.mediapackagev2#Destination", + "traits": { + "smithy.api#documentation": "

The S3 destination where the harvested content will be placed.

", + "smithy.api#required": {} + } + }, + "HarvestJobName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the created harvest job.

", + "smithy.api#required": {} + } + }, + "HarvestedManifests": { + "target": "com.amazonaws.mediapackagev2#HarvestedManifests", + "traits": { + "smithy.api#documentation": "

A list of manifests that will be harvested.

", + "smithy.api#required": {} + } + }, + "Description": { + "target": "com.amazonaws.mediapackagev2#ResourceDescription", + "traits": { + "smithy.api#documentation": "

The description of the harvest job, if provided.

" + } + }, + "ScheduleConfiguration": { + "target": "com.amazonaws.mediapackagev2#HarvesterScheduleConfiguration", + "traits": { + "smithy.api#documentation": "

The configuration for when the harvest job will run, including start and end times.

", + "smithy.api#required": {} + } + }, + "Arn": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the created harvest job.

", + "smithy.api#required": {} + } + }, + "CreatedAt": { + "target": "smithy.api#Timestamp", + "traits": { + "smithy.api#documentation": "

The date and time the harvest job was created.

", + "smithy.api#required": {} + } + }, + "ModifiedAt": { + "target": "smithy.api#Timestamp", + "traits": { + "smithy.api#documentation": "

The date and time the harvest job was last modified.

", + "smithy.api#required": {} + } + }, + "Status": { + "target": "com.amazonaws.mediapackagev2#HarvestJobStatus", + "traits": { + "smithy.api#documentation": "

The current status of the harvest job (e.g., CREATED, IN_PROGRESS, ABORTED, COMPLETED, FAILED).

", + "smithy.api#required": {} + } + }, + "ErrorMessage": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "

An error message if the harvest job creation failed.

" + } + }, + "ETag": { + "target": "com.amazonaws.mediapackagev2#EntityTag", + "traits": { + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The current version of the harvest job. Used for concurrency control.

" + } + }, + "Tags": { + "target": "com.amazonaws.mediapackagev2#TagMap", + "traits": { + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

A collection of tags associated with the harvest job.

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

The response object returned after creating a harvest job.

", + "smithy.api#output": {} + } + }, + "com.amazonaws.mediapackagev2#CreateHlsManifestConfiguration": { + "type": "structure", + "members": { + "ManifestName": { + "target": "com.amazonaws.mediapackagev2#ManifestName", + "traits": { + "smithy.api#documentation": "

A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

", + "smithy.api#required": {} + } + }, + "ChildManifestName": { + "target": "com.amazonaws.mediapackagev2#ManifestName", + "traits": { + "smithy.api#documentation": "

A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index, with an added suffix to distinguish it from the manifest name. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

" + } + }, + "ScteHls": { + "target": "com.amazonaws.mediapackagev2#ScteHls" + }, + "StartTag": { + "target": "com.amazonaws.mediapackagev2#StartTag" + }, + "ManifestWindowSeconds": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "

The total duration (in seconds) of the manifest's content.

", + "smithy.api#range": { + "min": 30 + } + } + }, + "ProgramDateTimeIntervalSeconds": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "

Inserts EXT-X-PROGRAM-DATE-TIME tags in the output manifest at the interval that you specify. If you don't enter an interval,\n EXT-X-PROGRAM-DATE-TIME tags aren't included in the manifest.\n The tags sync the stream to the wall clock so that viewers can seek to a specific time in the playback timeline on the player.\n ID3Timed metadata messages generate every 5 seconds whenever the content is ingested.

\n

Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.

", + "smithy.api#range": { + "min": 1, + "max": 1209600 + } + } + }, + "FilterConfiguration": { + "target": "com.amazonaws.mediapackagev2#FilterConfiguration" + } + }, + "traits": { + "smithy.api#documentation": "

Create an HTTP live streaming (HLS) manifest configuration.

" + } + }, + "com.amazonaws.mediapackagev2#CreateHlsManifests": { + "type": "list", + "member": { + "target": "com.amazonaws.mediapackagev2#CreateHlsManifestConfiguration" + } + }, + "com.amazonaws.mediapackagev2#CreateLowLatencyHlsManifestConfiguration": { + "type": "structure", + "members": { + "ManifestName": { + "target": "com.amazonaws.mediapackagev2#ManifestName", + "traits": { + "smithy.api#documentation": "

A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

", + "smithy.api#required": {} + } + }, + "ChildManifestName": { + "target": "com.amazonaws.mediapackagev2#ManifestName", + "traits": { + "smithy.api#documentation": "

A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index, with an added suffix to distinguish it from the manifest name. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object.

" + } + }, + "ScteHls": { + "target": "com.amazonaws.mediapackagev2#ScteHls" + }, + "StartTag": { + "target": "com.amazonaws.mediapackagev2#StartTag" + }, + "ManifestWindowSeconds": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "

The total duration (in seconds) of the manifest's content.

", + "smithy.api#range": { + "min": 30 + } + } + }, + "ProgramDateTimeIntervalSeconds": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "

Inserts EXT-X-PROGRAM-DATE-TIME tags in the output manifest at the interval that you specify. If you don't enter an interval,\n EXT-X-PROGRAM-DATE-TIME tags aren't included in the manifest.\n The tags sync the stream to the wall clock so that viewers can seek to a specific time in the playback timeline on the player.\n ID3Timed metadata messages generate every 5 seconds whenever the content is ingested.

\n

Irrespective of this parameter, if any ID3Timed metadata is in the HLS input, it is passed through to the HLS output.

", + "smithy.api#range": { + "min": 1, + "max": 1209600 + } + } + }, + "FilterConfiguration": { + "target": "com.amazonaws.mediapackagev2#FilterConfiguration" + } + }, + "traits": { + "smithy.api#documentation": "

Create a low-latency HTTP live streaming (HLS) manifest configuration.

" + } + }, + "com.amazonaws.mediapackagev2#CreateLowLatencyHlsManifests": { + "type": "list", + "member": { + "target": "com.amazonaws.mediapackagev2#CreateLowLatencyHlsManifestConfiguration" + } + }, + "com.amazonaws.mediapackagev2#CreateOriginEndpoint": { + "type": "operation", + "input": { + "target": "com.amazonaws.mediapackagev2#CreateOriginEndpointRequest" + }, + "output": { + "target": "com.amazonaws.mediapackagev2#CreateOriginEndpointResponse" + }, + "errors": [ + { + "target": "com.amazonaws.mediapackagev2#AccessDeniedException" + }, + { + "target": "com.amazonaws.mediapackagev2#ConflictException" + }, + { + "target": "com.amazonaws.mediapackagev2#InternalServerException" + }, + { + "target": "com.amazonaws.mediapackagev2#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.mediapackagev2#ServiceQuotaExceededException" + }, + { + "target": "com.amazonaws.mediapackagev2#ThrottlingException" + }, + { + "target": "com.amazonaws.mediapackagev2#ValidationException" + } + ], + "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to create an origin endpoint for a channel", + "aws.iam#conditionKeys": [ + "aws:TagKeys", + "aws:RequestTag/${TagKey}" + ], + "smithy.api#documentation": "

The endpoint is attached to a channel, and represents the output of the live content. You can associate multiple endpoints to a single channel. Each endpoint gives players and downstream CDNs (such as Amazon CloudFront) access to the content for playback. Content can't be served from a channel until it has an endpoint. You can create only one endpoint with each request.

", + "smithy.api#examples": [ + { + "title": "Creating an OriginEndpoint with container type TS, and encryption enabled", + "input": { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannel", + "OriginEndpointName": "exampleOriginEndpointTS", + "ContainerType": "TS", + "Description": "Description for exampleOriginEndpointTS", + "StartoverWindowSeconds": 300, + "ForceEndpointErrorConfiguration": { + "EndpointErrorConditions": [ + "STALE_MANIFEST", + "INCOMPLETE_MANIFEST", + "MISSING_DRM_KEY", + "SLATE_INPUT" + ] + }, + "Segment": { + "SegmentDurationSeconds": 6, + "SegmentName": "segmentName", + "TsUseAudioRenditionGroup": true, + "IncludeIframeOnlyStreams": true, + "TsIncludeDvbSubtitles": true, + "Scte": { + "ScteFilter": [ + "SPLICE_INSERT", + "BREAK" + ] + }, + "Encryption": { + "ConstantInitializationVector": "A382A901F3C1F7718512266CFFBB0B7E", + "EncryptionMethod": { + "TsEncryptionMethod": "AES_128" + }, + "KeyRotationIntervalSeconds": 300, + "SpekeKeyProvider": { + "EncryptionContractConfiguration": { + "PresetSpeke20Audio": "SHARED", + "PresetSpeke20Video": "SHARED" + }, + "ResourceId": "ResourceId", + "DrmSystems": [ + "CLEAR_KEY_AES_128" + ], + "RoleArn": "arn:aws:iam::123456789012:role/empRole", + "Url": "https://foo.com" + } + } + }, + "HlsManifests": [ + { "ManifestName": "exampleManifest1", "ChildManifestName": "exampleChildManifest1", "ScteHls": { @@ -2171,6 +2598,21 @@ "smithy.api#output": {} } }, + "com.amazonaws.mediapackagev2#Destination": { + "type": "structure", + "members": { + "S3Destination": { + "target": "com.amazonaws.mediapackagev2#S3DestinationConfig", + "traits": { + "smithy.api#documentation": "

The configuration for exporting harvested content to an S3 bucket. This includes details such as the bucket name and destination path within the bucket.

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

The configuration for the destination where the harvested content will be exported.

" + } + }, "com.amazonaws.mediapackagev2#DrmSystem": { "type": "enum", "members": { @@ -2827,66 +3269,365 @@ "smithy.api#documentation": "

The total duration (in seconds) of the manifest's content.

" } }, - "FilterConfiguration": { - "target": "com.amazonaws.mediapackagev2#FilterConfiguration" - }, - "MinUpdatePeriodSeconds": { - "target": "smithy.api#Integer", + "FilterConfiguration": { + "target": "com.amazonaws.mediapackagev2#FilterConfiguration" + }, + "MinUpdatePeriodSeconds": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "

Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest.

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

Minimum amount of content (in seconds) that a player must keep available in the buffer.

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

The amount of time (in seconds) that the player should be from the end of the manifest.

" + } + }, + "SegmentTemplateFormat": { + "target": "com.amazonaws.mediapackagev2#DashSegmentTemplateFormat", + "traits": { + "smithy.api#documentation": "

Determines the type of variable used in the media URL of the SegmentTemplate tag in the manifest. Also specifies if segment timeline information is included in SegmentTimeline or SegmentTemplate.

\n

Value description:

\n " + } + }, + "PeriodTriggers": { + "target": "com.amazonaws.mediapackagev2#DashPeriodTriggers", + "traits": { + "smithy.api#documentation": "

A list of triggers that controls when AWS Elemental MediaPackage separates the MPEG-DASH manifest into multiple periods. Leave this value empty to indicate that the manifest is contained all in one period.\n For more information about periods in the DASH manifest, see Multi-period DASH in AWS Elemental MediaPackage.

" + } + }, + "ScteDash": { + "target": "com.amazonaws.mediapackagev2#ScteDash", + "traits": { + "smithy.api#documentation": "

The SCTE configuration.

" + } + }, + "DrmSignaling": { + "target": "com.amazonaws.mediapackagev2#DashDrmSignaling", + "traits": { + "smithy.api#documentation": "

Determines how the DASH manifest signals the DRM content.

" + } + }, + "UtcTiming": { + "target": "com.amazonaws.mediapackagev2#DashUtcTiming", + "traits": { + "smithy.api#documentation": "

Determines the type of UTC timing included in the DASH Media Presentation Description (MPD).

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

Retrieve the DASH manifest configuration.

" + } + }, + "com.amazonaws.mediapackagev2#GetDashManifests": { + "type": "list", + "member": { + "target": "com.amazonaws.mediapackagev2#GetDashManifestConfiguration" + } + }, + "com.amazonaws.mediapackagev2#GetHarvestJob": { + "type": "operation", + "input": { + "target": "com.amazonaws.mediapackagev2#GetHarvestJobRequest" + }, + "output": { + "target": "com.amazonaws.mediapackagev2#GetHarvestJobResponse" + }, + "errors": [ + { + "target": "com.amazonaws.mediapackagev2#AccessDeniedException" + }, + { + "target": "com.amazonaws.mediapackagev2#InternalServerException" + }, + { + "target": "com.amazonaws.mediapackagev2#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.mediapackagev2#ThrottlingException" + }, + { + "target": "com.amazonaws.mediapackagev2#ValidationException" + } + ], + "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to retrieve a HarvestJob", + "smithy.api#documentation": "

Retrieves the details of a specific harvest job.

", + "smithy.api#examples": [ + { + "title": "Getting a Harvest Job", + "input": { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannelName", + "OriginEndpointName": "exampleOriginEndpointName", + "HarvestJobName": "HarvestJobName" + }, + "output": { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannelName", + "OriginEndpointName": "exampleOriginEndpointName", + "Destination": { + "S3Destination": { + "BucketName": "harvestJobS3DestinationBucket", + "DestinationPath": "manifests" + } + }, + "HarvestJobName": "HarvestJobName", + "HarvestedManifests": { + "HlsManifests": [ + { + "ManifestName": "HlsManifest" + } + ], + "DashManifests": [ + { + "ManifestName": "DashManifest" + } + ], + "LowLatencyHlsManifests": [ + { + "ManifestName": "LowLatencyHlsManifest" + } + ] + }, + "Description": "Example HarvestJob description", + "ScheduleConfiguration": { + "StartTime": "2024-05-28T06:00:00.00Z", + "EndTime": "2024-05-28T12:00:00.00Z" + }, + "Arn": "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannelName/originEndpoint/exampleOriginEndpointName/harvestJob/HarvestJobName", + "CreatedAt": "2024-05-28T09:36:00.00Z", + "ModifiedAt": "2024-05-28T09:36:00.00Z", + "Status": "QUEUED", + "ETag": "GlfT+dwAyGIR4wuy8nKWl1RDPwSrjQej9qUutLZxoxk=", + "Tags": { + "key1": "value1", + "key2": "value2" + } + } + } + ], + "smithy.api#http": { + "method": "GET", + "uri": "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}/harvestJob/{HarvestJobName}" + }, + "smithy.api#readonly": {}, + "smithy.waiters#waitable": { + "HarvestJobFinished": { + "description": "Waits for the HarvestJob to conclude to return", + "acceptors": [ + { + "state": "success", + "matcher": { + "output": { + "path": "Status", + "expected": "COMPLETED", + "comparator": "stringEquals" + } + } + }, + { + "state": "success", + "matcher": { + "output": { + "path": "Status", + "expected": "CANCELLED", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "Status", + "expected": "FAILED", + "comparator": "stringEquals" + } + } + }, + { + "state": "retry", + "matcher": { + "output": { + "path": "Status", + "expected": "QUEUED", + "comparator": "stringEquals" + } + } + }, + { + "state": "retry", + "matcher": { + "output": { + "path": "Status", + "expected": "IN_PROGRESS", + "comparator": "stringEquals" + } + } + } + ] + } + } + } + }, + "com.amazonaws.mediapackagev2#GetHarvestJobRequest": { + "type": "structure", + "members": { + "ChannelGroupName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the channel group containing the channel associated with the harvest job.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "ChannelName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the channel associated with the harvest job.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "OriginEndpointName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the origin endpoint associated with the harvest job.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "HarvestJobName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the harvest job to retrieve.

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

The request object for retrieving a specific harvest job.

", + "smithy.api#input": {} + } + }, + "com.amazonaws.mediapackagev2#GetHarvestJobResponse": { + "type": "structure", + "members": { + "ChannelGroupName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the channel group containing the channel associated with the harvest job.

", + "smithy.api#required": {} + } + }, + "ChannelName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the channel associated with the harvest job.

", + "smithy.api#required": {} + } + }, + "OriginEndpointName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the origin endpoint associated with the harvest job.

", + "smithy.api#required": {} + } + }, + "Destination": { + "target": "com.amazonaws.mediapackagev2#Destination", + "traits": { + "smithy.api#documentation": "

The S3 destination where the harvested content is being placed.

", + "smithy.api#required": {} + } + }, + "HarvestJobName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the harvest job.

", + "smithy.api#required": {} + } + }, + "HarvestedManifests": { + "target": "com.amazonaws.mediapackagev2#HarvestedManifests", + "traits": { + "smithy.api#documentation": "

A list of manifests that are being or have been harvested.

", + "smithy.api#required": {} + } + }, + "Description": { + "target": "com.amazonaws.mediapackagev2#ResourceDescription", + "traits": { + "smithy.api#documentation": "

The description of the harvest job, if provided.

" + } + }, + "ScheduleConfiguration": { + "target": "com.amazonaws.mediapackagev2#HarvesterScheduleConfiguration", "traits": { - "smithy.api#documentation": "

Minimum amount of time (in seconds) that the player should wait before requesting updates to the manifest.

" + "smithy.api#documentation": "

The configuration for when the harvest job is scheduled to run, including start and end times.

", + "smithy.api#required": {} } }, - "MinBufferTimeSeconds": { - "target": "smithy.api#Integer", + "Arn": { + "target": "smithy.api#String", "traits": { - "smithy.api#documentation": "

Minimum amount of content (in seconds) that a player must keep available in the buffer.

" + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the harvest job.

", + "smithy.api#required": {} } }, - "SuggestedPresentationDelaySeconds": { - "target": "smithy.api#Integer", + "CreatedAt": { + "target": "smithy.api#Timestamp", "traits": { - "smithy.api#documentation": "

The amount of time (in seconds) that the player should be from the end of the manifest.

" + "smithy.api#documentation": "

The date and time when the harvest job was created.

", + "smithy.api#required": {} } }, - "SegmentTemplateFormat": { - "target": "com.amazonaws.mediapackagev2#DashSegmentTemplateFormat", + "ModifiedAt": { + "target": "smithy.api#Timestamp", "traits": { - "smithy.api#documentation": "

Determines the type of variable used in the media URL of the SegmentTemplate tag in the manifest. Also specifies if segment timeline information is included in SegmentTimeline or SegmentTemplate.

\n

Value description:

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

The date and time when the harvest job was last modified.

", + "smithy.api#required": {} } }, - "PeriodTriggers": { - "target": "com.amazonaws.mediapackagev2#DashPeriodTriggers", + "Status": { + "target": "com.amazonaws.mediapackagev2#HarvestJobStatus", "traits": { - "smithy.api#documentation": "

A list of triggers that controls when AWS Elemental MediaPackage separates the MPEG-DASH manifest into multiple periods. Leave this value empty to indicate that the manifest is contained all in one period.\n For more information about periods in the DASH manifest, see Multi-period DASH in AWS Elemental MediaPackage.

" + "smithy.api#documentation": "

The current status of the harvest job (e.g., QUEUED, IN_PROGRESS, CANCELLED, COMPLETED, FAILED).

", + "smithy.api#required": {} } }, - "ScteDash": { - "target": "com.amazonaws.mediapackagev2#ScteDash", + "ErrorMessage": { + "target": "smithy.api#String", "traits": { - "smithy.api#documentation": "

The SCTE configuration.

" + "smithy.api#documentation": "

An error message if the harvest job encountered any issues.

" } }, - "DrmSignaling": { - "target": "com.amazonaws.mediapackagev2#DashDrmSignaling", + "ETag": { + "target": "com.amazonaws.mediapackagev2#EntityTag", "traits": { - "smithy.api#documentation": "

Determines how the DASH manifest signals the DRM content.

" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The current version of the harvest job. Used for concurrency control.

" } }, - "UtcTiming": { - "target": "com.amazonaws.mediapackagev2#DashUtcTiming", + "Tags": { + "target": "com.amazonaws.mediapackagev2#TagMap", "traits": { - "smithy.api#documentation": "

Determines the type of UTC timing included in the DASH Media Presentation Description (MPD).

" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

A collection of tags associated with the harvest job.

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

Retrieve the DASH manifest configuration.

" - } - }, - "com.amazonaws.mediapackagev2#GetDashManifests": { - "type": "list", - "member": { - "target": "com.amazonaws.mediapackagev2#GetDashManifestConfiguration" + "smithy.api#documentation": "

The response object containing the details of the requested harvest job.

", + "smithy.api#output": {} } }, "com.amazonaws.mediapackagev2#GetHlsManifestConfiguration": { @@ -3319,93 +4060,388 @@ "smithy.api#required": {} } }, - "OriginEndpointName": { - "target": "com.amazonaws.mediapackagev2#ResourceName", + "OriginEndpointName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name that describes the origin endpoint. The name is the primary identifier for the origin endpoint, and and must be unique for your account in the AWS Region and channel.

", + "smithy.api#required": {} + } + }, + "ContainerType": { + "target": "com.amazonaws.mediapackagev2#ContainerType", + "traits": { + "smithy.api#documentation": "

The type of container attached to this origin endpoint.

", + "smithy.api#required": {} + } + }, + "Segment": { + "target": "com.amazonaws.mediapackagev2#Segment", + "traits": { + "smithy.api#required": {} + } + }, + "CreatedAt": { + "target": "smithy.api#Timestamp", + "traits": { + "smithy.api#documentation": "

The date and time the origin endpoint was created.

", + "smithy.api#required": {} + } + }, + "ModifiedAt": { + "target": "smithy.api#Timestamp", + "traits": { + "smithy.api#documentation": "

The date and time the origin endpoint was modified.

", + "smithy.api#required": {} + } + }, + "Description": { + "target": "com.amazonaws.mediapackagev2#ResourceDescription", + "traits": { + "smithy.api#documentation": "

The description for your origin endpoint.

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

The size of the window (in seconds) to create a window of the live stream that's available for on-demand viewing. Viewers can start-over or catch-up on content that falls within the window.

" + } + }, + "HlsManifests": { + "target": "com.amazonaws.mediapackagev2#GetHlsManifests", + "traits": { + "smithy.api#documentation": "

An HTTP live streaming (HLS) manifest configuration.

" + } + }, + "LowLatencyHlsManifests": { + "target": "com.amazonaws.mediapackagev2#GetLowLatencyHlsManifests", + "traits": { + "smithy.api#documentation": "

A low-latency HLS manifest configuration.

" + } + }, + "DashManifests": { + "target": "com.amazonaws.mediapackagev2#GetDashManifests", + "traits": { + "smithy.api#documentation": "

A DASH manifest configuration.

" + } + }, + "ForceEndpointErrorConfiguration": { + "target": "com.amazonaws.mediapackagev2#ForceEndpointErrorConfiguration", + "traits": { + "smithy.api#documentation": "

The failover settings for the endpoint.

" + } + }, + "ETag": { + "target": "com.amazonaws.mediapackagev2#EntityTag", + "traits": { + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The current Entity Tag (ETag) associated with this resource. The entity tag can be used to safely make concurrent updates to the resource.

" + } + }, + "Tags": { + "target": "com.amazonaws.mediapackagev2#TagMap", + "traits": { + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The comma-separated list of tag key:value pairs assigned to the origin endpoint.

" + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.amazonaws.mediapackagev2#HarvestJob": { + "type": "structure", + "members": { + "ChannelGroupName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the channel group containing the channel associated with this harvest job.

", + "smithy.api#required": {} + } + }, + "ChannelName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the channel associated with this harvest job.

", + "smithy.api#required": {} + } + }, + "OriginEndpointName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the origin endpoint associated with this harvest job.

", + "smithy.api#required": {} + } + }, + "Destination": { + "target": "com.amazonaws.mediapackagev2#Destination", + "traits": { + "smithy.api#documentation": "

The S3 destination where the harvested content will be placed.

", + "smithy.api#required": {} + } + }, + "HarvestJobName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the harvest job.

", + "smithy.api#required": {} + } + }, + "HarvestedManifests": { + "target": "com.amazonaws.mediapackagev2#HarvestedManifests", + "traits": { + "smithy.api#documentation": "

A list of manifests that are being or have been harvested.

", + "smithy.api#required": {} + } + }, + "Description": { + "target": "com.amazonaws.mediapackagev2#ResourceDescription", + "traits": { + "smithy.api#documentation": "

An optional description of the harvest job.

" + } + }, + "ScheduleConfiguration": { + "target": "com.amazonaws.mediapackagev2#HarvesterScheduleConfiguration", + "traits": { + "smithy.api#documentation": "

The configuration for when the harvest job is scheduled to run.

", + "smithy.api#required": {} + } + }, + "Arn": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the harvest job.

", + "smithy.api#required": {} + } + }, + "CreatedAt": { + "target": "smithy.api#Timestamp", + "traits": { + "smithy.api#documentation": "

The date and time when the harvest job was created.

", + "smithy.api#required": {} + } + }, + "ModifiedAt": { + "target": "smithy.api#Timestamp", + "traits": { + "smithy.api#documentation": "

The date and time when the harvest job was last modified.

", + "smithy.api#required": {} + } + }, + "Status": { + "target": "com.amazonaws.mediapackagev2#HarvestJobStatus", + "traits": { + "smithy.api#documentation": "

The current status of the harvest job (e.g., QUEUED, IN_PROGRESS, CANCELLED, COMPLETED, FAILED).

", + "smithy.api#required": {} + } + }, + "ErrorMessage": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "

An error message if the harvest job encountered any issues.

" + } + }, + "ETag": { + "target": "com.amazonaws.mediapackagev2#EntityTag", + "traits": { + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The current version of the harvest job. Used for concurrency control.

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

Represents a harvest job resource in MediaPackage v2, which is used to export content from an origin endpoint to an S3 bucket.

" + } + }, + "com.amazonaws.mediapackagev2#HarvestJobResource": { + "type": "resource", + "identifiers": { + "ChannelGroupName": { + "target": "com.amazonaws.mediapackagev2#ResourceName" + }, + "ChannelName": { + "target": "com.amazonaws.mediapackagev2#ResourceName" + }, + "OriginEndpointName": { + "target": "com.amazonaws.mediapackagev2#ResourceName" + }, + "HarvestJobName": { + "target": "com.amazonaws.mediapackagev2#ResourceName" + } + }, + "create": { + "target": "com.amazonaws.mediapackagev2#CreateHarvestJob" + }, + "read": { + "target": "com.amazonaws.mediapackagev2#GetHarvestJob" + }, + "update": { + "target": "com.amazonaws.mediapackagev2#CancelHarvestJob" + }, + "list": { + "target": "com.amazonaws.mediapackagev2#ListHarvestJobs" + }, + "traits": { + "aws.api#arn": { + "template": "channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}/harvestJob/{HarvestJobName}" + }, + "aws.iam#conditionKeys": [ + "aws:ResourceTag/${TagKey}" + ], + "aws.iam#disableConditionKeyInference": {}, + "smithy.api#documentation": "

A HarvestJob resource represents a request to export content from a MediaPackage v2 channel to an S3 bucket.

" + } + }, + "com.amazonaws.mediapackagev2#HarvestJobStatus": { + "type": "enum", + "members": { + "QUEUED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "QUEUED" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", "traits": { - "smithy.api#documentation": "

The name that describes the origin endpoint. The name is the primary identifier for the origin endpoint, and and must be unique for your account in the AWS Region and channel.

", - "smithy.api#required": {} + "smithy.api#enumValue": "IN_PROGRESS" } }, - "ContainerType": { - "target": "com.amazonaws.mediapackagev2#ContainerType", + "CANCELLED": { + "target": "smithy.api#Unit", "traits": { - "smithy.api#documentation": "

The type of container attached to this origin endpoint.

", - "smithy.api#required": {} + "smithy.api#enumValue": "CANCELLED" } }, - "Segment": { - "target": "com.amazonaws.mediapackagev2#Segment", + "COMPLETED": { + "target": "smithy.api#Unit", "traits": { - "smithy.api#required": {} + "smithy.api#enumValue": "COMPLETED" } }, - "CreatedAt": { - "target": "smithy.api#Timestamp", + "FAILED": { + "target": "smithy.api#Unit", "traits": { - "smithy.api#documentation": "

The date and time the origin endpoint was created.

", - "smithy.api#required": {} + "smithy.api#enumValue": "FAILED" } - }, - "ModifiedAt": { - "target": "smithy.api#Timestamp", + } + } + }, + "com.amazonaws.mediapackagev2#HarvestJobsList": { + "type": "list", + "member": { + "target": "com.amazonaws.mediapackagev2#HarvestJob" + } + }, + "com.amazonaws.mediapackagev2#HarvestedDashManifest": { + "type": "structure", + "members": { + "ManifestName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", "traits": { - "smithy.api#documentation": "

The date and time the origin endpoint was modified.

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

The name of the harvested DASH manifest.

", "smithy.api#required": {} } - }, - "Description": { - "target": "com.amazonaws.mediapackagev2#ResourceDescription", + } + }, + "traits": { + "smithy.api#documentation": "

Information about a harvested DASH manifest.

" + } + }, + "com.amazonaws.mediapackagev2#HarvestedDashManifestsList": { + "type": "list", + "member": { + "target": "com.amazonaws.mediapackagev2#HarvestedDashManifest" + } + }, + "com.amazonaws.mediapackagev2#HarvestedHlsManifest": { + "type": "structure", + "members": { + "ManifestName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", "traits": { - "smithy.api#documentation": "

The description for your origin endpoint.

" + "smithy.api#documentation": "

The name of the harvested HLS manifest.

", + "smithy.api#required": {} } - }, - "StartoverWindowSeconds": { - "target": "smithy.api#Integer", + } + }, + "traits": { + "smithy.api#documentation": "

Information about a harvested HLS manifest.

" + } + }, + "com.amazonaws.mediapackagev2#HarvestedHlsManifestsList": { + "type": "list", + "member": { + "target": "com.amazonaws.mediapackagev2#HarvestedHlsManifest" + } + }, + "com.amazonaws.mediapackagev2#HarvestedLowLatencyHlsManifest": { + "type": "structure", + "members": { + "ManifestName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", "traits": { - "smithy.api#documentation": "

The size of the window (in seconds) to create a window of the live stream that's available for on-demand viewing. Viewers can start-over or catch-up on content that falls within the window.

" + "smithy.api#documentation": "

The name of the harvested Low-Latency HLS manifest.

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

Information about a harvested Low-Latency HLS manifest.

" + } + }, + "com.amazonaws.mediapackagev2#HarvestedLowLatencyHlsManifestsList": { + "type": "list", + "member": { + "target": "com.amazonaws.mediapackagev2#HarvestedLowLatencyHlsManifest" + } + }, + "com.amazonaws.mediapackagev2#HarvestedManifests": { + "type": "structure", + "members": { "HlsManifests": { - "target": "com.amazonaws.mediapackagev2#GetHlsManifests", - "traits": { - "smithy.api#documentation": "

An HTTP live streaming (HLS) manifest configuration.

" - } - }, - "LowLatencyHlsManifests": { - "target": "com.amazonaws.mediapackagev2#GetLowLatencyHlsManifests", + "target": "com.amazonaws.mediapackagev2#HarvestedHlsManifestsList", "traits": { - "smithy.api#documentation": "

A low-latency HLS manifest configuration.

" + "smithy.api#documentation": "

A list of harvested HLS manifests.

" } }, "DashManifests": { - "target": "com.amazonaws.mediapackagev2#GetDashManifests", + "target": "com.amazonaws.mediapackagev2#HarvestedDashManifestsList", "traits": { - "smithy.api#documentation": "

A DASH manifest configuration.

" + "smithy.api#documentation": "

A list of harvested DASH manifests.

" } }, - "ForceEndpointErrorConfiguration": { - "target": "com.amazonaws.mediapackagev2#ForceEndpointErrorConfiguration", + "LowLatencyHlsManifests": { + "target": "com.amazonaws.mediapackagev2#HarvestedLowLatencyHlsManifestsList", "traits": { - "smithy.api#documentation": "

The failover settings for the endpoint.

" + "smithy.api#documentation": "

A list of harvested Low-Latency HLS manifests.

" } - }, - "ETag": { - "target": "com.amazonaws.mediapackagev2#EntityTag", + } + }, + "traits": { + "smithy.api#documentation": "

A collection of harvested manifests of different types.

" + } + }, + "com.amazonaws.mediapackagev2#HarvesterScheduleConfiguration": { + "type": "structure", + "members": { + "StartTime": { + "target": "smithy.api#Timestamp", "traits": { - "aws.cloudformation#cfnExcludeProperty": {}, - "smithy.api#documentation": "

The current Entity Tag (ETag) associated with this resource. The entity tag can be used to safely make concurrent updates to the resource.

" + "smithy.api#documentation": "

The start time for the harvest job.

", + "smithy.api#required": {} } }, - "Tags": { - "target": "com.amazonaws.mediapackagev2#TagMap", + "EndTime": { + "target": "smithy.api#Timestamp", "traits": { - "aws.cloudformation#cfnExcludeProperty": {}, - "smithy.api#documentation": "

The comma-separated list of tag key:value pairs assigned to the origin endpoint.

" + "smithy.api#documentation": "

The end time for the harvest job.

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

Defines the schedule configuration for a harvest job.

" } }, "com.amazonaws.mediapackagev2#IdempotencyToken": { @@ -3565,30 +4601,177 @@ "com.amazonaws.mediapackagev2#ListChannelGroupsResponse": { "type": "structure", "members": { - "Items": { - "target": "com.amazonaws.mediapackagev2#ChannelGroupsList", + "Items": { + "target": "com.amazonaws.mediapackagev2#ChannelGroupsList", + "traits": { + "smithy.api#documentation": "

The objects being returned.

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

The pagination token from the GET list request. Use the token to fetch the next page of results.

" + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.amazonaws.mediapackagev2#ListChannels": { + "type": "operation", + "input": { + "target": "com.amazonaws.mediapackagev2#ListChannelsRequest" + }, + "output": { + "target": "com.amazonaws.mediapackagev2#ListChannelsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.mediapackagev2#AccessDeniedException" + }, + { + "target": "com.amazonaws.mediapackagev2#InternalServerException" + }, + { + "target": "com.amazonaws.mediapackagev2#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.mediapackagev2#ThrottlingException" + }, + { + "target": "com.amazonaws.mediapackagev2#ValidationException" + } + ], + "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to list all channels in a channel group", + "smithy.api#documentation": "

Retrieves all channels in a specific channel group that are configured in AWS Elemental MediaPackage, including the origin endpoints that are associated with it.

", + "smithy.api#examples": [ + { + "title": "Listing all Channels", + "input": { + "ChannelGroupName": "exampleChannelGroup" + }, + "output": { + "Items": [ + { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannel", + "Description": "Description for exampleChannel", + "Arn": "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannel", + "CreatedAt": "2022-10-18T09:36:00.00Z", + "ModifiedAt": "2022-10-18T09:36:00.00Z" + }, + { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "anotherExampleChannel", + "Arn": "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/anotherExampleChannel", + "CreatedAt": "2022-10-18T10:36:00.00Z", + "ModifiedAt": "2022-10-18T10:36:00.00Z" + } + ] + } + } + ], + "smithy.api#http": { + "method": "GET", + "uri": "/channelGroup/{ChannelGroupName}/channel", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "NextToken", + "outputToken": "NextToken", + "items": "Items", + "pageSize": "MaxResults" + }, + "smithy.api#readonly": {} + } + }, + "com.amazonaws.mediapackagev2#ListChannelsRequest": { + "type": "structure", + "members": { + "ChannelGroupName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name that describes the channel group. The name is the primary identifier for the channel group, and must be unique for your account in the AWS Region.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "MaxResults": { + "target": "com.amazonaws.mediapackagev2#ListResourceMaxResults", + "traits": { + "smithy.api#default": 10, + "smithy.api#documentation": "

The maximum number of results to return in the response.

", + "smithy.api#httpQuery": "maxResults" + } + }, + "NextToken": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "

The pagination token from the GET list request. Use the token to fetch the next page of results.

", + "smithy.api#httpQuery": "nextToken" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.mediapackagev2#ListChannelsResponse": { + "type": "structure", + "members": { + "Items": { + "target": "com.amazonaws.mediapackagev2#ChannelList", + "traits": { + "smithy.api#documentation": "

The objects being returned.

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

The pagination token from the GET list request.

" + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.amazonaws.mediapackagev2#ListDashManifestConfiguration": { + "type": "structure", + "members": { + "ManifestName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", "traits": { - "smithy.api#documentation": "

The objects being returned.

" + "smithy.api#documentation": "

A short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index.

", + "smithy.api#required": {} } }, - "NextToken": { + "Url": { "target": "smithy.api#String", "traits": { - "smithy.api#documentation": "

The pagination token from the GET list request. Use the token to fetch the next page of results.

" + "smithy.api#documentation": "

The egress domain URL for stream delivery from MediaPackage.

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

List the DASH manifest configuration.

" } }, - "com.amazonaws.mediapackagev2#ListChannels": { + "com.amazonaws.mediapackagev2#ListDashManifests": { + "type": "list", + "member": { + "target": "com.amazonaws.mediapackagev2#ListDashManifestConfiguration" + } + }, + "com.amazonaws.mediapackagev2#ListHarvestJobs": { "type": "operation", "input": { - "target": "com.amazonaws.mediapackagev2#ListChannelsRequest" + "target": "com.amazonaws.mediapackagev2#ListHarvestJobsRequest" }, "output": { - "target": "com.amazonaws.mediapackagev2#ListChannelsResponse" + "target": "com.amazonaws.mediapackagev2#ListHarvestJobsResponse" }, "errors": [ { @@ -3608,11 +4791,11 @@ } ], "traits": { - "aws.iam#actionPermissionDescription": "Grants permission to list all channels in a channel group", - "smithy.api#documentation": "

Retrieves all channels in a specific channel group that are configured in AWS Elemental MediaPackage, including the origin endpoints that are associated with it.

", + "aws.iam#actionPermissionDescription": "Grants permission to list all harvest jobs of a ChannelGroup, Channel, or OriginEndpoint", + "smithy.api#documentation": "

Retrieves a list of harvest jobs that match the specified criteria.

", "smithy.api#examples": [ { - "title": "Listing all Channels", + "title": "ListHarvestJobs: Specify ChannelGroup only", "input": { "ChannelGroupName": "exampleChannelGroup" }, @@ -3620,26 +4803,309 @@ "Items": [ { "ChannelGroupName": "exampleChannelGroup", - "ChannelName": "exampleChannel", - "Description": "Description for exampleChannel", - "Arn": "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannel", - "CreatedAt": "2022-10-18T09:36:00.00Z", - "ModifiedAt": "2022-10-18T09:36:00.00Z" + "ChannelName": "exampleChannelName", + "OriginEndpointName": "exampleOriginEndpointName", + "Destination": { + "S3Destination": { + "BucketName": "harvestJobS3DestinationBucket", + "DestinationPath": "manifests" + } + }, + "HarvestJobName": "HarvestJobName", + "HarvestedManifests": { + "HlsManifests": [ + { + "ManifestName": "HlsManifest" + } + ], + "DashManifests": [ + { + "ManifestName": "DashManifest" + } + ], + "LowLatencyHlsManifests": [ + { + "ManifestName": "LowLatencyHlsManifest" + } + ] + }, + "Description": "Example HarvestJob description", + "ScheduleConfiguration": { + "StartTime": "2024-05-28T06:00:00.00Z", + "EndTime": "2024-05-28T12:00:00.00Z" + }, + "Arn": "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannelName/originEndpoint/exampleOriginEndpointName/harvestJob/HarvestJobName", + "CreatedAt": "2024-05-28T09:36:00.00Z", + "ModifiedAt": "2024-05-28T09:36:00.00Z", + "Status": "QUEUED", + "ETag": "GlfT+dwAyGIR4wuy8nKWl1RDPwSrjQej9qUutLZxoxk=", + "Tags": { + "key1": "value1", + "key2": "value2" + } }, { "ChannelGroupName": "exampleChannelGroup", - "ChannelName": "anotherExampleChannel", - "Arn": "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/anotherExampleChannel", - "CreatedAt": "2022-10-18T10:36:00.00Z", - "ModifiedAt": "2022-10-18T10:36:00.00Z" + "ChannelName": "exampleChannelName2", + "OriginEndpointName": "exampleOriginEndpointName2", + "Destination": { + "S3Destination": { + "BucketName": "harvestJobS3DestinationBucket", + "DestinationPath": "manifests" + } + }, + "HarvestJobName": "HarvestJobName2", + "HarvestedManifests": { + "HlsManifests": [ + { + "ManifestName": "HlsManifest" + } + ], + "DashManifests": [ + { + "ManifestName": "DashManifest" + } + ], + "LowLatencyHlsManifests": [ + { + "ManifestName": "LowLatencyHlsManifest" + } + ] + }, + "Description": "Example HarvestJob2 description", + "ScheduleConfiguration": { + "StartTime": "2024-05-28T02:00:00.00Z", + "EndTime": "2024-05-28T12:00:00.00Z" + }, + "Arn": "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannelName2/originEndpoint/exampleOriginEndpointName2/harvestJob/HarvestJobName2", + "CreatedAt": "2024-05-28T15:30:00.00Z", + "ModifiedAt": "2024-05-28T15:30:00.00Z", + "Status": "IN_PROGRESS", + "ETag": "GlfT+dwAyGIR4wuy8nKWl1RDPwSrjQej9qUutLZxoxk=", + "Tags": { + "key1": "value1", + "key2": "value2" + } } - ] + ], + "NextToken": "someTokenValue" + } + }, + { + "title": "ListHarvestJobs: Specify ChannelGroup, Channel only", + "input": { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannelName" + }, + "output": { + "Items": [ + { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannelName", + "OriginEndpointName": "exampleOriginEndpointName", + "Destination": { + "S3Destination": { + "BucketName": "harvestJobS3DestinationBucket", + "DestinationPath": "manifests" + } + }, + "HarvestJobName": "HarvestJobName", + "HarvestedManifests": { + "HlsManifests": [ + { + "ManifestName": "HlsManifest" + } + ], + "DashManifests": [ + { + "ManifestName": "DashManifest" + } + ], + "LowLatencyHlsManifests": [ + { + "ManifestName": "LowLatencyHlsManifest" + } + ] + }, + "Description": "Example HarvestJob description", + "ScheduleConfiguration": { + "StartTime": "2024-05-28T06:00:00.00Z", + "EndTime": "2024-05-28T12:00:00.00Z" + }, + "Arn": "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannelName/originEndpoint/exampleOriginEndpointName/harvestJob/HarvestJobName", + "CreatedAt": "2024-05-28T09:36:00.00Z", + "ModifiedAt": "2024-05-28T09:36:00.00Z", + "Status": "QUEUED", + "ETag": "GlfT+dwAyGIR4wuy8nKWl1RDPwSrjQej9qUutLZxoxk=", + "Tags": { + "key1": "value1", + "key2": "value2" + } + }, + { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannelName", + "OriginEndpointName": "exampleOriginEndpointName2", + "Destination": { + "S3Destination": { + "BucketName": "harvestJobS3DestinationBucket", + "DestinationPath": "manifests" + } + }, + "HarvestJobName": "HarvestJobName2", + "HarvestedManifests": { + "HlsManifests": [ + { + "ManifestName": "HlsManifest" + } + ], + "DashManifests": [ + { + "ManifestName": "DashManifest" + } + ], + "LowLatencyHlsManifests": [ + { + "ManifestName": "LowLatencyHlsManifest" + } + ] + }, + "Description": "Example HarvestJob2 description", + "ScheduleConfiguration": { + "StartTime": "2024-05-28T02:00:00.00Z", + "EndTime": "2024-05-28T12:00:00.00Z" + }, + "Arn": "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannelName/originEndpoint/exampleOriginEndpointName2/harvestJob/HarvestJobName2", + "CreatedAt": "2024-05-28T15:30:00.00Z", + "ModifiedAt": "2024-05-28T15:30:00.00Z", + "Status": "IN_PROGRESS", + "Tags": { + "key1": "value1", + "key2": "value2" + } + } + ], + "NextToken": "someTokenValue" + } + }, + { + "title": "ListHarvestJobs: Specify ChannelGroup, Channel, OriginEndpoint", + "input": { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannelName", + "OriginEndpointName": "exampleOriginEndpointName" + }, + "output": { + "Items": [ + { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannelName", + "OriginEndpointName": "exampleOriginEndpointName", + "Destination": { + "S3Destination": { + "BucketName": "harvestJobS3DestinationBucket", + "DestinationPath": "manifests" + } + }, + "HarvestJobName": "HarvestJobName", + "HarvestedManifests": { + "HlsManifests": [ + { + "ManifestName": "HlsManifest" + } + ], + "DashManifests": [ + { + "ManifestName": "DashManifest" + } + ], + "LowLatencyHlsManifests": [ + { + "ManifestName": "LowLatencyHlsManifest" + } + ] + }, + "Description": "Example HarvestJob description", + "ScheduleConfiguration": { + "StartTime": "2024-05-28T06:00:00.00Z", + "EndTime": "2024-05-28T12:00:00.00Z" + }, + "Arn": "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannelName/originEndpoint/exampleOriginEndpointName/harvestJob/HarvestJobName", + "CreatedAt": "2024-05-28T09:36:00.00Z", + "ModifiedAt": "2024-05-28T09:36:00.00Z", + "Status": "QUEUED", + "ETag": "GlfT+dwAyGIR4wuy8nKWl1RDPwSrjQej9qUutLZxoxk=" + } + ], + "NextToken": "someTokenValue" + } + }, + { + "title": "ListHarvestJobs: Specify ChannelGroup, Channel, OriginEndpoint + Status filter", + "input": { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannelName", + "OriginEndpointName": "exampleOriginEndpointName", + "Status": "QUEUED" + }, + "output": { + "Items": [ + { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannelName", + "OriginEndpointName": "exampleOriginEndpointName", + "Destination": { + "S3Destination": { + "BucketName": "harvestJobS3DestinationBucket", + "DestinationPath": "manifests" + } + }, + "HarvestJobName": "HarvestJobName", + "HarvestedManifests": { + "HlsManifests": [ + { + "ManifestName": "HlsManifest" + } + ], + "DashManifests": [ + { + "ManifestName": "DashManifest" + } + ], + "LowLatencyHlsManifests": [ + { + "ManifestName": "LowLatencyHlsManifest" + } + ] + }, + "Description": "Example HarvestJob description", + "ScheduleConfiguration": { + "StartTime": "2024-05-28T06:00:00.00Z", + "EndTime": "2024-05-28T12:00:00.00Z" + }, + "Arn": "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannelName/originEndpoint/exampleOriginEndpointName/harvestJob/HarvestJobName", + "CreatedAt": "2024-05-28T09:36:00.00Z", + "ModifiedAt": "2024-05-28T09:36:00.00Z", + "Status": "QUEUED", + "ETag": "GlfT+dwAyGIR4wuy8nKWl1RDPwSrjQej9qUutLZxoxk=" + } + ], + "NextToken": "someTokenValue" } + }, + { + "title": "ListHarvestJobs: Empty response", + "input": { + "ChannelGroupName": "exampleChannelGroup", + "ChannelName": "exampleChannelName", + "OriginEndpointName": "exampleOriginEndpointName" + }, + "output": {} } ], "smithy.api#http": { "method": "GET", - "uri": "/channelGroup/{ChannelGroupName}/channel", + "uri": "/channelGroup/{ChannelGroupName}/harvestJob", "code": 200 }, "smithy.api#paginated": { @@ -3651,84 +5117,94 @@ "smithy.api#readonly": {} } }, - "com.amazonaws.mediapackagev2#ListChannelsRequest": { + "com.amazonaws.mediapackagev2#ListHarvestJobsRequest": { "type": "structure", "members": { "ChannelGroupName": { "target": "com.amazonaws.mediapackagev2#ResourceName", "traits": { - "smithy.api#documentation": "

The name that describes the channel group. The name is the primary identifier for the channel group, and must be unique for your account in the AWS Region.

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

The name of the channel group to filter the harvest jobs by. If specified, only harvest jobs associated with channels in this group will be returned.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, + "ChannelName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the channel to filter the harvest jobs by. If specified, only harvest jobs associated with this channel will be returned.

", + "smithy.api#httpQuery": "channelName", + "smithy.api#length": { + "min": 1, + "max": 256 + }, + "smithy.api#pattern": "^[a-zA-Z0-9_-]+$" + } + }, + "OriginEndpointName": { + "target": "com.amazonaws.mediapackagev2#ResourceName", + "traits": { + "smithy.api#documentation": "

The name of the origin endpoint to filter the harvest jobs by. If specified, only harvest jobs associated with this origin endpoint will be returned.

", + "smithy.api#httpQuery": "originEndpointName", + "smithy.api#length": { + "min": 1, + "max": 256 + }, + "smithy.api#pattern": "^[a-zA-Z0-9_-]+$" + } + }, + "Status": { + "target": "com.amazonaws.mediapackagev2#HarvestJobStatus", + "traits": { + "smithy.api#documentation": "

The status to filter the harvest jobs by. If specified, only harvest jobs with this status will be returned.

", + "smithy.api#httpQuery": "includeStatus" + } + }, "MaxResults": { "target": "com.amazonaws.mediapackagev2#ListResourceMaxResults", "traits": { "smithy.api#default": 10, - "smithy.api#documentation": "

The maximum number of results to return in the response.

", - "smithy.api#httpQuery": "maxResults" + "smithy.api#documentation": "

The maximum number of harvest jobs to return in a single request. If not specified, a default value will be used.

", + "smithy.api#httpQuery": "maxResults", + "smithy.api#range": { + "min": 1, + "max": 100 + } } }, "NextToken": { "target": "smithy.api#String", "traits": { - "smithy.api#documentation": "

The pagination token from the GET list request. Use the token to fetch the next page of results.

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

A token used for pagination. Provide this value in subsequent requests to retrieve the next set of results.

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

The request object for listing harvest jobs.

", "smithy.api#input": {} } }, - "com.amazonaws.mediapackagev2#ListChannelsResponse": { + "com.amazonaws.mediapackagev2#ListHarvestJobsResponse": { "type": "structure", "members": { "Items": { - "target": "com.amazonaws.mediapackagev2#ChannelList", + "target": "com.amazonaws.mediapackagev2#HarvestJobsList", "traits": { - "smithy.api#documentation": "

The objects being returned.

" + "smithy.api#documentation": "

An array of harvest job objects that match the specified criteria.

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

The pagination token from the GET list request.

" + "smithy.api#documentation": "

A token used for pagination. Include this value in subsequent requests to retrieve the next set of results. If null, there are no more results to retrieve.

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

The response object containing the list of harvest jobs that match the specified criteria.

", "smithy.api#output": {} } }, - "com.amazonaws.mediapackagev2#ListDashManifestConfiguration": { - "type": "structure", - "members": { - "ManifestName": { - "target": "com.amazonaws.mediapackagev2#ResourceName", - "traits": { - "smithy.api#documentation": "

A short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index.

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

The egress domain URL for stream delivery from MediaPackage.

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

List the DASH manifest configuration.

" - } - }, - "com.amazonaws.mediapackagev2#ListDashManifests": { - "type": "list", - "member": { - "target": "com.amazonaws.mediapackagev2#ListDashManifestConfiguration" - } - }, "com.amazonaws.mediapackagev2#ListHlsManifestConfiguration": { "type": "structure", "members": { @@ -4609,7 +6085,54 @@ "traits": { "smithy.api#enumValue": "ORIGIN_ENDPOINT" } + }, + "HARVEST_JOB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HARVEST_JOB" + } + } + } + }, + "com.amazonaws.mediapackagev2#S3BucketName": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 3, + "max": 63 + } + } + }, + "com.amazonaws.mediapackagev2#S3DestinationConfig": { + "type": "structure", + "members": { + "BucketName": { + "target": "com.amazonaws.mediapackagev2#S3BucketName", + "traits": { + "smithy.api#documentation": "

The name of an S3 bucket within which harvested content will be exported.

", + "smithy.api#required": {} + } + }, + "DestinationPath": { + "target": "com.amazonaws.mediapackagev2#S3DestinationPath", + "traits": { + "smithy.api#documentation": "

The path within the specified S3 bucket where the harvested content will be placed.

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

Configuration parameters for where in an S3 bucket to place the harvested content.

" + } + }, + "com.amazonaws.mediapackagev2#S3DestinationPath": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 1024 + }, + "smithy.api#pattern": "^[\\S]+$" } }, "com.amazonaws.mediapackagev2#Scte": { @@ -6143,6 +7666,54 @@ "smithy.api#enumValue": "SOURCE_DISRUPTIONS_ENABLED_INCORRECTLY" } }, + "HARVESTED_MANIFEST_HAS_START_END_FILTER_CONFIGURATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HARVESTED_MANIFEST_HAS_START_END_FILTER_CONFIGURATION" + } + }, + "HARVESTED_MANIFEST_NOT_FOUND_ON_ENDPOINT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HARVESTED_MANIFEST_NOT_FOUND_ON_ENDPOINT" + } + }, + "TOO_MANY_IN_PROGRESS_HARVEST_JOBS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TOO_MANY_IN_PROGRESS_HARVEST_JOBS" + } + }, + "HARVEST_JOB_INELIGIBLE_FOR_CANCELLATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HARVEST_JOB_INELIGIBLE_FOR_CANCELLATION" + } + }, + "INVALID_HARVEST_JOB_DURATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INVALID_HARVEST_JOB_DURATION" + } + }, + "HARVEST_JOB_S3_DESTINATION_MISSING_OR_INCOMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HARVEST_JOB_S3_DESTINATION_MISSING_OR_INCOMPLETE" + } + }, + "HARVEST_JOB_UNABLE_TO_WRITE_TO_S3_DESTINATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HARVEST_JOB_UNABLE_TO_WRITE_TO_S3_DESTINATION" + } + }, + "HARVEST_JOB_CUSTOMER_ENDPOINT_READ_ACCESS_DENIED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HARVEST_JOB_CUSTOMER_ENDPOINT_READ_ACCESS_DENIED" + } + }, "CLIP_START_TIME_WITH_START_OR_END": { "target": "smithy.api#Unit", "traits": { diff --git a/codegen/sdk-codegen/aws-models/opensearch.json b/codegen/sdk-codegen/aws-models/opensearch.json index a04daec6154..7996aef72ae 100644 --- a/codegen/sdk-codegen/aws-models/opensearch.json +++ b/codegen/sdk-codegen/aws-models/opensearch.json @@ -2942,6 +2942,12 @@ "traits": { "smithy.api#documentation": "

A boolean that indicates whether a multi-AZ domain is turned on with a standby AZ. For more information, see Configuring a multi-AZ domain in Amazon OpenSearch Service.

" } + }, + "NodeOptions": { + "target": "com.amazonaws.opensearch#NodeOptionsList", + "traits": { + "smithy.api#documentation": "

List of node options for the domain.

" + } } }, "traits": { @@ -9203,6 +9209,32 @@ "smithy.api#documentation": "

When nextToken is returned, there are more results available. The value of\n nextToken is a unique pagination token for each page. Send the request again using the\n returned token to retrieve the next page.

" } }, + "com.amazonaws.opensearch#NodeConfig": { + "type": "structure", + "members": { + "Enabled": { + "target": "com.amazonaws.opensearch#Boolean", + "traits": { + "smithy.api#documentation": "

A boolean that indicates whether a particular node type is enabled or not.

" + } + }, + "Type": { + "target": "com.amazonaws.opensearch#OpenSearchPartitionInstanceType", + "traits": { + "smithy.api#documentation": "

The instance type of a particular node type in the cluster.

" + } + }, + "Count": { + "target": "com.amazonaws.opensearch#IntegerClass", + "traits": { + "smithy.api#documentation": "

The number of nodes of a particular node type in the cluster.

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

Container for specifying configuration of any node type.

" + } + }, "com.amazonaws.opensearch#NodeId": { "type": "string", "traits": { @@ -9212,6 +9244,43 @@ } } }, + "com.amazonaws.opensearch#NodeOption": { + "type": "structure", + "members": { + "NodeType": { + "target": "com.amazonaws.opensearch#NodeOptionsNodeType", + "traits": { + "smithy.api#documentation": "

Container for node type like coordinating.

" + } + }, + "NodeConfig": { + "target": "com.amazonaws.opensearch#NodeConfig", + "traits": { + "smithy.api#documentation": "

Container for specifying configuration of any node type.

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

Container for specifying node type.

" + } + }, + "com.amazonaws.opensearch#NodeOptionsList": { + "type": "list", + "member": { + "target": "com.amazonaws.opensearch#NodeOption" + } + }, + "com.amazonaws.opensearch#NodeOptionsNodeType": { + "type": "enum", + "members": { + "COORDINATOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "coordinator" + } + } + } + }, "com.amazonaws.opensearch#NodeStatus": { "type": "enum", "members": { diff --git a/codegen/sdk-codegen/aws-models/rds.json b/codegen/sdk-codegen/aws-models/rds.json index a8ec1970d95..9b3af7257ed 100644 --- a/codegen/sdk-codegen/aws-models/rds.json +++ b/codegen/sdk-codegen/aws-models/rds.json @@ -2081,7 +2081,7 @@ "target": "com.amazonaws.rds#String", "traits": { "smithy.api#clientOptional": {}, - "smithy.api#documentation": "

The pending maintenance action to apply to this resource.

\n

Valid Values: system-update, db-upgrade, \n hardware-maintenance, ca-certificate-rotation\n

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

The pending maintenance action to apply to this resource.

\n

Valid Values:

\n \n

For more information about these actions, see \n Maintenance actions for Amazon Aurora or \n Maintenance actions for Amazon RDS.

", "smithy.api#required": {} } }, @@ -4468,7 +4468,7 @@ "EnableLimitlessDatabase": { "target": "com.amazonaws.rds#BooleanOptional", "traits": { - "smithy.api#documentation": "

Specifies whether to enable Aurora Limitless Database. You must enable Aurora Limitless Database to create a DB shard group.

\n

Valid for: Aurora DB clusters only

" + "smithy.api#documentation": "

Specifies whether to enable Aurora Limitless Database. You must enable Aurora Limitless Database to create a DB shard group.

\n

Valid for: Aurora DB clusters only

\n \n

This setting is no longer used. Instead use the ClusterScalabilityType setting.

\n
" } }, "ServerlessV2ScalingConfiguration": { @@ -21849,7 +21849,7 @@ "EnableLimitlessDatabase": { "target": "com.amazonaws.rds#BooleanOptional", "traits": { - "smithy.api#documentation": "

Specifies whether to enable Aurora Limitless Database. You must enable Aurora Limitless Database to create a DB shard group.

\n

Valid for: Aurora DB clusters only

" + "smithy.api#documentation": "

Specifies whether to enable Aurora Limitless Database. You must enable Aurora Limitless Database to create a DB shard group.

\n

Valid for: Aurora DB clusters only

\n \n

This setting is no longer used. Instead use the ClusterScalabilityType setting when you create your Aurora Limitless Database DB cluster.

\n
" } }, "CACertificateIdentifier": { @@ -24779,7 +24779,7 @@ "Action": { "target": "com.amazonaws.rds#String", "traits": { - "smithy.api#documentation": "

The type of pending maintenance action that is available for the resource.

\n

For more information about maintenance actions, see Maintaining a DB instance.

\n

Valid Values: system-update | db-upgrade | hardware-maintenance | ca-certificate-rotation\n

" + "smithy.api#documentation": "

The type of pending maintenance action that is available for the resource.

\n

For more information about maintenance actions, see Maintaining a DB instance.

\n

Valid Values:

\n \n

For more information about these actions, see \n Maintenance actions for Amazon Aurora or \n Maintenance actions for Amazon RDS.

" } }, "AutoAppliedAfterDate": { @@ -27406,6 +27406,36 @@ "smithy.api#documentation": "

Reserved for future use.

" } }, + "MonitoringInterval": { + "target": "com.amazonaws.rds#IntegerOptional", + "traits": { + "smithy.api#documentation": "

The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB cluster. To turn off \n collecting Enhanced Monitoring metrics, specify 0.

\n

If MonitoringRoleArn is specified, also set MonitoringInterval to a value other than 0.

\n

Valid Values: 0 | 1 | 5 | 10 | 15 | 30 | 60\n

\n

Default: 0\n

" + } + }, + "MonitoringRoleArn": { + "target": "com.amazonaws.rds#String", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) for the IAM role that permits RDS to send Enhanced Monitoring metrics to Amazon CloudWatch Logs. \n An example is arn:aws:iam:123456789012:role/emaccess.

\n

If MonitoringInterval is set to a value other than 0, supply a MonitoringRoleArn value.

" + } + }, + "EnablePerformanceInsights": { + "target": "com.amazonaws.rds#BooleanOptional", + "traits": { + "smithy.api#documentation": "

Specifies whether to turn on Performance Insights for the DB cluster.

" + } + }, + "PerformanceInsightsKMSKeyId": { + "target": "com.amazonaws.rds#String", + "traits": { + "smithy.api#documentation": "

The Amazon Web Services KMS key identifier for encryption of Performance Insights data.

\n

The Amazon Web Services KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.

\n

If you don't specify a value for PerformanceInsightsKMSKeyId, then Amazon RDS uses your default KMS key. \n There is a default KMS key for your Amazon Web Services account. Your Amazon Web Services account has a different default KMS key for each Amazon Web Services Region.

" + } + }, + "PerformanceInsightsRetentionPeriod": { + "target": "com.amazonaws.rds#IntegerOptional", + "traits": { + "smithy.api#documentation": "

The number of days to retain Performance Insights data.

\n

Valid Values:

\n \n

Default: 7 days

\n

If you specify a retention period that isn't valid, such as 94, Amazon RDS issues an error.

" + } + }, "EngineLifecycleSupport": { "target": "com.amazonaws.rds#String", "traits": { @@ -27735,6 +27765,36 @@ "smithy.api#documentation": "

Reserved for future use.

" } }, + "MonitoringInterval": { + "target": "com.amazonaws.rds#IntegerOptional", + "traits": { + "smithy.api#documentation": "

The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB cluster. To turn off \n collecting Enhanced Monitoring metrics, specify 0.

\n

If MonitoringRoleArn is specified, also set MonitoringInterval to a value other than 0.

\n

Valid Values: 0 | 1 | 5 | 10 | 15 | 30 | 60\n

\n

Default: 0\n

" + } + }, + "MonitoringRoleArn": { + "target": "com.amazonaws.rds#String", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) for the IAM role that permits RDS to send Enhanced Monitoring metrics to Amazon CloudWatch Logs. \n An example is arn:aws:iam:123456789012:role/emaccess.

\n

If MonitoringInterval is set to a value other than 0, supply a MonitoringRoleArn value.

" + } + }, + "EnablePerformanceInsights": { + "target": "com.amazonaws.rds#BooleanOptional", + "traits": { + "smithy.api#documentation": "

Specifies whether to turn on Performance Insights for the DB cluster.

" + } + }, + "PerformanceInsightsKMSKeyId": { + "target": "com.amazonaws.rds#String", + "traits": { + "smithy.api#documentation": "

The Amazon Web Services KMS key identifier for encryption of Performance Insights data.

\n

The Amazon Web Services KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key.

\n

If you don't specify a value for PerformanceInsightsKMSKeyId, then Amazon RDS uses your default KMS key. \n There is a default KMS key for your Amazon Web Services account. Your Amazon Web Services account has a different default KMS key for each Amazon Web Services Region.

" + } + }, + "PerformanceInsightsRetentionPeriod": { + "target": "com.amazonaws.rds#IntegerOptional", + "traits": { + "smithy.api#documentation": "

The number of days to retain Performance Insights data.

\n

Valid Values:

\n \n

Default: 7 days

\n

If you specify a retention period that isn't valid, such as 94, Amazon RDS issues an error.

" + } + }, "EngineLifecycleSupport": { "target": "com.amazonaws.rds#String", "traits": { diff --git a/codegen/sdk-codegen/aws-models/storage-gateway.json b/codegen/sdk-codegen/aws-models/storage-gateway.json index 29b9abdd1b0..24ed5063499 100644 --- a/codegen/sdk-codegen/aws-models/storage-gateway.json +++ b/codegen/sdk-codegen/aws-models/storage-gateway.json @@ -101,7 +101,7 @@ "GatewayType": { "target": "com.amazonaws.storagegateway#GatewayType", "traits": { - "smithy.api#documentation": "

A value that defines the type of gateway to activate. The type specified is critical to\n all later functions of the gateway and cannot be changed after activation. The default\n value is CACHED.

\n

Valid Values: STORED | CACHED | VTL\n | FILE_S3 |\n FILE_FSX_SMB\n

" + "smithy.api#documentation": "

A value that defines the type of gateway to activate. The type specified is critical to\n all later functions of the gateway and cannot be changed after activation. The default\n value is CACHED.

\n \n

Amazon FSx File Gateway is no longer available to new customers. Existing\n customers of FSx File Gateway can continue to use the service normally. For\n capabilities similar to FSx File Gateway, visit this blog post.

\n
\n

Valid Values: STORED | CACHED | VTL\n | FILE_S3 |\n FILE_FSX_SMB\n

" } }, "TapeDriveType": { @@ -907,18 +907,18 @@ "AverageUploadRateLimitInBitsPerSec": { "target": "com.amazonaws.storagegateway#BandwidthUploadRateLimit", "traits": { - "smithy.api#documentation": "

The average upload rate limit component of the bandwidth rate limit interval, in bits\n per second. This field does not appear in the response if the upload rate limit is not set.

\n \n

For Tape Gateway and Volume Gateway, the minimum value is 51200.

\n

For S3 File Gateway and FSx File Gateway, the minimum value is\n 104857600.

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

The average upload rate limit component of the bandwidth rate limit interval, in bits\n per second. This field does not appear in the response if the upload rate limit is not set.

\n \n

For Tape Gateway and Volume Gateway, the minimum value is 51200.

\n

This field is required for S3 File Gateway, and the minimum value is\n 104857600.

\n
" } }, "AverageDownloadRateLimitInBitsPerSec": { "target": "com.amazonaws.storagegateway#BandwidthDownloadRateLimit", "traits": { - "smithy.api#documentation": "

The average download rate limit component of the bandwidth rate limit interval, in bits\n per second. This field does not appear in the response if the download rate limit is not\n set.

" + "smithy.api#documentation": "

The average download rate limit component of the bandwidth rate limit interval, in bits\n per second. This field does not appear in the response if the download rate limit is not\n set.

\n \n

S3 File Gateway does not support this feature.

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

Describes a bandwidth rate limit interval for a gateway. A bandwidth rate limit\n schedule consists of one or more bandwidth rate limit intervals. A bandwidth rate limit\n interval defines a period of time on one or more days of the week, during which bandwidth\n rate limits are specified for uploading, downloading, or both.

" + "smithy.api#documentation": "

Describes a bandwidth rate limit interval for a gateway. A bandwidth rate limit schedule\n consists of one or more bandwidth rate limit intervals. A bandwidth rate limit interval\n defines a period of time on one or more days of the week, during which bandwidth rate\n limits are specified for uploading, downloading, or both.

\n \n

FSx File Gateway does not support this feature.

\n
" } }, "com.amazonaws.storagegateway#BandwidthRateLimitIntervals": { @@ -1494,7 +1494,7 @@ "LocationARN": { "target": "com.amazonaws.storagegateway#LocationARN", "traits": { - "smithy.api#documentation": "

A custom ARN for the backend storage used for storing data for file shares. It includes\n a resource ARN with an optional prefix concatenation. The prefix must end with a forward\n slash (/).

\n \n

You can specify LocationARN as a bucket ARN, access point ARN or access point alias,\n as shown in the following examples.

\n

Bucket ARN:

\n

\n arn:aws:s3:::my-bucket/prefix/\n

\n

Access point ARN:

\n

\n arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/\n

\n

If you specify an access point, the bucket policy must be configured to delegate\n access control to the access point. For information, see Delegating access control to access points in the Amazon S3 User Guide.

\n

Access point alias:

\n

\n test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias\n

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

A custom ARN for the backend storage used for storing data for file shares. It includes\n a resource ARN with an optional prefix concatenation. The prefix must end with a forward\n slash (/).

\n \n

You can specify LocationARN as a bucket ARN, access point ARN or access point alias,\n as shown in the following examples.

\n

Bucket ARN:

\n

\n arn:aws:s3:::amzn-s3-demo-bucket/prefix/\n

\n

Access point ARN:

\n

\n arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/\n

\n

If you specify an access point, the bucket policy must be configured to delegate\n access control to the access point. For information, see Delegating access control to access points in the Amazon S3 User Guide.

\n

Access point alias:

\n

\n test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias\n

\n
", "smithy.api#required": {} } }, @@ -1549,7 +1549,7 @@ "FileShareName": { "target": "com.amazonaws.storagegateway#FileShareName", "traits": { - "smithy.api#documentation": "

The name of the file share. Optional.

\n \n

\n FileShareName must be set if an S3 prefix name is set in\n LocationARN, or if an access point or access point alias is used.

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

The name of the file share. Optional.

\n \n

\n FileShareName must be set if an S3 prefix name is set in\n LocationARN, or if an access point or access point alias is used.

\n

A valid NFS file share name can only contain the following characters:\n a-z, A-Z,\n 0-9, -, ., and\n _.

\n
" } }, "CacheAttributes": { @@ -1671,7 +1671,7 @@ "LocationARN": { "target": "com.amazonaws.storagegateway#LocationARN", "traits": { - "smithy.api#documentation": "

A custom ARN for the backend storage used for storing data for file shares. It includes\n a resource ARN with an optional prefix concatenation. The prefix must end with a forward\n slash (/).

\n \n

You can specify LocationARN as a bucket ARN, access point ARN or access point alias,\n as shown in the following examples.

\n

Bucket ARN:

\n

\n arn:aws:s3:::my-bucket/prefix/\n

\n

Access point ARN:

\n

\n arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/\n

\n

If you specify an access point, the bucket policy must be configured to delegate\n access control to the access point. For information, see Delegating access control to access points in the Amazon S3 User Guide.

\n

Access point alias:

\n

\n test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias\n

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

A custom ARN for the backend storage used for storing data for file shares. It includes\n a resource ARN with an optional prefix concatenation. The prefix must end with a forward\n slash (/).

\n \n

You can specify LocationARN as a bucket ARN, access point ARN or access point alias,\n as shown in the following examples.

\n

Bucket ARN:

\n

\n arn:aws:s3:::amzn-s3-demo-bucket/prefix/\n

\n

Access point ARN:

\n

\n arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/\n

\n

If you specify an access point, the bucket policy must be configured to delegate\n access control to the access point. For information, see Delegating access control to access points in the Amazon S3 User Guide.

\n

Access point alias:

\n

\n test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias\n

\n
", "smithy.api#required": {} } }, @@ -1762,7 +1762,7 @@ "FileShareName": { "target": "com.amazonaws.storagegateway#FileShareName", "traits": { - "smithy.api#documentation": "

The name of the file share. Optional.

\n \n

\n FileShareName must be set if an S3 prefix name is set in\n LocationARN, or if an access point or access point alias is used.

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

The name of the file share. Optional.

\n \n

\n FileShareName must be set if an S3 prefix name is set in\n LocationARN, or if an access point or access point alias is used.

\n

A valid SMB file share name cannot contain the following characters:\n [,],#,;,<,>,:,\",\\,/,|,?,*,+,\n or ASCII control characters 1-31.

\n
" } }, "CacheAttributes": { @@ -3708,7 +3708,7 @@ "GatewayType": { "target": "com.amazonaws.storagegateway#GatewayType", "traits": { - "smithy.api#documentation": "

The type of the gateway.

" + "smithy.api#documentation": "

The type of the gateway.

\n \n

Amazon FSx File Gateway is no longer available to new customers. Existing\n customers of FSx File Gateway can continue to use the service normally. For\n capabilities similar to FSx File Gateway, visit this blog post.

\n
" } }, "NextUpdateAvailabilityDate": { @@ -6005,7 +6005,7 @@ "GatewayType": { "target": "com.amazonaws.storagegateway#GatewayType", "traits": { - "smithy.api#documentation": "

The type of the gateway.

" + "smithy.api#documentation": "

The type of the gateway.

\n \n

Amazon FSx File Gateway is no longer available to new customers. Existing\n customers of FSx File Gateway can continue to use the service normally. For\n capabilities similar to FSx File Gateway, visit this blog post.

\n
" } }, "GatewayOperationalState": { @@ -7263,7 +7263,7 @@ "com.amazonaws.storagegateway#LocationARN": { "type": "string", "traits": { - "smithy.api#documentation": "

A custom ARN for the backend storage used for storing data for file shares. It includes\n a resource ARN with an optional prefix concatenation. The prefix must end with a forward\n slash (/).

\n \n

You can specify LocationARN as a bucket ARN, access point ARN or access point alias,\n as shown in the following examples.

\n

Bucket ARN:

\n

\n arn:aws:s3:::my-bucket/prefix/\n

\n

Access point ARN:

\n

\n arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/\n

\n

If you specify an access point, the bucket policy must be configured to delegate\n access control to the access point. For information, see Delegating access control to access points in the Amazon S3 User Guide.

\n

Access point alias:

\n

\n test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias\n

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

A custom ARN for the backend storage used for storing data for file shares. It includes\n a resource ARN with an optional prefix concatenation. The prefix must end with a forward\n slash (/).

\n \n

You can specify LocationARN as a bucket ARN, access point ARN or access point alias,\n as shown in the following examples.

\n

Bucket ARN:

\n

\n arn:aws:s3:::amzn-s3-demo-bucket/prefix/\n

\n

Access point ARN:

\n

\n arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/\n

\n

If you specify an access point, the bucket policy must be configured to delegate\n access control to the access point. For information, see Delegating access control to access points in the Amazon S3 User Guide.

\n

Access point alias:

\n

\n test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias\n

\n
", "smithy.api#length": { "min": 16, "max": 1400 @@ -9086,7 +9086,7 @@ "name": "storagegateway" }, "aws.protocols#awsJson1_1": {}, - "smithy.api#documentation": "Storage Gateway Service\n

Storage Gateway is the service that connects an on-premises software appliance\n with cloud-based storage to provide seamless and secure integration between an\n organization's on-premises IT environment and the Amazon Web Services storage\n infrastructure. The service enables you to securely upload data to the Amazon Web Services Cloud for cost effective backup and rapid disaster recovery.

\n

Use the following links to get started using the Storage Gateway\n Service API Reference:

\n \n \n

Storage Gateway resource IDs are in uppercase. When you use these resource IDs\n with the Amazon EC2 API, EC2 expects resource IDs in lowercase. You must change\n your resource ID to lowercase to use it with the EC2 API. For example, in Storage\n Gateway the ID for a volume might be vol-AA22BB012345DAF670. When you use\n this ID with the EC2 API, you must change it to vol-aa22bb012345daf670.\n Otherwise, the EC2 API might not behave as expected.

\n
\n \n

IDs for Storage Gateway volumes and Amazon EBS snapshots created from gateway\n volumes are changing to a longer format. Starting in December 2016, all new volumes and\n snapshots will be created with a 17-character string. Starting in April 2016, you will\n be able to use these longer IDs so you can test your systems with the new format. For\n more information, see Longer EC2 and\n EBS resource IDs.

\n

For example, a volume Amazon Resource Name (ARN) with the longer volume ID format\n looks like the following:

\n

\n arn:aws:storagegateway:us-west-2:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABBCCDDEEFFG.

\n

A snapshot ID with the longer ID format looks like the following:\n snap-78e226633445566ee.

\n

For more information, see Announcement:\n Heads-up – Longer Storage Gateway volume and snapshot IDs coming in\n 2016.

\n
", + "smithy.api#documentation": "Storage Gateway Service\n \n

Amazon FSx File Gateway is no longer available to new customers. Existing\n customers of FSx File Gateway can continue to use the service normally. For\n capabilities similar to FSx File Gateway, visit this blog post.

\n
\n

Storage Gateway is the service that connects an on-premises software appliance\n with cloud-based storage to provide seamless and secure integration between an\n organization's on-premises IT environment and the Amazon Web Services storage\n infrastructure. The service enables you to securely upload data to the Amazon Web Services Cloud for cost effective backup and rapid disaster recovery.

\n

Use the following links to get started using the Storage Gateway\n Service API Reference:

\n \n \n

Storage Gateway resource IDs are in uppercase. When you use these resource IDs\n with the Amazon EC2 API, EC2 expects resource IDs in lowercase. You must change\n your resource ID to lowercase to use it with the EC2 API. For example, in Storage\n Gateway the ID for a volume might be vol-AA22BB012345DAF670. When you use\n this ID with the EC2 API, you must change it to vol-aa22bb012345daf670.\n Otherwise, the EC2 API might not behave as expected.

\n
\n \n

IDs for Storage Gateway volumes and Amazon EBS snapshots created from gateway\n volumes are changing to a longer format. Starting in December 2016, all new volumes and\n snapshots will be created with a 17-character string. Starting in April 2016, you will\n be able to use these longer IDs so you can test your systems with the new format. For\n more information, see Longer EC2 and\n EBS resource IDs.

\n

For example, a volume Amazon Resource Name (ARN) with the longer volume ID format\n looks like the following:

\n

\n arn:aws:storagegateway:us-west-2:111122223333:gateway/sgw-12A3456B/volume/vol-1122AABBCCDDEEFFG.

\n

A snapshot ID with the longer ID format looks like the following:\n snap-78e226633445566ee.

\n

For more information, see Announcement:\n Heads-up – Longer Storage Gateway volume and snapshot IDs coming in\n 2016.

\n
", "smithy.api#title": "AWS Storage Gateway", "smithy.api#xmlNamespace": { "uri": "http://storagegateway.amazonaws.com/doc/2013-06-30" @@ -11322,7 +11322,7 @@ "FileShareName": { "target": "com.amazonaws.storagegateway#FileShareName", "traits": { - "smithy.api#documentation": "

The name of the file share. Optional.

\n \n

\n FileShareName must be set if an S3 prefix name is set in\n LocationARN, or if an access point or access point alias is used.

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

The name of the file share. Optional.

\n \n

\n FileShareName must be set if an S3 prefix name is set in\n LocationARN, or if an access point or access point alias is used.

\n

A valid NFS file share name can only contain the following characters:\n a-z, A-Z,\n 0-9, -, ., and\n _.

\n
" } }, "CacheAttributes": { @@ -11490,7 +11490,7 @@ "FileShareName": { "target": "com.amazonaws.storagegateway#FileShareName", "traits": { - "smithy.api#documentation": "

The name of the file share. Optional.

\n \n

\n FileShareName must be set if an S3 prefix name is set in\n LocationARN, or if an access point or access point alias is used.

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

The name of the file share. Optional.

\n \n

\n FileShareName must be set if an S3 prefix name is set in\n LocationARN, or if an access point or access point alias is used.

\n

A valid SMB file share name cannot contain the following characters:\n [,],#,;,<,>,:,\",\\,/,|,?,*,+,\n or ASCII control characters 1-31.

\n
" } }, "CacheAttributes": { From 668b81bec721d3d669a51629b95ac4a138202756 Mon Sep 17 00:00:00 2001 From: AWS SDK Swift Automation Date: Mon, 28 Oct 2024 18:05:33 +0000 Subject: [PATCH 2/3] Update endpoints model --- codegen/sdk-codegen/sdk-endpoints.json | 1 + 1 file changed, 1 insertion(+) diff --git a/codegen/sdk-codegen/sdk-endpoints.json b/codegen/sdk-codegen/sdk-endpoints.json index 622af11a634..5a517bed706 100644 --- a/codegen/sdk-codegen/sdk-endpoints.json +++ b/codegen/sdk-codegen/sdk-endpoints.json @@ -20404,6 +20404,7 @@ "ap-southeast-2" : { }, "ap-southeast-3" : { }, "ap-southeast-4" : { }, + "ap-southeast-5" : { }, "ca-central-1" : { "variants" : [ { "hostname" : "storagegateway-fips.ca-central-1.amazonaws.com", From 44c8567b7a7ef5793f6270d6eabed16830d8faec Mon Sep 17 00:00:00 2001 From: AWS SDK Swift Automation Date: Mon, 28 Oct 2024 18:52:52 +0000 Subject: [PATCH 3/3] chore: Updates version to 1.0.29 --- Package.version | 2 +- Package.version.next | 2 +- .../AWSMediaPackageV2/Package.swift.txt | 6 +- .../MediaPackageV2Client.swift | 290 ++++ .../Sources/AWSMediaPackageV2/Models.swift | 1320 +++++++++++++++-- .../Sources/AWSMediaPackageV2/Waiters.swift | 13 + .../Sources/AWSOpenSearch/Models.swift | 112 ++ .../AWSRDS/Sources/AWSRDS/Models.swift | 102 +- .../Sources/AWSStorageGateway/Models.swift | 28 +- 9 files changed, 1703 insertions(+), 172 deletions(-) create mode 100644 Sources/Services/AWSMediaPackageV2/Sources/AWSMediaPackageV2/Waiters.swift diff --git a/Package.version b/Package.version index f8536a434c8..fa7e3ca512b 100644 --- a/Package.version +++ b/Package.version @@ -1 +1 @@ -1.0.28 \ No newline at end of file +1.0.29 \ No newline at end of file diff --git a/Package.version.next b/Package.version.next index fa7e3ca512b..a7a8343f1da 100644 --- a/Package.version.next +++ b/Package.version.next @@ -1 +1 @@ -1.0.29 \ No newline at end of file +1.0.30 \ No newline at end of file diff --git a/Sources/Services/AWSMediaPackageV2/Package.swift.txt b/Sources/Services/AWSMediaPackageV2/Package.swift.txt index b4e38f47c48..f6f3bd61844 100644 --- a/Sources/Services/AWSMediaPackageV2/Package.swift.txt +++ b/Sources/Services/AWSMediaPackageV2/Package.swift.txt @@ -61,15 +61,15 @@ let package = Package( package: "aws-sdk-swift.AWSSDKHTTPAuth" ), .product( - name: "SmithyJSON", + name: "SmithyRetries", package: "aws-sdk-swift.smithy-swift" ), .product( - name: "SmithyReadWrite", + name: "SmithyJSON", package: "aws-sdk-swift.smithy-swift" ), .product( - name: "SmithyRetries", + name: "SmithyReadWrite", package: "aws-sdk-swift.smithy-swift" ), .product( diff --git a/Sources/Services/AWSMediaPackageV2/Sources/AWSMediaPackageV2/MediaPackageV2Client.swift b/Sources/Services/AWSMediaPackageV2/Sources/AWSMediaPackageV2/MediaPackageV2Client.swift index a136682f568..bee4b0e9948 100644 --- a/Sources/Services/AWSMediaPackageV2/Sources/AWSMediaPackageV2/MediaPackageV2Client.swift +++ b/Sources/Services/AWSMediaPackageV2/Sources/AWSMediaPackageV2/MediaPackageV2Client.swift @@ -196,6 +196,78 @@ extension MediaPackageV2Client { } extension MediaPackageV2Client { + /// Performs the `CancelHarvestJob` operation on the `mediapackagev2` service. + /// + /// Cancels an in-progress harvest job. + /// + /// - Parameter CancelHarvestJobInput : [no documentation found] + /// + /// - Returns: `CancelHarvestJobOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have permissions to perform the requested operation. The user or role that is making the request must have at least one IAM permissions policy attached that grants the required permissions. For more information, see Access Management in the IAM User Guide. + /// - `ConflictException` : Updating or deleting this resource can cause an inconsistent state. + /// - `InternalServerException` : Indicates that an error from the service occurred while trying to process a request. + /// - `ResourceNotFoundException` : The specified resource doesn't exist. + /// - `ThrottlingException` : The request throughput limit was exceeded. + /// - `ValidationException` : The input failed to meet the constraints specified by the AWS service. + public func cancelHarvestJob(input: CancelHarvestJobInput) async throws -> CancelHarvestJobOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .put) + .withServiceName(value: serviceName) + .withOperation(value: "cancelHarvestJob") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "mediapackagev2") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(CancelHarvestJobInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.serialize(ClientRuntime.HeaderMiddleware(CancelHarvestJobInput.headerProvider(_:))) + builder.deserialize(ClientRuntime.DeserializeMiddleware(CancelHarvestJobOutput.httpOutput(from:), CancelHarvestJobOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(serviceID: serviceName, version: "1.0", config: config)) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "MediaPackageV2") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "CancelHarvestJob") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes, + meterScope: serviceName, + tracerScope: serviceName + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `CreateChannel` operation on the `mediapackagev2` service. /// /// Create a channel to start receiving content streams. The channel represents the input to MediaPackage for incoming live content from an encoder such as AWS Elemental MediaLive. The channel receives content, and after packaging it, outputs it through an origin endpoint to downstream devices (such as video players or CDNs) that request the content. You can create only one channel with each request. We recommend that you spread out channels between channel groups, such as putting redundant channels in the same AWS Region in different channel groups. @@ -350,6 +422,83 @@ extension MediaPackageV2Client { return try await op.execute(input: input) } + /// Performs the `CreateHarvestJob` operation on the `mediapackagev2` service. + /// + /// Creates a new harvest job to export content from a MediaPackage v2 channel to an S3 bucket. + /// + /// - Parameter CreateHarvestJobInput : The request object for creating a new harvest job. + /// + /// - Returns: `CreateHarvestJobOutput` : The response object returned after creating a harvest job. + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have permissions to perform the requested operation. The user or role that is making the request must have at least one IAM permissions policy attached that grants the required permissions. For more information, see Access Management in the IAM User Guide. + /// - `ConflictException` : Updating or deleting this resource can cause an inconsistent state. + /// - `InternalServerException` : Indicates that an error from the service occurred while trying to process a request. + /// - `ResourceNotFoundException` : The specified resource doesn't exist. + /// - `ServiceQuotaExceededException` : The request would cause a service quota to be exceeded. + /// - `ThrottlingException` : The request throughput limit was exceeded. + /// - `ValidationException` : The input failed to meet the constraints specified by the AWS service. + public func createHarvestJob(input: CreateHarvestJobInput) async throws -> CreateHarvestJobOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createHarvestJob") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "mediapackagev2") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + builder.interceptors.add(ClientRuntime.IdempotencyTokenMiddleware(keyPath: \.clientToken)) + builder.interceptors.add(ClientRuntime.URLPathMiddleware(CreateHarvestJobInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.serialize(ClientRuntime.HeaderMiddleware(CreateHarvestJobInput.headerProvider(_:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/json")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: CreateHarvestJobInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(CreateHarvestJobOutput.httpOutput(from:), CreateHarvestJobOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(serviceID: serviceName, version: "1.0", config: config)) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "MediaPackageV2") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "CreateHarvestJob") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes, + meterScope: serviceName, + tracerScope: serviceName + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `CreateOriginEndpoint` operation on the `mediapackagev2` service. /// /// The endpoint is attached to a channel, and represents the output of the live content. You can associate multiple endpoints to a single channel. Each endpoint gives players and downstream CDNs (such as Amazon CloudFront) access to the content for playback. Content can't be served from a channel until it has an endpoint. You can create only one endpoint with each request. @@ -986,6 +1135,76 @@ extension MediaPackageV2Client { return try await op.execute(input: input) } + /// Performs the `GetHarvestJob` operation on the `mediapackagev2` service. + /// + /// Retrieves the details of a specific harvest job. + /// + /// - Parameter GetHarvestJobInput : The request object for retrieving a specific harvest job. + /// + /// - Returns: `GetHarvestJobOutput` : The response object containing the details of the requested harvest job. + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have permissions to perform the requested operation. The user or role that is making the request must have at least one IAM permissions policy attached that grants the required permissions. For more information, see Access Management in the IAM User Guide. + /// - `InternalServerException` : Indicates that an error from the service occurred while trying to process a request. + /// - `ResourceNotFoundException` : The specified resource doesn't exist. + /// - `ThrottlingException` : The request throughput limit was exceeded. + /// - `ValidationException` : The input failed to meet the constraints specified by the AWS service. + public func getHarvestJob(input: GetHarvestJobInput) async throws -> GetHarvestJobOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "getHarvestJob") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "mediapackagev2") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(GetHarvestJobInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(GetHarvestJobOutput.httpOutput(from:), GetHarvestJobOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(serviceID: serviceName, version: "1.0", config: config)) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "MediaPackageV2") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "GetHarvestJob") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes, + meterScope: serviceName, + tracerScope: serviceName + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `GetOriginEndpoint` operation on the `mediapackagev2` service. /// /// Retrieves the specified origin endpoint that's configured in AWS Elemental MediaPackage to obtain its playback URL and to view the packaging settings that it's currently using. @@ -1267,6 +1486,77 @@ extension MediaPackageV2Client { return try await op.execute(input: input) } + /// Performs the `ListHarvestJobs` operation on the `mediapackagev2` service. + /// + /// Retrieves a list of harvest jobs that match the specified criteria. + /// + /// - Parameter ListHarvestJobsInput : The request object for listing harvest jobs. + /// + /// - Returns: `ListHarvestJobsOutput` : The response object containing the list of harvest jobs that match the specified criteria. + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have permissions to perform the requested operation. The user or role that is making the request must have at least one IAM permissions policy attached that grants the required permissions. For more information, see Access Management in the IAM User Guide. + /// - `InternalServerException` : Indicates that an error from the service occurred while trying to process a request. + /// - `ResourceNotFoundException` : The specified resource doesn't exist. + /// - `ThrottlingException` : The request throughput limit was exceeded. + /// - `ValidationException` : The input failed to meet the constraints specified by the AWS service. + public func listHarvestJobs(input: ListHarvestJobsInput) async throws -> ListHarvestJobsOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "listHarvestJobs") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "mediapackagev2") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(ListHarvestJobsInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.serialize(ClientRuntime.QueryItemMiddleware(ListHarvestJobsInput.queryItemProvider(_:))) + builder.deserialize(ClientRuntime.DeserializeMiddleware(ListHarvestJobsOutput.httpOutput(from:), ListHarvestJobsOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(serviceID: serviceName, version: "1.0", config: config)) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "MediaPackageV2") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "ListHarvestJobs") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes, + meterScope: serviceName, + tracerScope: serviceName + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `ListOriginEndpoints` operation on the `mediapackagev2` service. /// /// Retrieves all origin endpoints in a specific channel that are configured in AWS Elemental MediaPackage. diff --git a/Sources/Services/AWSMediaPackageV2/Sources/AWSMediaPackageV2/Models.swift b/Sources/Services/AWSMediaPackageV2/Sources/AWSMediaPackageV2/Models.swift index f3cdd113d66..1c10b91c7a7 100644 --- a/Sources/Services/AWSMediaPackageV2/Sources/AWSMediaPackageV2/Models.swift +++ b/Sources/Services/AWSMediaPackageV2/Sources/AWSMediaPackageV2/Models.swift @@ -122,42 +122,6 @@ extension MediaPackageV2ClientTypes { } } -extension MediaPackageV2ClientTypes { - - /// The configuration of the channel group. - public struct ChannelGroupListConfiguration: Swift.Sendable { - /// The Amazon Resource Name (ARN) associated with the resource. - /// This member is required. - public var arn: Swift.String? - /// The name that describes the channel group. The name is the primary identifier for the channel group, and must be unique for your account in the AWS Region. - /// This member is required. - public var channelGroupName: Swift.String? - /// The date and time the channel group was created. - /// This member is required. - public var createdAt: Foundation.Date? - /// Any descriptive information that you want to add to the channel group for future identification purposes. - public var description: Swift.String? - /// The date and time the channel group was modified. - /// This member is required. - public var modifiedAt: Foundation.Date? - - public init( - arn: Swift.String? = nil, - channelGroupName: Swift.String? = nil, - createdAt: Foundation.Date? = nil, - description: Swift.String? = nil, - modifiedAt: Foundation.Date? = nil - ) - { - self.arn = arn - self.channelGroupName = channelGroupName - self.createdAt = createdAt - self.description = description - self.modifiedAt = modifiedAt - } - } -} - extension MediaPackageV2ClientTypes { public enum ConflictExceptionType: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { @@ -245,6 +209,69 @@ public struct InternalServerException: ClientRuntime.ModeledError, AWSClientRunt } } +extension MediaPackageV2ClientTypes { + + public enum ResourceTypeNotFound: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case channel + case channelGroup + case harvestJob + case originEndpoint + case sdkUnknown(Swift.String) + + public static var allCases: [ResourceTypeNotFound] { + return [ + .channel, + .channelGroup, + .harvestJob, + .originEndpoint + ] + } + + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + + public var rawValue: Swift.String { + switch self { + case .channel: return "CHANNEL" + case .channelGroup: return "CHANNEL_GROUP" + case .harvestJob: return "HARVEST_JOB" + case .originEndpoint: return "ORIGIN_ENDPOINT" + case let .sdkUnknown(s): return s + } + } + } +} + +/// The specified resource doesn't exist. +public struct ResourceNotFoundException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + /// The specified resource type wasn't found. + public internal(set) var resourceTypeNotFound: MediaPackageV2ClientTypes.ResourceTypeNotFound? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ResourceNotFoundException" } + public static var fault: ClientRuntime.ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = SmithyHTTPAPI.HTTPResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil, + resourceTypeNotFound: MediaPackageV2ClientTypes.ResourceTypeNotFound? = nil + ) + { + self.properties.message = message + self.properties.resourceTypeNotFound = resourceTypeNotFound + } +} + /// The request throughput limit was exceeded. public struct ThrottlingException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { @@ -283,6 +310,13 @@ extension MediaPackageV2ClientTypes { case encryptionContractWithoutAudioRenditionIncompatible case encryptionMethodContainerTypeMismatch case endTimeEarlierThanStartTime + case harvestedManifestHasStartEndFilterConfiguration + case harvestedManifestNotFoundOnEndpoint + case harvestJobCustomerEndpointReadAccessDenied + case harvestJobIneligibleForCancellation + case harvestJobS3DestinationMissingOrIncomplete + case harvestJobUnableToWriteToS3Destination + case invalidHarvestJobDuration case invalidManifestFilter case invalidPaginationMaxResults case invalidPaginationToken @@ -310,6 +344,7 @@ extension MediaPackageV2ClientTypes { case sourceDisruptionsEnabledIncorrectly case startTagTimeOffsetInvalid case timingSourceMissing + case tooManyInProgressHarvestJobs case tsContainerTypeWithDashManifest case updatePeriodSmallerThanSegmentDuration case urlInvalid @@ -336,6 +371,13 @@ extension MediaPackageV2ClientTypes { .encryptionContractWithoutAudioRenditionIncompatible, .encryptionMethodContainerTypeMismatch, .endTimeEarlierThanStartTime, + .harvestedManifestHasStartEndFilterConfiguration, + .harvestedManifestNotFoundOnEndpoint, + .harvestJobCustomerEndpointReadAccessDenied, + .harvestJobIneligibleForCancellation, + .harvestJobS3DestinationMissingOrIncomplete, + .harvestJobUnableToWriteToS3Destination, + .invalidHarvestJobDuration, .invalidManifestFilter, .invalidPaginationMaxResults, .invalidPaginationToken, @@ -363,6 +405,7 @@ extension MediaPackageV2ClientTypes { .sourceDisruptionsEnabledIncorrectly, .startTagTimeOffsetInvalid, .timingSourceMissing, + .tooManyInProgressHarvestJobs, .tsContainerTypeWithDashManifest, .updatePeriodSmallerThanSegmentDuration, .urlInvalid, @@ -395,6 +438,13 @@ extension MediaPackageV2ClientTypes { case .encryptionContractWithoutAudioRenditionIncompatible: return "ENCRYPTION_CONTRACT_WITHOUT_AUDIO_RENDITION_INCOMPATIBLE" case .encryptionMethodContainerTypeMismatch: return "ENCRYPTION_METHOD_CONTAINER_TYPE_MISMATCH" case .endTimeEarlierThanStartTime: return "END_TIME_EARLIER_THAN_START_TIME" + case .harvestedManifestHasStartEndFilterConfiguration: return "HARVESTED_MANIFEST_HAS_START_END_FILTER_CONFIGURATION" + case .harvestedManifestNotFoundOnEndpoint: return "HARVESTED_MANIFEST_NOT_FOUND_ON_ENDPOINT" + case .harvestJobCustomerEndpointReadAccessDenied: return "HARVEST_JOB_CUSTOMER_ENDPOINT_READ_ACCESS_DENIED" + case .harvestJobIneligibleForCancellation: return "HARVEST_JOB_INELIGIBLE_FOR_CANCELLATION" + case .harvestJobS3DestinationMissingOrIncomplete: return "HARVEST_JOB_S3_DESTINATION_MISSING_OR_INCOMPLETE" + case .harvestJobUnableToWriteToS3Destination: return "HARVEST_JOB_UNABLE_TO_WRITE_TO_S3_DESTINATION" + case .invalidHarvestJobDuration: return "INVALID_HARVEST_JOB_DURATION" case .invalidManifestFilter: return "INVALID_MANIFEST_FILTER" case .invalidPaginationMaxResults: return "INVALID_PAGINATION_MAX_RESULTS" case .invalidPaginationToken: return "INVALID_PAGINATION_TOKEN" @@ -422,6 +472,7 @@ extension MediaPackageV2ClientTypes { case .sourceDisruptionsEnabledIncorrectly: return "SOURCE_DISRUPTIONS_ENABLED_INCORRECTLY" case .startTagTimeOffsetInvalid: return "START_TAG_TIME_OFFSET_INVALID" case .timingSourceMissing: return "TIMING_SOURCE_MISSING" + case .tooManyInProgressHarvestJobs: return "TOO_MANY_IN_PROGRESS_HARVEST_JOBS" case .tsContainerTypeWithDashManifest: return "TS_CONTAINER_TYPE_WITH_DASH_MANIFEST" case .updatePeriodSmallerThanSegmentDuration: return "UPDATE_PERIOD_SMALLER_THAN_SEGMENT_DURATION" case .urlInvalid: return "URL_INVALID" @@ -467,89 +518,102 @@ public struct ValidationException: ClientRuntime.ModeledError, AWSClientRuntime. } } -public struct DeleteChannelPolicyInput: Swift.Sendable { - /// The name that describes the channel group. The name is the primary identifier for the channel group, and must be unique for your account in the AWS Region. +public struct CancelHarvestJobInput: Swift.Sendable { + /// The name of the channel group containing the channel from which the harvest job is running. /// This member is required. public var channelGroupName: Swift.String? - /// The name that describes the channel. The name is the primary identifier for the channel, and must be unique for your account in the AWS Region and channel group. + /// The name of the channel from which the harvest job is running. /// This member is required. public var channelName: Swift.String? + /// The current Entity Tag (ETag) associated with the harvest job. Used for concurrency control. + public var eTag: Swift.String? + /// The name of the harvest job to cancel. This name must be unique within the channel and cannot be changed after the harvest job is submitted. + /// This member is required. + public var harvestJobName: Swift.String? + /// The name of the origin endpoint that the harvest job is harvesting from. This cannot be changed after the harvest job is submitted. + /// This member is required. + public var originEndpointName: Swift.String? public init( channelGroupName: Swift.String? = nil, - channelName: Swift.String? = nil + channelName: Swift.String? = nil, + eTag: Swift.String? = nil, + harvestJobName: Swift.String? = nil, + originEndpointName: Swift.String? = nil ) { self.channelGroupName = channelGroupName self.channelName = channelName + self.eTag = eTag + self.harvestJobName = harvestJobName + self.originEndpointName = originEndpointName } } -public struct DeleteChannelPolicyOutput: Swift.Sendable { +public struct CancelHarvestJobOutput: Swift.Sendable { public init() { } } extension MediaPackageV2ClientTypes { - public enum ResourceTypeNotFound: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { - case channel - case channelGroup - case originEndpoint - case sdkUnknown(Swift.String) - - public static var allCases: [ResourceTypeNotFound] { - return [ - .channel, - .channelGroup, - .originEndpoint - ] - } - - public init?(rawValue: Swift.String) { - let value = Self.allCases.first(where: { $0.rawValue == rawValue }) - self = value ?? Self.sdkUnknown(rawValue) - } + /// The configuration of the channel group. + public struct ChannelGroupListConfiguration: Swift.Sendable { + /// The Amazon Resource Name (ARN) associated with the resource. + /// This member is required. + public var arn: Swift.String? + /// The name that describes the channel group. The name is the primary identifier for the channel group, and must be unique for your account in the AWS Region. + /// This member is required. + public var channelGroupName: Swift.String? + /// The date and time the channel group was created. + /// This member is required. + public var createdAt: Foundation.Date? + /// Any descriptive information that you want to add to the channel group for future identification purposes. + public var description: Swift.String? + /// The date and time the channel group was modified. + /// This member is required. + public var modifiedAt: Foundation.Date? - public var rawValue: Swift.String { - switch self { - case .channel: return "CHANNEL" - case .channelGroup: return "CHANNEL_GROUP" - case .originEndpoint: return "ORIGIN_ENDPOINT" - case let .sdkUnknown(s): return s - } + public init( + arn: Swift.String? = nil, + channelGroupName: Swift.String? = nil, + createdAt: Foundation.Date? = nil, + description: Swift.String? = nil, + modifiedAt: Foundation.Date? = nil + ) + { + self.arn = arn + self.channelGroupName = channelGroupName + self.createdAt = createdAt + self.description = description + self.modifiedAt = modifiedAt } } } -/// The specified resource doesn't exist. -public struct ResourceNotFoundException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { - - public struct Properties { - public internal(set) var message: Swift.String? = nil - /// The specified resource type wasn't found. - public internal(set) var resourceTypeNotFound: MediaPackageV2ClientTypes.ResourceTypeNotFound? = nil - } - - public internal(set) var properties = Properties() - public static var typeName: Swift.String { "ResourceNotFoundException" } - public static var fault: ClientRuntime.ErrorFault { .client } - public static var isRetryable: Swift.Bool { false } - public static var isThrottling: Swift.Bool { false } - public internal(set) var httpResponse = SmithyHTTPAPI.HTTPResponse() - public internal(set) var message: Swift.String? - public internal(set) var requestID: Swift.String? +public struct DeleteChannelPolicyInput: Swift.Sendable { + /// The name that describes the channel group. The name is the primary identifier for the channel group, and must be unique for your account in the AWS Region. + /// This member is required. + public var channelGroupName: Swift.String? + /// The name that describes the channel. The name is the primary identifier for the channel, and must be unique for your account in the AWS Region and channel group. + /// This member is required. + public var channelName: Swift.String? public init( - message: Swift.String? = nil, - resourceTypeNotFound: MediaPackageV2ClientTypes.ResourceTypeNotFound? = nil + channelGroupName: Swift.String? = nil, + channelName: Swift.String? = nil ) { - self.properties.message = message - self.properties.resourceTypeNotFound = resourceTypeNotFound + self.channelGroupName = channelGroupName + self.channelName = channelName } } +public struct DeleteChannelPolicyOutput: Swift.Sendable { + + public init() { } +} + public struct GetChannelPolicyInput: Swift.Sendable { /// The name that describes the channel group. The name is the primary identifier for the channel group, and must be unique for your account in the AWS Region. /// This member is required. @@ -2964,54 +3028,602 @@ public struct GetChannelGroupOutput: Swift.Sendable { } } -public struct ListChannelGroupsInput: Swift.Sendable { - /// The maximum number of results to return in the response. - public var maxResults: Swift.Int? - /// The pagination token from the GET list request. Use the token to fetch the next page of results. - public var nextToken: Swift.String? +extension MediaPackageV2ClientTypes { - public init( - maxResults: Swift.Int? = nil, - nextToken: Swift.String? = nil - ) - { - self.maxResults = maxResults - self.nextToken = nextToken + /// Configuration parameters for where in an S3 bucket to place the harvested content. + public struct S3DestinationConfig: Swift.Sendable { + /// The name of an S3 bucket within which harvested content will be exported. + /// This member is required. + public var bucketName: Swift.String? + /// The path within the specified S3 bucket where the harvested content will be placed. + /// This member is required. + public var destinationPath: Swift.String? + + public init( + bucketName: Swift.String? = nil, + destinationPath: Swift.String? = nil + ) + { + self.bucketName = bucketName + self.destinationPath = destinationPath + } } } -public struct ListChannelGroupsOutput: Swift.Sendable { - /// The objects being returned. - public var items: [MediaPackageV2ClientTypes.ChannelGroupListConfiguration]? - /// The pagination token from the GET list request. Use the token to fetch the next page of results. - public var nextToken: Swift.String? +extension MediaPackageV2ClientTypes { - public init( - items: [MediaPackageV2ClientTypes.ChannelGroupListConfiguration]? = nil, - nextToken: Swift.String? = nil - ) - { - self.items = items - self.nextToken = nextToken + /// The configuration for the destination where the harvested content will be exported. + public struct Destination: Swift.Sendable { + /// The configuration for exporting harvested content to an S3 bucket. This includes details such as the bucket name and destination path within the bucket. + /// This member is required. + public var s3Destination: MediaPackageV2ClientTypes.S3DestinationConfig? + + public init( + s3Destination: MediaPackageV2ClientTypes.S3DestinationConfig? = nil + ) + { + self.s3Destination = s3Destination + } } } -public struct UpdateChannelGroupInput: Swift.Sendable { - /// The name that describes the channel group. The name is the primary identifier for the channel group, and must be unique for your account in the AWS Region. - /// This member is required. - public var channelGroupName: Swift.String? - /// Any descriptive information that you want to add to the channel group for future identification purposes. - public var description: Swift.String? - /// The expected current Entity Tag (ETag) for the resource. If the specified ETag does not match the resource's current entity tag, the update request will be rejected. - public var eTag: Swift.String? +extension MediaPackageV2ClientTypes { - public init( - channelGroupName: Swift.String? = nil, - description: Swift.String? = nil, - eTag: Swift.String? = nil - ) - { - self.channelGroupName = channelGroupName + /// Information about a harvested DASH manifest. + public struct HarvestedDashManifest: Swift.Sendable { + /// The name of the harvested DASH manifest. + /// This member is required. + public var manifestName: Swift.String? + + public init( + manifestName: Swift.String? = nil + ) + { + self.manifestName = manifestName + } + } +} + +extension MediaPackageV2ClientTypes { + + /// Information about a harvested HLS manifest. + public struct HarvestedHlsManifest: Swift.Sendable { + /// The name of the harvested HLS manifest. + /// This member is required. + public var manifestName: Swift.String? + + public init( + manifestName: Swift.String? = nil + ) + { + self.manifestName = manifestName + } + } +} + +extension MediaPackageV2ClientTypes { + + /// Information about a harvested Low-Latency HLS manifest. + public struct HarvestedLowLatencyHlsManifest: Swift.Sendable { + /// The name of the harvested Low-Latency HLS manifest. + /// This member is required. + public var manifestName: Swift.String? + + public init( + manifestName: Swift.String? = nil + ) + { + self.manifestName = manifestName + } + } +} + +extension MediaPackageV2ClientTypes { + + /// A collection of harvested manifests of different types. + public struct HarvestedManifests: Swift.Sendable { + /// A list of harvested DASH manifests. + public var dashManifests: [MediaPackageV2ClientTypes.HarvestedDashManifest]? + /// A list of harvested HLS manifests. + public var hlsManifests: [MediaPackageV2ClientTypes.HarvestedHlsManifest]? + /// A list of harvested Low-Latency HLS manifests. + public var lowLatencyHlsManifests: [MediaPackageV2ClientTypes.HarvestedLowLatencyHlsManifest]? + + public init( + dashManifests: [MediaPackageV2ClientTypes.HarvestedDashManifest]? = nil, + hlsManifests: [MediaPackageV2ClientTypes.HarvestedHlsManifest]? = nil, + lowLatencyHlsManifests: [MediaPackageV2ClientTypes.HarvestedLowLatencyHlsManifest]? = nil + ) + { + self.dashManifests = dashManifests + self.hlsManifests = hlsManifests + self.lowLatencyHlsManifests = lowLatencyHlsManifests + } + } +} + +extension MediaPackageV2ClientTypes { + + /// Defines the schedule configuration for a harvest job. + public struct HarvesterScheduleConfiguration: Swift.Sendable { + /// The end time for the harvest job. + /// This member is required. + public var endTime: Foundation.Date? + /// The start time for the harvest job. + /// This member is required. + public var startTime: Foundation.Date? + + public init( + endTime: Foundation.Date? = nil, + startTime: Foundation.Date? = nil + ) + { + self.endTime = endTime + self.startTime = startTime + } + } +} + +/// The request object for creating a new harvest job. +public struct CreateHarvestJobInput: Swift.Sendable { + /// The name of the channel group containing the channel from which to harvest content. + /// This member is required. + public var channelGroupName: Swift.String? + /// The name of the channel from which to harvest content. + /// This member is required. + public var channelName: Swift.String? + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + public var clientToken: Swift.String? + /// An optional description for the harvest job. + public var description: Swift.String? + /// The S3 destination where the harvested content will be placed. + /// This member is required. + public var destination: MediaPackageV2ClientTypes.Destination? + /// A name for the harvest job. This name must be unique within the channel. + public var harvestJobName: Swift.String? + /// A list of manifests to be harvested. + /// This member is required. + public var harvestedManifests: MediaPackageV2ClientTypes.HarvestedManifests? + /// The name of the origin endpoint from which to harvest content. + /// This member is required. + public var originEndpointName: Swift.String? + /// The configuration for when the harvest job should run, including start and end times. + /// This member is required. + public var scheduleConfiguration: MediaPackageV2ClientTypes.HarvesterScheduleConfiguration? + /// A collection of tags associated with the harvest job. + public var tags: [Swift.String: Swift.String]? + + public init( + channelGroupName: Swift.String? = nil, + channelName: Swift.String? = nil, + clientToken: Swift.String? = nil, + description: Swift.String? = nil, + destination: MediaPackageV2ClientTypes.Destination? = nil, + harvestJobName: Swift.String? = nil, + harvestedManifests: MediaPackageV2ClientTypes.HarvestedManifests? = nil, + originEndpointName: Swift.String? = nil, + scheduleConfiguration: MediaPackageV2ClientTypes.HarvesterScheduleConfiguration? = nil, + tags: [Swift.String: Swift.String]? = nil + ) + { + self.channelGroupName = channelGroupName + self.channelName = channelName + self.clientToken = clientToken + self.description = description + self.destination = destination + self.harvestJobName = harvestJobName + self.harvestedManifests = harvestedManifests + self.originEndpointName = originEndpointName + self.scheduleConfiguration = scheduleConfiguration + self.tags = tags + } +} + +extension MediaPackageV2ClientTypes { + + public enum HarvestJobStatus: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case cancelled + case completed + case failed + case inProgress + case queued + case sdkUnknown(Swift.String) + + public static var allCases: [HarvestJobStatus] { + return [ + .cancelled, + .completed, + .failed, + .inProgress, + .queued + ] + } + + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + + public var rawValue: Swift.String { + switch self { + case .cancelled: return "CANCELLED" + case .completed: return "COMPLETED" + case .failed: return "FAILED" + case .inProgress: return "IN_PROGRESS" + case .queued: return "QUEUED" + case let .sdkUnknown(s): return s + } + } + } +} + +/// The response object returned after creating a harvest job. +public struct CreateHarvestJobOutput: Swift.Sendable { + /// The Amazon Resource Name (ARN) of the created harvest job. + /// This member is required. + public var arn: Swift.String? + /// The name of the channel group containing the channel from which content is being harvested. + /// This member is required. + public var channelGroupName: Swift.String? + /// The name of the channel from which content is being harvested. + /// This member is required. + public var channelName: Swift.String? + /// The date and time the harvest job was created. + /// This member is required. + public var createdAt: Foundation.Date? + /// The description of the harvest job, if provided. + public var description: Swift.String? + /// The S3 destination where the harvested content will be placed. + /// This member is required. + public var destination: MediaPackageV2ClientTypes.Destination? + /// The current version of the harvest job. Used for concurrency control. + public var eTag: Swift.String? + /// An error message if the harvest job creation failed. + public var errorMessage: Swift.String? + /// The name of the created harvest job. + /// This member is required. + public var harvestJobName: Swift.String? + /// A list of manifests that will be harvested. + /// This member is required. + public var harvestedManifests: MediaPackageV2ClientTypes.HarvestedManifests? + /// The date and time the harvest job was last modified. + /// This member is required. + public var modifiedAt: Foundation.Date? + /// The name of the origin endpoint from which content is being harvested. + /// This member is required. + public var originEndpointName: Swift.String? + /// The configuration for when the harvest job will run, including start and end times. + /// This member is required. + public var scheduleConfiguration: MediaPackageV2ClientTypes.HarvesterScheduleConfiguration? + /// The current status of the harvest job (e.g., CREATED, IN_PROGRESS, ABORTED, COMPLETED, FAILED). + /// This member is required. + public var status: MediaPackageV2ClientTypes.HarvestJobStatus? + /// A collection of tags associated with the harvest job. + public var tags: [Swift.String: Swift.String]? + + public init( + arn: Swift.String? = nil, + channelGroupName: Swift.String? = nil, + channelName: Swift.String? = nil, + createdAt: Foundation.Date? = nil, + description: Swift.String? = nil, + destination: MediaPackageV2ClientTypes.Destination? = nil, + eTag: Swift.String? = nil, + errorMessage: Swift.String? = nil, + harvestJobName: Swift.String? = nil, + harvestedManifests: MediaPackageV2ClientTypes.HarvestedManifests? = nil, + modifiedAt: Foundation.Date? = nil, + originEndpointName: Swift.String? = nil, + scheduleConfiguration: MediaPackageV2ClientTypes.HarvesterScheduleConfiguration? = nil, + status: MediaPackageV2ClientTypes.HarvestJobStatus? = nil, + tags: [Swift.String: Swift.String]? = nil + ) + { + self.arn = arn + self.channelGroupName = channelGroupName + self.channelName = channelName + self.createdAt = createdAt + self.description = description + self.destination = destination + self.eTag = eTag + self.errorMessage = errorMessage + self.harvestJobName = harvestJobName + self.harvestedManifests = harvestedManifests + self.modifiedAt = modifiedAt + self.originEndpointName = originEndpointName + self.scheduleConfiguration = scheduleConfiguration + self.status = status + self.tags = tags + } +} + +/// The request object for retrieving a specific harvest job. +public struct GetHarvestJobInput: Swift.Sendable { + /// The name of the channel group containing the channel associated with the harvest job. + /// This member is required. + public var channelGroupName: Swift.String? + /// The name of the channel associated with the harvest job. + /// This member is required. + public var channelName: Swift.String? + /// The name of the harvest job to retrieve. + /// This member is required. + public var harvestJobName: Swift.String? + /// The name of the origin endpoint associated with the harvest job. + /// This member is required. + public var originEndpointName: Swift.String? + + public init( + channelGroupName: Swift.String? = nil, + channelName: Swift.String? = nil, + harvestJobName: Swift.String? = nil, + originEndpointName: Swift.String? = nil + ) + { + self.channelGroupName = channelGroupName + self.channelName = channelName + self.harvestJobName = harvestJobName + self.originEndpointName = originEndpointName + } +} + +/// The response object containing the details of the requested harvest job. +public struct GetHarvestJobOutput: Swift.Sendable { + /// The Amazon Resource Name (ARN) of the harvest job. + /// This member is required. + public var arn: Swift.String? + /// The name of the channel group containing the channel associated with the harvest job. + /// This member is required. + public var channelGroupName: Swift.String? + /// The name of the channel associated with the harvest job. + /// This member is required. + public var channelName: Swift.String? + /// The date and time when the harvest job was created. + /// This member is required. + public var createdAt: Foundation.Date? + /// The description of the harvest job, if provided. + public var description: Swift.String? + /// The S3 destination where the harvested content is being placed. + /// This member is required. + public var destination: MediaPackageV2ClientTypes.Destination? + /// The current version of the harvest job. Used for concurrency control. + public var eTag: Swift.String? + /// An error message if the harvest job encountered any issues. + public var errorMessage: Swift.String? + /// The name of the harvest job. + /// This member is required. + public var harvestJobName: Swift.String? + /// A list of manifests that are being or have been harvested. + /// This member is required. + public var harvestedManifests: MediaPackageV2ClientTypes.HarvestedManifests? + /// The date and time when the harvest job was last modified. + /// This member is required. + public var modifiedAt: Foundation.Date? + /// The name of the origin endpoint associated with the harvest job. + /// This member is required. + public var originEndpointName: Swift.String? + /// The configuration for when the harvest job is scheduled to run, including start and end times. + /// This member is required. + public var scheduleConfiguration: MediaPackageV2ClientTypes.HarvesterScheduleConfiguration? + /// The current status of the harvest job (e.g., QUEUED, IN_PROGRESS, CANCELLED, COMPLETED, FAILED). + /// This member is required. + public var status: MediaPackageV2ClientTypes.HarvestJobStatus? + /// A collection of tags associated with the harvest job. + public var tags: [Swift.String: Swift.String]? + + public init( + arn: Swift.String? = nil, + channelGroupName: Swift.String? = nil, + channelName: Swift.String? = nil, + createdAt: Foundation.Date? = nil, + description: Swift.String? = nil, + destination: MediaPackageV2ClientTypes.Destination? = nil, + eTag: Swift.String? = nil, + errorMessage: Swift.String? = nil, + harvestJobName: Swift.String? = nil, + harvestedManifests: MediaPackageV2ClientTypes.HarvestedManifests? = nil, + modifiedAt: Foundation.Date? = nil, + originEndpointName: Swift.String? = nil, + scheduleConfiguration: MediaPackageV2ClientTypes.HarvesterScheduleConfiguration? = nil, + status: MediaPackageV2ClientTypes.HarvestJobStatus? = nil, + tags: [Swift.String: Swift.String]? = nil + ) + { + self.arn = arn + self.channelGroupName = channelGroupName + self.channelName = channelName + self.createdAt = createdAt + self.description = description + self.destination = destination + self.eTag = eTag + self.errorMessage = errorMessage + self.harvestJobName = harvestJobName + self.harvestedManifests = harvestedManifests + self.modifiedAt = modifiedAt + self.originEndpointName = originEndpointName + self.scheduleConfiguration = scheduleConfiguration + self.status = status + self.tags = tags + } +} + +/// The request object for listing harvest jobs. +public struct ListHarvestJobsInput: Swift.Sendable { + /// The name of the channel group to filter the harvest jobs by. If specified, only harvest jobs associated with channels in this group will be returned. + /// This member is required. + public var channelGroupName: Swift.String? + /// The name of the channel to filter the harvest jobs by. If specified, only harvest jobs associated with this channel will be returned. + public var channelName: Swift.String? + /// The maximum number of harvest jobs to return in a single request. If not specified, a default value will be used. + public var maxResults: Swift.Int? + /// A token used for pagination. Provide this value in subsequent requests to retrieve the next set of results. + public var nextToken: Swift.String? + /// The name of the origin endpoint to filter the harvest jobs by. If specified, only harvest jobs associated with this origin endpoint will be returned. + public var originEndpointName: Swift.String? + /// The status to filter the harvest jobs by. If specified, only harvest jobs with this status will be returned. + public var status: MediaPackageV2ClientTypes.HarvestJobStatus? + + public init( + channelGroupName: Swift.String? = nil, + channelName: Swift.String? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil, + originEndpointName: Swift.String? = nil, + status: MediaPackageV2ClientTypes.HarvestJobStatus? = nil + ) + { + self.channelGroupName = channelGroupName + self.channelName = channelName + self.maxResults = maxResults + self.nextToken = nextToken + self.originEndpointName = originEndpointName + self.status = status + } +} + +extension MediaPackageV2ClientTypes { + + /// Represents a harvest job resource in MediaPackage v2, which is used to export content from an origin endpoint to an S3 bucket. + public struct HarvestJob: Swift.Sendable { + /// The Amazon Resource Name (ARN) of the harvest job. + /// This member is required. + public var arn: Swift.String? + /// The name of the channel group containing the channel associated with this harvest job. + /// This member is required. + public var channelGroupName: Swift.String? + /// The name of the channel associated with this harvest job. + /// This member is required. + public var channelName: Swift.String? + /// The date and time when the harvest job was created. + /// This member is required. + public var createdAt: Foundation.Date? + /// An optional description of the harvest job. + public var description: Swift.String? + /// The S3 destination where the harvested content will be placed. + /// This member is required. + public var destination: MediaPackageV2ClientTypes.Destination? + /// The current version of the harvest job. Used for concurrency control. + public var eTag: Swift.String? + /// An error message if the harvest job encountered any issues. + public var errorMessage: Swift.String? + /// The name of the harvest job. + /// This member is required. + public var harvestJobName: Swift.String? + /// A list of manifests that are being or have been harvested. + /// This member is required. + public var harvestedManifests: MediaPackageV2ClientTypes.HarvestedManifests? + /// The date and time when the harvest job was last modified. + /// This member is required. + public var modifiedAt: Foundation.Date? + /// The name of the origin endpoint associated with this harvest job. + /// This member is required. + public var originEndpointName: Swift.String? + /// The configuration for when the harvest job is scheduled to run. + /// This member is required. + public var scheduleConfiguration: MediaPackageV2ClientTypes.HarvesterScheduleConfiguration? + /// The current status of the harvest job (e.g., QUEUED, IN_PROGRESS, CANCELLED, COMPLETED, FAILED). + /// This member is required. + public var status: MediaPackageV2ClientTypes.HarvestJobStatus? + + public init( + arn: Swift.String? = nil, + channelGroupName: Swift.String? = nil, + channelName: Swift.String? = nil, + createdAt: Foundation.Date? = nil, + description: Swift.String? = nil, + destination: MediaPackageV2ClientTypes.Destination? = nil, + eTag: Swift.String? = nil, + errorMessage: Swift.String? = nil, + harvestJobName: Swift.String? = nil, + harvestedManifests: MediaPackageV2ClientTypes.HarvestedManifests? = nil, + modifiedAt: Foundation.Date? = nil, + originEndpointName: Swift.String? = nil, + scheduleConfiguration: MediaPackageV2ClientTypes.HarvesterScheduleConfiguration? = nil, + status: MediaPackageV2ClientTypes.HarvestJobStatus? = nil + ) + { + self.arn = arn + self.channelGroupName = channelGroupName + self.channelName = channelName + self.createdAt = createdAt + self.description = description + self.destination = destination + self.eTag = eTag + self.errorMessage = errorMessage + self.harvestJobName = harvestJobName + self.harvestedManifests = harvestedManifests + self.modifiedAt = modifiedAt + self.originEndpointName = originEndpointName + self.scheduleConfiguration = scheduleConfiguration + self.status = status + } + } +} + +/// The response object containing the list of harvest jobs that match the specified criteria. +public struct ListHarvestJobsOutput: Swift.Sendable { + /// An array of harvest job objects that match the specified criteria. + public var items: [MediaPackageV2ClientTypes.HarvestJob]? + /// A token used for pagination. Include this value in subsequent requests to retrieve the next set of results. If null, there are no more results to retrieve. + public var nextToken: Swift.String? + + public init( + items: [MediaPackageV2ClientTypes.HarvestJob]? = nil, + nextToken: Swift.String? = nil + ) + { + self.items = items + self.nextToken = nextToken + } +} + +public struct ListChannelGroupsInput: Swift.Sendable { + /// The maximum number of results to return in the response. + public var maxResults: Swift.Int? + /// The pagination token from the GET list request. Use the token to fetch the next page of results. + public var nextToken: Swift.String? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +public struct ListChannelGroupsOutput: Swift.Sendable { + /// The objects being returned. + public var items: [MediaPackageV2ClientTypes.ChannelGroupListConfiguration]? + /// The pagination token from the GET list request. Use the token to fetch the next page of results. + public var nextToken: Swift.String? + + public init( + items: [MediaPackageV2ClientTypes.ChannelGroupListConfiguration]? = nil, + nextToken: Swift.String? = nil + ) + { + self.items = items + self.nextToken = nextToken + } +} + +public struct UpdateChannelGroupInput: Swift.Sendable { + /// The name that describes the channel group. The name is the primary identifier for the channel group, and must be unique for your account in the AWS Region. + /// This member is required. + public var channelGroupName: Swift.String? + /// Any descriptive information that you want to add to the channel group for future identification purposes. + public var description: Swift.String? + /// The expected current Entity Tag (ETag) for the resource. If the specified ETag does not match the resource's current entity tag, the update request will be rejected. + public var eTag: Swift.String? + + public init( + channelGroupName: Swift.String? = nil, + description: Swift.String? = nil, + eTag: Swift.String? = nil + ) + { + self.channelGroupName = channelGroupName self.description = description self.eTag = eTag } @@ -3123,6 +3735,36 @@ public struct UntagResourceInput: Swift.Sendable { } } +extension CancelHarvestJobInput { + + static func urlPathProvider(_ value: CancelHarvestJobInput) -> Swift.String? { + guard let channelGroupName = value.channelGroupName else { + return nil + } + guard let channelName = value.channelName else { + return nil + } + guard let originEndpointName = value.originEndpointName else { + return nil + } + guard let harvestJobName = value.harvestJobName else { + return nil + } + return "/channelGroup/\(channelGroupName.urlPercentEncoding())/channel/\(channelName.urlPercentEncoding())/originEndpoint/\(originEndpointName.urlPercentEncoding())/harvestJob/\(harvestJobName.urlPercentEncoding())" + } +} + +extension CancelHarvestJobInput { + + static func headerProvider(_ value: CancelHarvestJobInput) -> SmithyHTTPAPI.Headers { + var items = SmithyHTTPAPI.Headers() + if let eTag = value.eTag { + items.add(SmithyHTTPAPI.Header(name: "x-amzn-update-if-match", value: Swift.String(eTag))) + } + return items + } +} + extension CreateChannelInput { static func urlPathProvider(_ value: CreateChannelInput) -> Swift.String? { @@ -3162,6 +3804,33 @@ extension CreateChannelGroupInput { } } +extension CreateHarvestJobInput { + + static func urlPathProvider(_ value: CreateHarvestJobInput) -> Swift.String? { + guard let channelGroupName = value.channelGroupName else { + return nil + } + guard let channelName = value.channelName else { + return nil + } + guard let originEndpointName = value.originEndpointName else { + return nil + } + return "/channelGroup/\(channelGroupName.urlPercentEncoding())/channel/\(channelName.urlPercentEncoding())/originEndpoint/\(originEndpointName.urlPercentEncoding())/harvestJob" + } +} + +extension CreateHarvestJobInput { + + static func headerProvider(_ value: CreateHarvestJobInput) -> SmithyHTTPAPI.Headers { + var items = SmithyHTTPAPI.Headers() + if let clientToken = value.clientToken { + items.add(SmithyHTTPAPI.Header(name: "x-amzn-client-token", value: Swift.String(clientToken))) + } + return items + } +} + extension CreateOriginEndpointInput { static func urlPathProvider(_ value: CreateOriginEndpointInput) -> Swift.String? { @@ -3290,6 +3959,25 @@ extension GetChannelPolicyInput { } } +extension GetHarvestJobInput { + + static func urlPathProvider(_ value: GetHarvestJobInput) -> Swift.String? { + guard let channelGroupName = value.channelGroupName else { + return nil + } + guard let channelName = value.channelName else { + return nil + } + guard let originEndpointName = value.originEndpointName else { + return nil + } + guard let harvestJobName = value.harvestJobName else { + return nil + } + return "/channelGroup/\(channelGroupName.urlPercentEncoding())/channel/\(channelName.urlPercentEncoding())/originEndpoint/\(originEndpointName.urlPercentEncoding())/harvestJob/\(harvestJobName.urlPercentEncoding())" + } +} + extension GetOriginEndpointInput { static func urlPathProvider(_ value: GetOriginEndpointInput) -> Swift.String? { @@ -3322,16 +4010,42 @@ extension GetOriginEndpointPolicyInput { } } -extension ListChannelGroupsInput { +extension ListChannelGroupsInput { + + static func urlPathProvider(_ value: ListChannelGroupsInput) -> Swift.String? { + return "/channelGroup" + } +} + +extension ListChannelGroupsInput { + + static func queryItemProvider(_ value: ListChannelGroupsInput) throws -> [Smithy.URIQueryItem] { + var items = [Smithy.URIQueryItem]() + if let nextToken = value.nextToken { + let nextTokenQueryItem = Smithy.URIQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } + if let maxResults = value.maxResults { + let maxResultsQueryItem = Smithy.URIQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) + items.append(maxResultsQueryItem) + } + return items + } +} + +extension ListChannelsInput { - static func urlPathProvider(_ value: ListChannelGroupsInput) -> Swift.String? { - return "/channelGroup" + static func urlPathProvider(_ value: ListChannelsInput) -> Swift.String? { + guard let channelGroupName = value.channelGroupName else { + return nil + } + return "/channelGroup/\(channelGroupName.urlPercentEncoding())/channel" } } -extension ListChannelGroupsInput { +extension ListChannelsInput { - static func queryItemProvider(_ value: ListChannelGroupsInput) throws -> [Smithy.URIQueryItem] { + static func queryItemProvider(_ value: ListChannelsInput) throws -> [Smithy.URIQueryItem] { var items = [Smithy.URIQueryItem]() if let nextToken = value.nextToken { let nextTokenQueryItem = Smithy.URIQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) @@ -3345,20 +4059,28 @@ extension ListChannelGroupsInput { } } -extension ListChannelsInput { +extension ListHarvestJobsInput { - static func urlPathProvider(_ value: ListChannelsInput) -> Swift.String? { + static func urlPathProvider(_ value: ListHarvestJobsInput) -> Swift.String? { guard let channelGroupName = value.channelGroupName else { return nil } - return "/channelGroup/\(channelGroupName.urlPercentEncoding())/channel" + return "/channelGroup/\(channelGroupName.urlPercentEncoding())/harvestJob" } } -extension ListChannelsInput { +extension ListHarvestJobsInput { - static func queryItemProvider(_ value: ListChannelsInput) throws -> [Smithy.URIQueryItem] { + static func queryItemProvider(_ value: ListHarvestJobsInput) throws -> [Smithy.URIQueryItem] { var items = [Smithy.URIQueryItem]() + if let status = value.status { + let statusQueryItem = Smithy.URIQueryItem(name: "includeStatus".urlPercentEncoding(), value: Swift.String(status.rawValue).urlPercentEncoding()) + items.append(statusQueryItem) + } + if let channelName = value.channelName { + let channelNameQueryItem = Smithy.URIQueryItem(name: "channelName".urlPercentEncoding(), value: Swift.String(channelName).urlPercentEncoding()) + items.append(channelNameQueryItem) + } if let nextToken = value.nextToken { let nextTokenQueryItem = Smithy.URIQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) items.append(nextTokenQueryItem) @@ -3367,6 +4089,10 @@ extension ListChannelsInput { let maxResultsQueryItem = Smithy.URIQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) items.append(maxResultsQueryItem) } + if let originEndpointName = value.originEndpointName { + let originEndpointNameQueryItem = Smithy.URIQueryItem(name: "originEndpointName".urlPercentEncoding(), value: Swift.String(originEndpointName).urlPercentEncoding()) + items.append(originEndpointNameQueryItem) + } return items } } @@ -3568,6 +4294,19 @@ extension CreateChannelGroupInput { } } +extension CreateHarvestJobInput { + + static func write(value: CreateHarvestJobInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["Description"].write(value.description) + try writer["Destination"].write(value.destination, with: MediaPackageV2ClientTypes.Destination.write(value:to:)) + try writer["HarvestJobName"].write(value.harvestJobName) + try writer["HarvestedManifests"].write(value.harvestedManifests, with: MediaPackageV2ClientTypes.HarvestedManifests.write(value:to:)) + try writer["ScheduleConfiguration"].write(value.scheduleConfiguration, with: MediaPackageV2ClientTypes.HarvesterScheduleConfiguration.write(value:to:)) + try writer["Tags"].writeMap(value.tags, valueWritingClosure: SmithyReadWrite.WritingClosures.writeString(value:to:), keyNodeInfo: "key", valueNodeInfo: "value", isFlattened: false) + } +} + extension CreateOriginEndpointInput { static func write(value: CreateOriginEndpointInput?, to writer: SmithyJSON.Writer) throws { @@ -3640,6 +4379,13 @@ extension UpdateOriginEndpointInput { } } +extension CancelHarvestJobOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> CancelHarvestJobOutput { + return CancelHarvestJobOutput() + } +} + extension CreateChannelOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> CreateChannelOutput { @@ -3680,6 +4426,32 @@ extension CreateChannelGroupOutput { } } +extension CreateHarvestJobOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> CreateHarvestJobOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = CreateHarvestJobOutput() + value.arn = try reader["Arn"].readIfPresent() ?? "" + value.channelGroupName = try reader["ChannelGroupName"].readIfPresent() ?? "" + value.channelName = try reader["ChannelName"].readIfPresent() ?? "" + value.createdAt = try reader["CreatedAt"].readTimestampIfPresent(format: SmithyTimestamps.TimestampFormat.epochSeconds) ?? SmithyTimestamps.TimestampFormatter(format: .dateTime).date(from: "1970-01-01T00:00:00Z") + value.description = try reader["Description"].readIfPresent() + value.destination = try reader["Destination"].readIfPresent(with: MediaPackageV2ClientTypes.Destination.read(from:)) + value.eTag = try reader["ETag"].readIfPresent() + value.errorMessage = try reader["ErrorMessage"].readIfPresent() + value.harvestJobName = try reader["HarvestJobName"].readIfPresent() ?? "" + value.harvestedManifests = try reader["HarvestedManifests"].readIfPresent(with: MediaPackageV2ClientTypes.HarvestedManifests.read(from:)) + value.modifiedAt = try reader["ModifiedAt"].readTimestampIfPresent(format: SmithyTimestamps.TimestampFormat.epochSeconds) ?? SmithyTimestamps.TimestampFormatter(format: .dateTime).date(from: "1970-01-01T00:00:00Z") + value.originEndpointName = try reader["OriginEndpointName"].readIfPresent() ?? "" + value.scheduleConfiguration = try reader["ScheduleConfiguration"].readIfPresent(with: MediaPackageV2ClientTypes.HarvesterScheduleConfiguration.read(from:)) + value.status = try reader["Status"].readIfPresent() ?? .sdkUnknown("") + value.tags = try reader["Tags"].readMapIfPresent(valueReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), keyNodeInfo: "key", valueNodeInfo: "value", isFlattened: false) + return value + } +} + extension CreateOriginEndpointOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> CreateOriginEndpointOutput { @@ -3796,6 +4568,32 @@ extension GetChannelPolicyOutput { } } +extension GetHarvestJobOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> GetHarvestJobOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = GetHarvestJobOutput() + value.arn = try reader["Arn"].readIfPresent() ?? "" + value.channelGroupName = try reader["ChannelGroupName"].readIfPresent() ?? "" + value.channelName = try reader["ChannelName"].readIfPresent() ?? "" + value.createdAt = try reader["CreatedAt"].readTimestampIfPresent(format: SmithyTimestamps.TimestampFormat.epochSeconds) ?? SmithyTimestamps.TimestampFormatter(format: .dateTime).date(from: "1970-01-01T00:00:00Z") + value.description = try reader["Description"].readIfPresent() + value.destination = try reader["Destination"].readIfPresent(with: MediaPackageV2ClientTypes.Destination.read(from:)) + value.eTag = try reader["ETag"].readIfPresent() + value.errorMessage = try reader["ErrorMessage"].readIfPresent() + value.harvestJobName = try reader["HarvestJobName"].readIfPresent() ?? "" + value.harvestedManifests = try reader["HarvestedManifests"].readIfPresent(with: MediaPackageV2ClientTypes.HarvestedManifests.read(from:)) + value.modifiedAt = try reader["ModifiedAt"].readTimestampIfPresent(format: SmithyTimestamps.TimestampFormat.epochSeconds) ?? SmithyTimestamps.TimestampFormatter(format: .dateTime).date(from: "1970-01-01T00:00:00Z") + value.originEndpointName = try reader["OriginEndpointName"].readIfPresent() ?? "" + value.scheduleConfiguration = try reader["ScheduleConfiguration"].readIfPresent(with: MediaPackageV2ClientTypes.HarvesterScheduleConfiguration.read(from:)) + value.status = try reader["Status"].readIfPresent() ?? .sdkUnknown("") + value.tags = try reader["Tags"].readMapIfPresent(valueReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), keyNodeInfo: "key", valueNodeInfo: "value", isFlattened: false) + return value + } +} + extension GetOriginEndpointOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> GetOriginEndpointOutput { @@ -3864,6 +4662,19 @@ extension ListChannelsOutput { } } +extension ListHarvestJobsOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> ListHarvestJobsOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = ListHarvestJobsOutput() + value.items = try reader["Items"].readListIfPresent(memberReadingClosure: MediaPackageV2ClientTypes.HarvestJob.read(from:), memberNodeInfo: "member", isFlattened: false) + value.nextToken = try reader["NextToken"].readIfPresent() + return value + } +} + extension ListOriginEndpointsOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> ListOriginEndpointsOutput { @@ -3984,6 +4795,25 @@ extension UpdateOriginEndpointOutput { } } +enum CancelHarvestJobOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.RestJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "AccessDeniedException": return try AccessDeniedException.makeError(baseError: baseError) + case "ConflictException": return try ConflictException.makeError(baseError: baseError) + case "InternalServerException": return try InternalServerException.makeError(baseError: baseError) + case "ResourceNotFoundException": return try ResourceNotFoundException.makeError(baseError: baseError) + case "ThrottlingException": return try ThrottlingException.makeError(baseError: baseError) + case "ValidationException": return try ValidationException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum CreateChannelOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -4024,6 +4854,26 @@ enum CreateChannelGroupOutputError { } } +enum CreateHarvestJobOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.RestJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "AccessDeniedException": return try AccessDeniedException.makeError(baseError: baseError) + case "ConflictException": return try ConflictException.makeError(baseError: baseError) + case "InternalServerException": return try InternalServerException.makeError(baseError: baseError) + case "ResourceNotFoundException": return try ResourceNotFoundException.makeError(baseError: baseError) + case "ServiceQuotaExceededException": return try ServiceQuotaExceededException.makeError(baseError: baseError) + case "ThrottlingException": return try ThrottlingException.makeError(baseError: baseError) + case "ValidationException": return try ValidationException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum CreateOriginEndpointOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -4187,6 +5037,24 @@ enum GetChannelPolicyOutputError { } } +enum GetHarvestJobOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.RestJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "AccessDeniedException": return try AccessDeniedException.makeError(baseError: baseError) + case "InternalServerException": return try InternalServerException.makeError(baseError: baseError) + case "ResourceNotFoundException": return try ResourceNotFoundException.makeError(baseError: baseError) + case "ThrottlingException": return try ThrottlingException.makeError(baseError: baseError) + case "ValidationException": return try ValidationException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum GetOriginEndpointOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -4258,6 +5126,24 @@ enum ListChannelsOutputError { } } +enum ListHarvestJobsOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.RestJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "AccessDeniedException": return try AccessDeniedException.makeError(baseError: baseError) + case "InternalServerException": return try InternalServerException.makeError(baseError: baseError) + case "ResourceNotFoundException": return try ResourceNotFoundException.makeError(baseError: baseError) + case "ThrottlingException": return try ThrottlingException.makeError(baseError: baseError) + case "ValidationException": return try ValidationException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum ListOriginEndpointsOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -4455,19 +5341,6 @@ extension ValidationException { } } -extension ServiceQuotaExceededException { - - static func makeError(baseError: AWSClientRuntime.RestJSONError) throws -> ServiceQuotaExceededException { - let reader = baseError.errorBodyReader - var value = ServiceQuotaExceededException() - value.properties.message = try reader["Message"].readIfPresent() - value.httpResponse = baseError.httpResponse - value.requestID = baseError.requestID - value.message = baseError.message - return value - } -} - extension InternalServerException { static func makeError(baseError: AWSClientRuntime.RestJSONError) throws -> InternalServerException { @@ -4508,6 +5381,19 @@ extension AccessDeniedException { } } +extension ServiceQuotaExceededException { + + static func makeError(baseError: AWSClientRuntime.RestJSONError) throws -> ServiceQuotaExceededException { + let reader = baseError.errorBodyReader + var value = ServiceQuotaExceededException() + value.properties.message = try reader["Message"].readIfPresent() + value.httpResponse = baseError.httpResponse + value.requestID = baseError.requestID + value.message = baseError.message + return value + } +} + extension MediaPackageV2ClientTypes.IngestEndpoint { static func read(from reader: SmithyJSON.Reader) throws -> MediaPackageV2ClientTypes.IngestEndpoint { @@ -4519,6 +5405,119 @@ extension MediaPackageV2ClientTypes.IngestEndpoint { } } +extension MediaPackageV2ClientTypes.Destination { + + static func write(value: MediaPackageV2ClientTypes.Destination?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["S3Destination"].write(value.s3Destination, with: MediaPackageV2ClientTypes.S3DestinationConfig.write(value:to:)) + } + + static func read(from reader: SmithyJSON.Reader) throws -> MediaPackageV2ClientTypes.Destination { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = MediaPackageV2ClientTypes.Destination() + value.s3Destination = try reader["S3Destination"].readIfPresent(with: MediaPackageV2ClientTypes.S3DestinationConfig.read(from:)) + return value + } +} + +extension MediaPackageV2ClientTypes.S3DestinationConfig { + + static func write(value: MediaPackageV2ClientTypes.S3DestinationConfig?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["BucketName"].write(value.bucketName) + try writer["DestinationPath"].write(value.destinationPath) + } + + static func read(from reader: SmithyJSON.Reader) throws -> MediaPackageV2ClientTypes.S3DestinationConfig { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = MediaPackageV2ClientTypes.S3DestinationConfig() + value.bucketName = try reader["BucketName"].readIfPresent() ?? "" + value.destinationPath = try reader["DestinationPath"].readIfPresent() ?? "" + return value + } +} + +extension MediaPackageV2ClientTypes.HarvestedManifests { + + static func write(value: MediaPackageV2ClientTypes.HarvestedManifests?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["DashManifests"].writeList(value.dashManifests, memberWritingClosure: MediaPackageV2ClientTypes.HarvestedDashManifest.write(value:to:), memberNodeInfo: "member", isFlattened: false) + try writer["HlsManifests"].writeList(value.hlsManifests, memberWritingClosure: MediaPackageV2ClientTypes.HarvestedHlsManifest.write(value:to:), memberNodeInfo: "member", isFlattened: false) + try writer["LowLatencyHlsManifests"].writeList(value.lowLatencyHlsManifests, memberWritingClosure: MediaPackageV2ClientTypes.HarvestedLowLatencyHlsManifest.write(value:to:), memberNodeInfo: "member", isFlattened: false) + } + + static func read(from reader: SmithyJSON.Reader) throws -> MediaPackageV2ClientTypes.HarvestedManifests { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = MediaPackageV2ClientTypes.HarvestedManifests() + value.hlsManifests = try reader["HlsManifests"].readListIfPresent(memberReadingClosure: MediaPackageV2ClientTypes.HarvestedHlsManifest.read(from:), memberNodeInfo: "member", isFlattened: false) + value.dashManifests = try reader["DashManifests"].readListIfPresent(memberReadingClosure: MediaPackageV2ClientTypes.HarvestedDashManifest.read(from:), memberNodeInfo: "member", isFlattened: false) + value.lowLatencyHlsManifests = try reader["LowLatencyHlsManifests"].readListIfPresent(memberReadingClosure: MediaPackageV2ClientTypes.HarvestedLowLatencyHlsManifest.read(from:), memberNodeInfo: "member", isFlattened: false) + return value + } +} + +extension MediaPackageV2ClientTypes.HarvestedLowLatencyHlsManifest { + + static func write(value: MediaPackageV2ClientTypes.HarvestedLowLatencyHlsManifest?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ManifestName"].write(value.manifestName) + } + + static func read(from reader: SmithyJSON.Reader) throws -> MediaPackageV2ClientTypes.HarvestedLowLatencyHlsManifest { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = MediaPackageV2ClientTypes.HarvestedLowLatencyHlsManifest() + value.manifestName = try reader["ManifestName"].readIfPresent() ?? "" + return value + } +} + +extension MediaPackageV2ClientTypes.HarvestedDashManifest { + + static func write(value: MediaPackageV2ClientTypes.HarvestedDashManifest?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ManifestName"].write(value.manifestName) + } + + static func read(from reader: SmithyJSON.Reader) throws -> MediaPackageV2ClientTypes.HarvestedDashManifest { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = MediaPackageV2ClientTypes.HarvestedDashManifest() + value.manifestName = try reader["ManifestName"].readIfPresent() ?? "" + return value + } +} + +extension MediaPackageV2ClientTypes.HarvestedHlsManifest { + + static func write(value: MediaPackageV2ClientTypes.HarvestedHlsManifest?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ManifestName"].write(value.manifestName) + } + + static func read(from reader: SmithyJSON.Reader) throws -> MediaPackageV2ClientTypes.HarvestedHlsManifest { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = MediaPackageV2ClientTypes.HarvestedHlsManifest() + value.manifestName = try reader["ManifestName"].readIfPresent() ?? "" + return value + } +} + +extension MediaPackageV2ClientTypes.HarvesterScheduleConfiguration { + + static func write(value: MediaPackageV2ClientTypes.HarvesterScheduleConfiguration?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["EndTime"].writeTimestamp(value.endTime, format: SmithyTimestamps.TimestampFormat.epochSeconds) + try writer["StartTime"].writeTimestamp(value.startTime, format: SmithyTimestamps.TimestampFormat.epochSeconds) + } + + static func read(from reader: SmithyJSON.Reader) throws -> MediaPackageV2ClientTypes.HarvesterScheduleConfiguration { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = MediaPackageV2ClientTypes.HarvesterScheduleConfiguration() + value.startTime = try reader["StartTime"].readTimestampIfPresent(format: SmithyTimestamps.TimestampFormat.epochSeconds) ?? SmithyTimestamps.TimestampFormatter(format: .dateTime).date(from: "1970-01-01T00:00:00Z") + value.endTime = try reader["EndTime"].readTimestampIfPresent(format: SmithyTimestamps.TimestampFormat.epochSeconds) ?? SmithyTimestamps.TimestampFormatter(format: .dateTime).date(from: "1970-01-01T00:00:00Z") + return value + } +} + extension MediaPackageV2ClientTypes.Segment { static func write(value: MediaPackageV2ClientTypes.Segment?, to writer: SmithyJSON.Writer) throws { @@ -4826,6 +5825,29 @@ extension MediaPackageV2ClientTypes.ChannelListConfiguration { } } +extension MediaPackageV2ClientTypes.HarvestJob { + + static func read(from reader: SmithyJSON.Reader) throws -> MediaPackageV2ClientTypes.HarvestJob { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = MediaPackageV2ClientTypes.HarvestJob() + value.channelGroupName = try reader["ChannelGroupName"].readIfPresent() ?? "" + value.channelName = try reader["ChannelName"].readIfPresent() ?? "" + value.originEndpointName = try reader["OriginEndpointName"].readIfPresent() ?? "" + value.destination = try reader["Destination"].readIfPresent(with: MediaPackageV2ClientTypes.Destination.read(from:)) + value.harvestJobName = try reader["HarvestJobName"].readIfPresent() ?? "" + value.harvestedManifests = try reader["HarvestedManifests"].readIfPresent(with: MediaPackageV2ClientTypes.HarvestedManifests.read(from:)) + value.description = try reader["Description"].readIfPresent() + value.scheduleConfiguration = try reader["ScheduleConfiguration"].readIfPresent(with: MediaPackageV2ClientTypes.HarvesterScheduleConfiguration.read(from:)) + value.arn = try reader["Arn"].readIfPresent() ?? "" + value.createdAt = try reader["CreatedAt"].readTimestampIfPresent(format: SmithyTimestamps.TimestampFormat.epochSeconds) ?? SmithyTimestamps.TimestampFormatter(format: .dateTime).date(from: "1970-01-01T00:00:00Z") + value.modifiedAt = try reader["ModifiedAt"].readTimestampIfPresent(format: SmithyTimestamps.TimestampFormat.epochSeconds) ?? SmithyTimestamps.TimestampFormatter(format: .dateTime).date(from: "1970-01-01T00:00:00Z") + value.status = try reader["Status"].readIfPresent() ?? .sdkUnknown("") + value.errorMessage = try reader["ErrorMessage"].readIfPresent() + value.eTag = try reader["ETag"].readIfPresent() + return value + } +} + extension MediaPackageV2ClientTypes.OriginEndpointListConfiguration { static func read(from reader: SmithyJSON.Reader) throws -> MediaPackageV2ClientTypes.OriginEndpointListConfiguration { diff --git a/Sources/Services/AWSMediaPackageV2/Sources/AWSMediaPackageV2/Waiters.swift b/Sources/Services/AWSMediaPackageV2/Sources/AWSMediaPackageV2/Waiters.swift new file mode 100644 index 00000000000..c4725bdca7a --- /dev/null +++ b/Sources/Services/AWSMediaPackageV2/Sources/AWSMediaPackageV2/Waiters.swift @@ -0,0 +1,13 @@ +// +// Copyright Amazon.com Inc. or its affiliates. +// All Rights Reserved. +// +// SPDX-License-Identifier: Apache-2.0 +// + +// Code generated by smithy-swift-codegen. DO NOT EDIT! + + + +extension MediaPackageV2Client { +} diff --git a/Sources/Services/AWSOpenSearch/Sources/AWSOpenSearch/Models.swift b/Sources/Services/AWSOpenSearch/Sources/AWSOpenSearch/Models.swift index 4f052943e29..41c372fc2bb 100644 --- a/Sources/Services/AWSOpenSearch/Sources/AWSOpenSearch/Models.swift +++ b/Sources/Services/AWSOpenSearch/Sources/AWSOpenSearch/Models.swift @@ -2223,6 +2223,76 @@ extension OpenSearchClientTypes { } } +extension OpenSearchClientTypes { + + /// Container for specifying configuration of any node type. + public struct NodeConfig: Swift.Sendable { + /// The number of nodes of a particular node type in the cluster. + public var count: Swift.Int? + /// A boolean that indicates whether a particular node type is enabled or not. + public var enabled: Swift.Bool? + /// The instance type of a particular node type in the cluster. + public var type: OpenSearchClientTypes.OpenSearchPartitionInstanceType? + + public init( + count: Swift.Int? = nil, + enabled: Swift.Bool? = nil, + type: OpenSearchClientTypes.OpenSearchPartitionInstanceType? = nil + ) + { + self.count = count + self.enabled = enabled + self.type = type + } + } +} + +extension OpenSearchClientTypes { + + public enum NodeOptionsNodeType: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case coordinator + case sdkUnknown(Swift.String) + + public static var allCases: [NodeOptionsNodeType] { + return [ + .coordinator + ] + } + + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + + public var rawValue: Swift.String { + switch self { + case .coordinator: return "coordinator" + case let .sdkUnknown(s): return s + } + } + } +} + +extension OpenSearchClientTypes { + + /// Container for specifying node type. + public struct NodeOption: Swift.Sendable { + /// Container for specifying configuration of any node type. + public var nodeConfig: OpenSearchClientTypes.NodeConfig? + /// Container for node type like coordinating. + public var nodeType: OpenSearchClientTypes.NodeOptionsNodeType? + + public init( + nodeConfig: OpenSearchClientTypes.NodeConfig? = nil, + nodeType: OpenSearchClientTypes.NodeOptionsNodeType? = nil + ) + { + self.nodeConfig = nodeConfig + self.nodeType = nodeType + } + } +} + extension OpenSearchClientTypes { public enum OpenSearchWarmPartitionInstanceType: Swift.Sendable, Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { @@ -2289,6 +2359,8 @@ extension OpenSearchClientTypes { public var instanceType: OpenSearchClientTypes.OpenSearchPartitionInstanceType? /// A boolean that indicates whether a multi-AZ domain is turned on with a standby AZ. For more information, see [Configuring a multi-AZ domain in Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/managedomains-multiaz.html). public var multiAZWithStandbyEnabled: Swift.Bool? + /// List of node options for the domain. + public var nodeOptions: [OpenSearchClientTypes.NodeOption]? /// The number of warm nodes in the cluster. public var warmCount: Swift.Int? /// Whether to enable warm storage for the cluster. @@ -2308,6 +2380,7 @@ extension OpenSearchClientTypes { instanceCount: Swift.Int? = nil, instanceType: OpenSearchClientTypes.OpenSearchPartitionInstanceType? = nil, multiAZWithStandbyEnabled: Swift.Bool? = nil, + nodeOptions: [OpenSearchClientTypes.NodeOption]? = nil, warmCount: Swift.Int? = nil, warmEnabled: Swift.Bool? = nil, warmType: OpenSearchClientTypes.OpenSearchWarmPartitionInstanceType? = nil, @@ -2322,6 +2395,7 @@ extension OpenSearchClientTypes { self.instanceCount = instanceCount self.instanceType = instanceType self.multiAZWithStandbyEnabled = multiAZWithStandbyEnabled + self.nodeOptions = nodeOptions self.warmCount = warmCount self.warmEnabled = warmEnabled self.warmType = warmType @@ -11872,6 +11946,7 @@ extension OpenSearchClientTypes.ClusterConfig { try writer["InstanceCount"].write(value.instanceCount) try writer["InstanceType"].write(value.instanceType) try writer["MultiAZWithStandbyEnabled"].write(value.multiAZWithStandbyEnabled) + try writer["NodeOptions"].writeList(value.nodeOptions, memberWritingClosure: OpenSearchClientTypes.NodeOption.write(value:to:), memberNodeInfo: "member", isFlattened: false) try writer["WarmCount"].write(value.warmCount) try writer["WarmEnabled"].write(value.warmEnabled) try writer["WarmType"].write(value.warmType) @@ -11894,6 +11969,43 @@ extension OpenSearchClientTypes.ClusterConfig { value.warmCount = try reader["WarmCount"].readIfPresent() value.coldStorageOptions = try reader["ColdStorageOptions"].readIfPresent(with: OpenSearchClientTypes.ColdStorageOptions.read(from:)) value.multiAZWithStandbyEnabled = try reader["MultiAZWithStandbyEnabled"].readIfPresent() + value.nodeOptions = try reader["NodeOptions"].readListIfPresent(memberReadingClosure: OpenSearchClientTypes.NodeOption.read(from:), memberNodeInfo: "member", isFlattened: false) + return value + } +} + +extension OpenSearchClientTypes.NodeOption { + + static func write(value: OpenSearchClientTypes.NodeOption?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["NodeConfig"].write(value.nodeConfig, with: OpenSearchClientTypes.NodeConfig.write(value:to:)) + try writer["NodeType"].write(value.nodeType) + } + + static func read(from reader: SmithyJSON.Reader) throws -> OpenSearchClientTypes.NodeOption { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = OpenSearchClientTypes.NodeOption() + value.nodeType = try reader["NodeType"].readIfPresent() + value.nodeConfig = try reader["NodeConfig"].readIfPresent(with: OpenSearchClientTypes.NodeConfig.read(from:)) + return value + } +} + +extension OpenSearchClientTypes.NodeConfig { + + static func write(value: OpenSearchClientTypes.NodeConfig?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["Count"].write(value.count) + try writer["Enabled"].write(value.enabled) + try writer["Type"].write(value.type) + } + + static func read(from reader: SmithyJSON.Reader) throws -> OpenSearchClientTypes.NodeConfig { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = OpenSearchClientTypes.NodeConfig() + value.enabled = try reader["Enabled"].readIfPresent() + value.type = try reader["Type"].readIfPresent() + value.count = try reader["Count"].readIfPresent() return value } } diff --git a/Sources/Services/AWSRDS/Sources/AWSRDS/Models.swift b/Sources/Services/AWSRDS/Sources/AWSRDS/Models.swift index 5c295adb54d..d3bd24e0b99 100644 --- a/Sources/Services/AWSRDS/Sources/AWSRDS/Models.swift +++ b/Sources/Services/AWSRDS/Sources/AWSRDS/Models.swift @@ -858,7 +858,20 @@ public struct ResourceNotFoundFault: ClientRuntime.ModeledError, AWSClientRuntim /// public struct ApplyPendingMaintenanceActionInput: Swift.Sendable { - /// The pending maintenance action to apply to this resource. Valid Values: system-update, db-upgrade, hardware-maintenance, ca-certificate-rotation + /// The pending maintenance action to apply to this resource. Valid Values: + /// + /// * ca-certificate-rotation + /// + /// * db-upgrade + /// + /// * hardware-maintenance + /// + /// * os-upgrade + /// + /// * system-update + /// + /// + /// For more information about these actions, see [Maintenance actions for Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#maintenance-actions-aurora) or [Maintenance actions for Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#maintenance-actions-rds). /// This member is required. public var applyAction: Swift.String? /// A value that specifies the type of opt-in request, or undoes an opt-in request. An opt-in request of type immediate can't be undone. Valid Values: @@ -890,7 +903,20 @@ extension RDSClientTypes { /// Provides information about a pending maintenance action for a resource. public struct PendingMaintenanceAction: Swift.Sendable { - /// The type of pending maintenance action that is available for the resource. For more information about maintenance actions, see [Maintaining a DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html). Valid Values: system-update | db-upgrade | hardware-maintenance | ca-certificate-rotation + /// The type of pending maintenance action that is available for the resource. For more information about maintenance actions, see [Maintaining a DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html). Valid Values: + /// + /// * ca-certificate-rotation + /// + /// * db-upgrade + /// + /// * hardware-maintenance + /// + /// * os-upgrade + /// + /// * system-update + /// + /// + /// For more information about these actions, see [Maintenance actions for Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_UpgradeDBInstance.Maintenance.html#maintenance-actions-aurora) or [Maintenance actions for Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#maintenance-actions-rds). public var action: Swift.String? /// The date of the maintenance window when the action is applied. The maintenance action is applied to the resource during its first maintenance window after this date. public var autoAppliedAfterDate: Foundation.Date? @@ -3982,7 +4008,7 @@ public struct CreateDBClusterInput: Swift.Sendable { public var enableHttpEndpoint: Swift.Bool? /// Specifies whether to enable mapping of Amazon Web Services Identity and Access Management (IAM) accounts to database accounts. By default, mapping isn't enabled. For more information, see [ IAM Database Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html) in the Amazon Aurora User Guide or [IAM database authentication for MariaDB, MySQL, and PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html) in the Amazon RDS User Guide. Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters public var enableIAMDatabaseAuthentication: Swift.Bool? - /// Specifies whether to enable Aurora Limitless Database. You must enable Aurora Limitless Database to create a DB shard group. Valid for: Aurora DB clusters only + /// Specifies whether to enable Aurora Limitless Database. You must enable Aurora Limitless Database to create a DB shard group. Valid for: Aurora DB clusters only This setting is no longer used. Instead use the ClusterScalabilityType setting. public var enableLimitlessDatabase: Swift.Bool? /// Specifies whether read replicas can forward write operations to the writer DB instance in the DB cluster. By default, write operations aren't allowed on reader DB instances. Valid for: Aurora DB clusters only public var enableLocalWriteForwarding: Swift.Bool? @@ -16981,7 +17007,7 @@ public struct ModifyDBClusterInput: Swift.Sendable { public var enableHttpEndpoint: Swift.Bool? /// Specifies whether to enable mapping of Amazon Web Services Identity and Access Management (IAM) accounts to database accounts. By default, mapping isn't enabled. For more information, see [ IAM Database Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html) in the Amazon Aurora User Guide or [IAM database authentication for MariaDB, MySQL, and PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html) in the Amazon RDS User Guide. Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters public var enableIAMDatabaseAuthentication: Swift.Bool? - /// Specifies whether to enable Aurora Limitless Database. You must enable Aurora Limitless Database to create a DB shard group. Valid for: Aurora DB clusters only + /// Specifies whether to enable Aurora Limitless Database. You must enable Aurora Limitless Database to create a DB shard group. Valid for: Aurora DB clusters only This setting is no longer used. Instead use the ClusterScalabilityType setting when you create your Aurora Limitless Database DB cluster. public var enableLimitlessDatabase: Swift.Bool? /// Specifies whether read replicas can forward write operations to the writer DB instance in the DB cluster. By default, write operations aren't allowed on reader DB instances. Valid for: Aurora DB clusters only public var enableLocalWriteForwarding: Swift.Bool? @@ -19661,6 +19687,8 @@ public struct RestoreDBClusterFromSnapshotInput: Swift.Sendable { public var enableCloudwatchLogsExports: [Swift.String]? /// Specifies whether to enable mapping of Amazon Web Services Identity and Access Management (IAM) accounts to database accounts. By default, mapping isn't enabled. For more information, see [ IAM Database Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html) in the Amazon Aurora User Guide or [ IAM database authentication for MariaDB, MySQL, and PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html) in the Amazon RDS User Guide. Valid for: Aurora DB clusters and Multi-AZ DB clusters public var enableIAMDatabaseAuthentication: Swift.Bool? + /// Specifies whether to turn on Performance Insights for the DB cluster. + public var enablePerformanceInsights: Swift.Bool? /// The database engine to use for the new DB cluster. Default: The same as source Constraint: Must be compatible with the engine of the source Valid for: Aurora DB clusters and Multi-AZ DB clusters /// This member is required. public var engine: Swift.String? @@ -19688,6 +19716,10 @@ public struct RestoreDBClusterFromSnapshotInput: Swift.Sendable { /// /// Valid for: Aurora DB clusters and Multi-AZ DB clusters public var kmsKeyId: Swift.String? + /// The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB cluster. To turn off collecting Enhanced Monitoring metrics, specify 0. If MonitoringRoleArn is specified, also set MonitoringInterval to a value other than 0. Valid Values: 0 | 1 | 5 | 10 | 15 | 30 | 60 Default: 0 + public var monitoringInterval: Swift.Int? + /// The Amazon Resource Name (ARN) for the IAM role that permits RDS to send Enhanced Monitoring metrics to Amazon CloudWatch Logs. An example is arn:aws:iam:123456789012:role/emaccess. If MonitoringInterval is set to a value other than 0, supply a MonitoringRoleArn value. + public var monitoringRoleArn: Swift.String? /// The network type of the DB cluster. Valid Values: /// /// * IPV4 @@ -19699,6 +19731,19 @@ public struct RestoreDBClusterFromSnapshotInput: Swift.Sendable { public var networkType: Swift.String? /// The name of the option group to use for the restored DB cluster. DB clusters are associated with a default option group that can't be modified. public var optionGroupName: Swift.String? + /// The Amazon Web Services KMS key identifier for encryption of Performance Insights data. The Amazon Web Services KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key. If you don't specify a value for PerformanceInsightsKMSKeyId, then Amazon RDS uses your default KMS key. There is a default KMS key for your Amazon Web Services account. Your Amazon Web Services account has a different default KMS key for each Amazon Web Services Region. + public var performanceInsightsKMSKeyId: Swift.String? + /// The number of days to retain Performance Insights data. Valid Values: + /// + /// * 7 + /// + /// * month * 31, where month is a number of months from 1-23. Examples: 93 (3 months * 31), 341 (11 months * 31), 589 (19 months * 31) + /// + /// * 731 + /// + /// + /// Default: 7 days If you specify a retention period that isn't valid, such as 94, Amazon RDS issues an error. + public var performanceInsightsRetentionPeriod: Swift.Int? /// The port number on which the new DB cluster accepts connections. Constraints: This value must be 1150-65535 Default: The same port as the original DB cluster. Valid for: Aurora DB clusters and Multi-AZ DB clusters public var port: Swift.Int? /// Specifies whether the DB cluster is publicly accessible. When the DB cluster is publicly accessible, its Domain Name System (DNS) endpoint resolves to the private IP address from within the DB cluster's virtual private cloud (VPC). It resolves to the public IP address from outside of the DB cluster's VPC. Access to the DB cluster is ultimately controlled by the security group it uses. That public access is not permitted if the security group assigned to the DB cluster doesn't permit it. When the DB cluster isn't publicly accessible, it is an internal DB cluster with a DNS name that resolves to a private IP address. Default: The default behavior varies depending on whether DBSubnetGroupName is specified. If DBSubnetGroupName isn't specified, and PubliclyAccessible isn't specified, the following applies: @@ -19752,14 +19797,19 @@ public struct RestoreDBClusterFromSnapshotInput: Swift.Sendable { domainIAMRoleName: Swift.String? = nil, enableCloudwatchLogsExports: [Swift.String]? = nil, enableIAMDatabaseAuthentication: Swift.Bool? = nil, + enablePerformanceInsights: Swift.Bool? = nil, engine: Swift.String? = nil, engineLifecycleSupport: Swift.String? = nil, engineMode: Swift.String? = nil, engineVersion: Swift.String? = nil, iops: Swift.Int? = nil, kmsKeyId: Swift.String? = nil, + monitoringInterval: Swift.Int? = nil, + monitoringRoleArn: Swift.String? = nil, networkType: Swift.String? = nil, optionGroupName: Swift.String? = nil, + performanceInsightsKMSKeyId: Swift.String? = nil, + performanceInsightsRetentionPeriod: Swift.Int? = nil, port: Swift.Int? = nil, publiclyAccessible: Swift.Bool? = nil, rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? = nil, @@ -19784,14 +19834,19 @@ public struct RestoreDBClusterFromSnapshotInput: Swift.Sendable { self.domainIAMRoleName = domainIAMRoleName self.enableCloudwatchLogsExports = enableCloudwatchLogsExports self.enableIAMDatabaseAuthentication = enableIAMDatabaseAuthentication + self.enablePerformanceInsights = enablePerformanceInsights self.engine = engine self.engineLifecycleSupport = engineLifecycleSupport self.engineMode = engineMode self.engineVersion = engineVersion self.iops = iops self.kmsKeyId = kmsKeyId + self.monitoringInterval = monitoringInterval + self.monitoringRoleArn = monitoringRoleArn self.networkType = networkType self.optionGroupName = optionGroupName + self.performanceInsightsKMSKeyId = performanceInsightsKMSKeyId + self.performanceInsightsRetentionPeriod = performanceInsightsRetentionPeriod self.port = port self.publiclyAccessible = publiclyAccessible self.rdsCustomClusterConfiguration = rdsCustomClusterConfiguration @@ -19866,6 +19921,8 @@ public struct RestoreDBClusterToPointInTimeInput: Swift.Sendable { public var enableCloudwatchLogsExports: [Swift.String]? /// Specifies whether to enable mapping of Amazon Web Services Identity and Access Management (IAM) accounts to database accounts. By default, mapping isn't enabled. For more information, see [ IAM Database Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.html) in the Amazon Aurora User Guide or [ IAM database authentication for MariaDB, MySQL, and PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html) in the Amazon RDS User Guide. Valid for: Aurora DB clusters and Multi-AZ DB clusters public var enableIAMDatabaseAuthentication: Swift.Bool? + /// Specifies whether to turn on Performance Insights for the DB cluster. + public var enablePerformanceInsights: Swift.Bool? /// The life cycle type for this DB cluster. By default, this value is set to open-source-rds-extended-support, which enrolls your DB cluster into Amazon RDS Extended Support. At the end of standard support, you can avoid charges for Extended Support by setting the value to open-source-rds-extended-support-disabled. In this case, RDS automatically upgrades your restored DB cluster to a higher engine version, if the major engine version is past its end of standard support date. You can use this setting to enroll your DB cluster into Amazon RDS Extended Support. With RDS Extended Support, you can run the selected major engine version on your DB cluster past the end of standard support for that engine version. For more information, see the following sections: /// /// * Amazon Aurora (PostgreSQL only) - [Using Amazon RDS Extended Support](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/extended-support.html) in the Amazon Aurora User Guide @@ -19888,6 +19945,10 @@ public struct RestoreDBClusterToPointInTimeInput: Swift.Sendable { /// /// If DBClusterIdentifier refers to a DB cluster that isn't encrypted, then the restore request is rejected. Valid for: Aurora DB clusters and Multi-AZ DB clusters public var kmsKeyId: Swift.String? + /// The interval, in seconds, between points when Enhanced Monitoring metrics are collected for the DB cluster. To turn off collecting Enhanced Monitoring metrics, specify 0. If MonitoringRoleArn is specified, also set MonitoringInterval to a value other than 0. Valid Values: 0 | 1 | 5 | 10 | 15 | 30 | 60 Default: 0 + public var monitoringInterval: Swift.Int? + /// The Amazon Resource Name (ARN) for the IAM role that permits RDS to send Enhanced Monitoring metrics to Amazon CloudWatch Logs. An example is arn:aws:iam:123456789012:role/emaccess. If MonitoringInterval is set to a value other than 0, supply a MonitoringRoleArn value. + public var monitoringRoleArn: Swift.String? /// The network type of the DB cluster. Valid Values: /// /// * IPV4 @@ -19899,6 +19960,19 @@ public struct RestoreDBClusterToPointInTimeInput: Swift.Sendable { public var networkType: Swift.String? /// The name of the option group for the new DB cluster. DB clusters are associated with a default option group that can't be modified. public var optionGroupName: Swift.String? + /// The Amazon Web Services KMS key identifier for encryption of Performance Insights data. The Amazon Web Services KMS key identifier is the key ARN, key ID, alias ARN, or alias name for the KMS key. If you don't specify a value for PerformanceInsightsKMSKeyId, then Amazon RDS uses your default KMS key. There is a default KMS key for your Amazon Web Services account. Your Amazon Web Services account has a different default KMS key for each Amazon Web Services Region. + public var performanceInsightsKMSKeyId: Swift.String? + /// The number of days to retain Performance Insights data. Valid Values: + /// + /// * 7 + /// + /// * month * 31, where month is a number of months from 1-23. Examples: 93 (3 months * 31), 341 (11 months * 31), 589 (19 months * 31) + /// + /// * 731 + /// + /// + /// Default: 7 days If you specify a retention period that isn't valid, such as 94, Amazon RDS issues an error. + public var performanceInsightsRetentionPeriod: Swift.Int? /// The port number on which the new DB cluster accepts connections. Constraints: A value from 1150-65535. Default: The default port for the engine. Valid for: Aurora DB clusters and Multi-AZ DB clusters public var port: Swift.Int? /// Specifies whether the DB cluster is publicly accessible. When the DB cluster is publicly accessible, its Domain Name System (DNS) endpoint resolves to the private IP address from within the DB cluster's virtual private cloud (VPC). It resolves to the public IP address from outside of the DB cluster's VPC. Access to the DB cluster is ultimately controlled by the security group it uses. That public access is not permitted if the security group assigned to the DB cluster doesn't permit it. When the DB cluster isn't publicly accessible, it is an internal DB cluster with a DNS name that resolves to a private IP address. Default: The default behavior varies depending on whether DBSubnetGroupName is specified. If DBSubnetGroupName isn't specified, and PubliclyAccessible isn't specified, the following applies: @@ -19975,12 +20049,17 @@ public struct RestoreDBClusterToPointInTimeInput: Swift.Sendable { domainIAMRoleName: Swift.String? = nil, enableCloudwatchLogsExports: [Swift.String]? = nil, enableIAMDatabaseAuthentication: Swift.Bool? = nil, + enablePerformanceInsights: Swift.Bool? = nil, engineLifecycleSupport: Swift.String? = nil, engineMode: Swift.String? = nil, iops: Swift.Int? = nil, kmsKeyId: Swift.String? = nil, + monitoringInterval: Swift.Int? = nil, + monitoringRoleArn: Swift.String? = nil, networkType: Swift.String? = nil, optionGroupName: Swift.String? = nil, + performanceInsightsKMSKeyId: Swift.String? = nil, + performanceInsightsRetentionPeriod: Swift.Int? = nil, port: Swift.Int? = nil, publiclyAccessible: Swift.Bool? = nil, rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? = nil, @@ -20007,12 +20086,17 @@ public struct RestoreDBClusterToPointInTimeInput: Swift.Sendable { self.domainIAMRoleName = domainIAMRoleName self.enableCloudwatchLogsExports = enableCloudwatchLogsExports self.enableIAMDatabaseAuthentication = enableIAMDatabaseAuthentication + self.enablePerformanceInsights = enablePerformanceInsights self.engineLifecycleSupport = engineLifecycleSupport self.engineMode = engineMode self.iops = iops self.kmsKeyId = kmsKeyId + self.monitoringInterval = monitoringInterval + self.monitoringRoleArn = monitoringRoleArn self.networkType = networkType self.optionGroupName = optionGroupName + self.performanceInsightsKMSKeyId = performanceInsightsKMSKeyId + self.performanceInsightsRetentionPeriod = performanceInsightsRetentionPeriod self.port = port self.publiclyAccessible = publiclyAccessible self.rdsCustomClusterConfiguration = rdsCustomClusterConfiguration @@ -25028,14 +25112,19 @@ extension RestoreDBClusterFromSnapshotInput { try writer["DomainIAMRoleName"].write(value.domainIAMRoleName) try writer["EnableCloudwatchLogsExports"].writeList(value.enableCloudwatchLogsExports, memberWritingClosure: SmithyReadWrite.WritingClosures.writeString(value:to:), memberNodeInfo: "member", isFlattened: false) try writer["EnableIAMDatabaseAuthentication"].write(value.enableIAMDatabaseAuthentication) + try writer["EnablePerformanceInsights"].write(value.enablePerformanceInsights) try writer["Engine"].write(value.engine) try writer["EngineLifecycleSupport"].write(value.engineLifecycleSupport) try writer["EngineMode"].write(value.engineMode) try writer["EngineVersion"].write(value.engineVersion) try writer["Iops"].write(value.iops) try writer["KmsKeyId"].write(value.kmsKeyId) + try writer["MonitoringInterval"].write(value.monitoringInterval) + try writer["MonitoringRoleArn"].write(value.monitoringRoleArn) try writer["NetworkType"].write(value.networkType) try writer["OptionGroupName"].write(value.optionGroupName) + try writer["PerformanceInsightsKMSKeyId"].write(value.performanceInsightsKMSKeyId) + try writer["PerformanceInsightsRetentionPeriod"].write(value.performanceInsightsRetentionPeriod) try writer["Port"].write(value.port) try writer["PubliclyAccessible"].write(value.publiclyAccessible) try writer["RdsCustomClusterConfiguration"].write(value.rdsCustomClusterConfiguration, with: RDSClientTypes.RdsCustomClusterConfiguration.write(value:to:)) @@ -25065,12 +25154,17 @@ extension RestoreDBClusterToPointInTimeInput { try writer["DomainIAMRoleName"].write(value.domainIAMRoleName) try writer["EnableCloudwatchLogsExports"].writeList(value.enableCloudwatchLogsExports, memberWritingClosure: SmithyReadWrite.WritingClosures.writeString(value:to:), memberNodeInfo: "member", isFlattened: false) try writer["EnableIAMDatabaseAuthentication"].write(value.enableIAMDatabaseAuthentication) + try writer["EnablePerformanceInsights"].write(value.enablePerformanceInsights) try writer["EngineLifecycleSupport"].write(value.engineLifecycleSupport) try writer["EngineMode"].write(value.engineMode) try writer["Iops"].write(value.iops) try writer["KmsKeyId"].write(value.kmsKeyId) + try writer["MonitoringInterval"].write(value.monitoringInterval) + try writer["MonitoringRoleArn"].write(value.monitoringRoleArn) try writer["NetworkType"].write(value.networkType) try writer["OptionGroupName"].write(value.optionGroupName) + try writer["PerformanceInsightsKMSKeyId"].write(value.performanceInsightsKMSKeyId) + try writer["PerformanceInsightsRetentionPeriod"].write(value.performanceInsightsRetentionPeriod) try writer["Port"].write(value.port) try writer["PubliclyAccessible"].write(value.publiclyAccessible) try writer["RdsCustomClusterConfiguration"].write(value.rdsCustomClusterConfiguration, with: RDSClientTypes.RdsCustomClusterConfiguration.write(value:to:)) diff --git a/Sources/Services/AWSStorageGateway/Sources/AWSStorageGateway/Models.swift b/Sources/Services/AWSStorageGateway/Sources/AWSStorageGateway/Models.swift index 5c30b1c09da..d0898a0e9fc 100644 --- a/Sources/Services/AWSStorageGateway/Sources/AWSStorageGateway/Models.swift +++ b/Sources/Services/AWSStorageGateway/Sources/AWSStorageGateway/Models.swift @@ -363,7 +363,7 @@ public struct ActivateGatewayInput: Swift.Sendable { /// A value that indicates the time zone you want to set for the gateway. The time zone is of the format "GMT", "GMT-hr:mm", or "GMT+hr:mm". For example, GMT indicates Greenwich Mean Time without any offset. GMT-4:00 indicates the time is 4 hours behind GMT. GMT+2:00 indicates the time is 2 hours ahead of GMT. The time zone is used, for example, for scheduling snapshots and your gateway's maintenance schedule. /// This member is required. public var gatewayTimezone: Swift.String? - /// A value that defines the type of gateway to activate. The type specified is critical to all later functions of the gateway and cannot be changed after activation. The default value is CACHED. Valid Values: STORED | CACHED | VTL | FILE_S3 | FILE_FSX_SMB + /// A value that defines the type of gateway to activate. The type specified is critical to all later functions of the gateway and cannot be changed after activation. The default value is CACHED. Amazon FSx File Gateway is no longer available to new customers. Existing customers of FSx File Gateway can continue to use the service normally. For capabilities similar to FSx File Gateway, visit [this blog post](https://aws.amazon.com/blogs/storage/switch-your-file-share-access-from-amazon-fsx-file-gateway-to-amazon-fsx-for-windows-file-server/). Valid Values: STORED | CACHED | VTL | FILE_S3 | FILE_FSX_SMB public var gatewayType: Swift.String? /// The value that indicates the type of medium changer to use for tape gateway. This field is optional. Valid Values: STK-L700 | AWS-Gateway-VTL | IBM-03584L32-0402 public var mediumChangerType: Swift.String? @@ -877,11 +877,11 @@ extension StorageGatewayClientTypes { extension StorageGatewayClientTypes { - /// Describes a bandwidth rate limit interval for a gateway. A bandwidth rate limit schedule consists of one or more bandwidth rate limit intervals. A bandwidth rate limit interval defines a period of time on one or more days of the week, during which bandwidth rate limits are specified for uploading, downloading, or both. + /// Describes a bandwidth rate limit interval for a gateway. A bandwidth rate limit schedule consists of one or more bandwidth rate limit intervals. A bandwidth rate limit interval defines a period of time on one or more days of the week, during which bandwidth rate limits are specified for uploading, downloading, or both. FSx File Gateway does not support this feature. public struct BandwidthRateLimitInterval: Swift.Sendable { - /// The average download rate limit component of the bandwidth rate limit interval, in bits per second. This field does not appear in the response if the download rate limit is not set. + /// The average download rate limit component of the bandwidth rate limit interval, in bits per second. This field does not appear in the response if the download rate limit is not set. S3 File Gateway does not support this feature. public var averageDownloadRateLimitInBitsPerSec: Swift.Int? - /// The average upload rate limit component of the bandwidth rate limit interval, in bits per second. This field does not appear in the response if the upload rate limit is not set. For Tape Gateway and Volume Gateway, the minimum value is 51200. For S3 File Gateway and FSx File Gateway, the minimum value is 104857600. + /// The average upload rate limit component of the bandwidth rate limit interval, in bits per second. This field does not appear in the response if the upload rate limit is not set. For Tape Gateway and Volume Gateway, the minimum value is 51200. This field is required for S3 File Gateway, and the minimum value is 104857600. public var averageUploadRateLimitInBitsPerSec: Swift.Int? /// The days of the week component of the bandwidth rate limit interval, represented as ordinal numbers from 0 to 6, where 0 represents Sunday and 6 represents Saturday. /// This member is required. @@ -1333,7 +1333,7 @@ public struct CreateNFSFileShareInput: Swift.Sendable { public var defaultStorageClass: Swift.String? /// A value that specifies the type of server-side encryption that the file share will use for the data that it stores in Amazon S3. We recommend using EncryptionType instead of KMSEncrypted to set the file share encryption method. You do not need to provide values for both parameters. If values for both parameters exist in the same request, then the specified encryption methods must not conflict. For example, if EncryptionType is SseS3, then KMSEncrypted must be false. If EncryptionType is SseKms or DsseKms, then KMSEncrypted must be true. public var encryptionType: StorageGatewayClientTypes.EncryptionType? - /// The name of the file share. Optional. FileShareName must be set if an S3 prefix name is set in LocationARN, or if an access point or access point alias is used. + /// The name of the file share. Optional. FileShareName must be set if an S3 prefix name is set in LocationARN, or if an access point or access point alias is used. A valid NFS file share name can only contain the following characters: a-z, A-Z, 0-9, -, ., and _. public var fileShareName: Swift.String? /// The Amazon Resource Name (ARN) of the S3 File Gateway on which you want to create a file share. /// This member is required. @@ -1345,7 +1345,7 @@ public struct CreateNFSFileShareInput: Swift.Sendable { public var kmsEncrypted: Swift.Bool? /// Optional. The Amazon Resource Name (ARN) of a symmetric customer master key (CMK) used for Amazon S3 server-side encryption. Storage Gateway does not support asymmetric CMKs. This value must be set if KMSEncrypted is true, or if EncryptionType is SseKms or DsseKms. public var kmsKey: Swift.String? - /// A custom ARN for the backend storage used for storing data for file shares. It includes a resource ARN with an optional prefix concatenation. The prefix must end with a forward slash (/). You can specify LocationARN as a bucket ARN, access point ARN or access point alias, as shown in the following examples. Bucket ARN: arn:aws:s3:::my-bucket/prefix/ Access point ARN: arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/ If you specify an access point, the bucket policy must be configured to delegate access control to the access point. For information, see [Delegating access control to access points](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-policies.html#access-points-delegating-control) in the Amazon S3 User Guide. Access point alias: test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias + /// A custom ARN for the backend storage used for storing data for file shares. It includes a resource ARN with an optional prefix concatenation. The prefix must end with a forward slash (/). You can specify LocationARN as a bucket ARN, access point ARN or access point alias, as shown in the following examples. Bucket ARN: arn:aws:s3:::amzn-s3-demo-bucket/prefix/ Access point ARN: arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/ If you specify an access point, the bucket policy must be configured to delegate access control to the access point. For information, see [Delegating access control to access points](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-policies.html#access-points-delegating-control) in the Amazon S3 User Guide. Access point alias: test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias /// This member is required. public var locationARN: Swift.String? /// File share default values. Optional. @@ -1460,7 +1460,7 @@ public struct CreateSMBFileShareInput: Swift.Sendable { public var defaultStorageClass: Swift.String? /// A value that specifies the type of server-side encryption that the file share will use for the data that it stores in Amazon S3. We recommend using EncryptionType instead of KMSEncrypted to set the file share encryption method. You do not need to provide values for both parameters. If values for both parameters exist in the same request, then the specified encryption methods must not conflict. For example, if EncryptionType is SseS3, then KMSEncrypted must be false. If EncryptionType is SseKms or DsseKms, then KMSEncrypted must be true. public var encryptionType: StorageGatewayClientTypes.EncryptionType? - /// The name of the file share. Optional. FileShareName must be set if an S3 prefix name is set in LocationARN, or if an access point or access point alias is used. + /// The name of the file share. Optional. FileShareName must be set if an S3 prefix name is set in LocationARN, or if an access point or access point alias is used. A valid SMB file share name cannot contain the following characters: [,],#,;,<,>,:,",\,/,|,?,*,+, or ASCII control characters 1-31. public var fileShareName: Swift.String? /// The ARN of the S3 File Gateway on which you want to create a file share. /// This member is required. @@ -1474,7 +1474,7 @@ public struct CreateSMBFileShareInput: Swift.Sendable { public var kmsEncrypted: Swift.Bool? /// Optional. The Amazon Resource Name (ARN) of a symmetric customer master key (CMK) used for Amazon S3 server-side encryption. Storage Gateway does not support asymmetric CMKs. This value must be set if KMSEncrypted is true, or if EncryptionType is SseKms or DsseKms. public var kmsKey: Swift.String? - /// A custom ARN for the backend storage used for storing data for file shares. It includes a resource ARN with an optional prefix concatenation. The prefix must end with a forward slash (/). You can specify LocationARN as a bucket ARN, access point ARN or access point alias, as shown in the following examples. Bucket ARN: arn:aws:s3:::my-bucket/prefix/ Access point ARN: arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/ If you specify an access point, the bucket policy must be configured to delegate access control to the access point. For information, see [Delegating access control to access points](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-policies.html#access-points-delegating-control) in the Amazon S3 User Guide. Access point alias: test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias + /// A custom ARN for the backend storage used for storing data for file shares. It includes a resource ARN with an optional prefix concatenation. The prefix must end with a forward slash (/). You can specify LocationARN as a bucket ARN, access point ARN or access point alias, as shown in the following examples. Bucket ARN: arn:aws:s3:::amzn-s3-demo-bucket/prefix/ Access point ARN: arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/ If you specify an access point, the bucket policy must be configured to delegate access control to the access point. For information, see [Delegating access control to access points](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-policies.html#access-points-delegating-control) in the Amazon S3 User Guide. Access point alias: test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias /// This member is required. public var locationARN: Swift.String? /// The notification policy of the file share. SettlingTimeInSeconds controls the number of seconds to wait after the last point in time a client wrote to a file before generating an ObjectUploaded notification. Because clients can make many small writes to files, it's best to set this parameter for as long as possible to avoid generating multiple notifications for the same file in a small time period. SettlingTimeInSeconds has no effect on the timing of the object uploading to Amazon S3, only the timing of the notification. This setting is not meant to specify an exact time at which the notification will be sent. In some cases, the gateway might require more than the specified delay time to generate and send notifications. The following example sets NotificationPolicy on with SettlingTimeInSeconds set to 60. {\"Upload\": {\"SettlingTimeInSeconds\": 60}} The following example sets NotificationPolicy off. {} @@ -2735,7 +2735,7 @@ public struct DescribeGatewayInformationOutput: Swift.Sendable { public var gatewayState: Swift.String? /// A value that indicates the time zone configured for the gateway. public var gatewayTimezone: Swift.String? - /// The type of the gateway. + /// The type of the gateway. Amazon FSx File Gateway is no longer available to new customers. Existing customers of FSx File Gateway can continue to use the service normally. For capabilities similar to FSx File Gateway, visit [this blog post](https://aws.amazon.com/blogs/storage/switch-your-file-share-access-from-amazon-fsx-file-gateway-to-amazon-fsx-for-windows-file-server/). public var gatewayType: Swift.String? /// The type of hardware or software platform on which the gateway is running. Tape Gateway is no longer available on Snow Family devices. public var hostEnvironment: StorageGatewayClientTypes.HostEnvironment? @@ -2937,7 +2937,7 @@ extension StorageGatewayClientTypes { public var kmsEncrypted: Swift.Bool /// Optional. The Amazon Resource Name (ARN) of a symmetric customer master key (CMK) used for Amazon S3 server-side encryption. Storage Gateway does not support asymmetric CMKs. This value must be set if KMSEncrypted is true, or if EncryptionType is SseKms or DsseKms. public var kmsKey: Swift.String? - /// A custom ARN for the backend storage used for storing data for file shares. It includes a resource ARN with an optional prefix concatenation. The prefix must end with a forward slash (/). You can specify LocationARN as a bucket ARN, access point ARN or access point alias, as shown in the following examples. Bucket ARN: arn:aws:s3:::my-bucket/prefix/ Access point ARN: arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/ If you specify an access point, the bucket policy must be configured to delegate access control to the access point. For information, see [Delegating access control to access points](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-policies.html#access-points-delegating-control) in the Amazon S3 User Guide. Access point alias: test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias + /// A custom ARN for the backend storage used for storing data for file shares. It includes a resource ARN with an optional prefix concatenation. The prefix must end with a forward slash (/). You can specify LocationARN as a bucket ARN, access point ARN or access point alias, as shown in the following examples. Bucket ARN: arn:aws:s3:::amzn-s3-demo-bucket/prefix/ Access point ARN: arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/ If you specify an access point, the bucket policy must be configured to delegate access control to the access point. For information, see [Delegating access control to access points](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-policies.html#access-points-delegating-control) in the Amazon S3 User Guide. Access point alias: test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias public var locationARN: Swift.String? /// Describes Network File System (NFS) file share default values. Files and folders stored as Amazon S3 objects in S3 buckets don't, by default, have Unix file permissions assigned to them. Upon discovery in an S3 bucket by Storage Gateway, the S3 objects that represent files and folders are assigned these default Unix permissions. This operation is only supported for S3 File Gateways. public var nfsFileShareDefaults: StorageGatewayClientTypes.NFSFileShareDefaults? @@ -3091,7 +3091,7 @@ extension StorageGatewayClientTypes { public var kmsEncrypted: Swift.Bool /// Optional. The Amazon Resource Name (ARN) of a symmetric customer master key (CMK) used for Amazon S3 server-side encryption. Storage Gateway does not support asymmetric CMKs. This value must be set if KMSEncrypted is true, or if EncryptionType is SseKms or DsseKms. public var kmsKey: Swift.String? - /// A custom ARN for the backend storage used for storing data for file shares. It includes a resource ARN with an optional prefix concatenation. The prefix must end with a forward slash (/). You can specify LocationARN as a bucket ARN, access point ARN or access point alias, as shown in the following examples. Bucket ARN: arn:aws:s3:::my-bucket/prefix/ Access point ARN: arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/ If you specify an access point, the bucket policy must be configured to delegate access control to the access point. For information, see [Delegating access control to access points](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-policies.html#access-points-delegating-control) in the Amazon S3 User Guide. Access point alias: test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias + /// A custom ARN for the backend storage used for storing data for file shares. It includes a resource ARN with an optional prefix concatenation. The prefix must end with a forward slash (/). You can specify LocationARN as a bucket ARN, access point ARN or access point alias, as shown in the following examples. Bucket ARN: arn:aws:s3:::amzn-s3-demo-bucket/prefix/ Access point ARN: arn:aws:s3:region:account-id:accesspoint/access-point-name/prefix/ If you specify an access point, the bucket policy must be configured to delegate access control to the access point. For information, see [Delegating access control to access points](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-policies.html#access-points-delegating-control) in the Amazon S3 User Guide. Access point alias: test-ap-ab123cdef4gehijklmn5opqrstuvuse1a-s3alias public var locationARN: Swift.String? /// The notification policy of the file share. SettlingTimeInSeconds controls the number of seconds to wait after the last point in time a client wrote to a file before generating an ObjectUploaded notification. Because clients can make many small writes to files, it's best to set this parameter for as long as possible to avoid generating multiple notifications for the same file in a small time period. SettlingTimeInSeconds has no effect on the timing of the object uploading to Amazon S3, only the timing of the notification. This setting is not meant to specify an exact time at which the notification will be sent. In some cases, the gateway might require more than the specified delay time to generate and send notifications. The following example sets NotificationPolicy on with SettlingTimeInSeconds set to 60. {\"Upload\": {\"SettlingTimeInSeconds\": 60}} The following example sets NotificationPolicy off. {} public var notificationPolicy: Swift.String? @@ -4196,7 +4196,7 @@ extension StorageGatewayClientTypes { public var gatewayName: Swift.String? /// The state of the gateway. Valid Values: DISABLED | ACTIVE public var gatewayOperationalState: Swift.String? - /// The type of the gateway. + /// The type of the gateway. Amazon FSx File Gateway is no longer available to new customers. Existing customers of FSx File Gateway can continue to use the service normally. For capabilities similar to FSx File Gateway, visit [this blog post](https://aws.amazon.com/blogs/storage/switch-your-file-share-access-from-amazon-fsx-file-gateway-to-amazon-fsx-for-windows-file-server/). public var gatewayType: Swift.String? /// The type of hardware or software platform on which the gateway is running. Tape Gateway is no longer available on Snow Family devices. public var hostEnvironment: StorageGatewayClientTypes.HostEnvironment? @@ -5584,7 +5584,7 @@ public struct UpdateNFSFileShareInput: Swift.Sendable { /// The Amazon Resource Name (ARN) of the file share to be updated. /// This member is required. public var fileShareARN: Swift.String? - /// The name of the file share. Optional. FileShareName must be set if an S3 prefix name is set in LocationARN, or if an access point or access point alias is used. + /// The name of the file share. Optional. FileShareName must be set if an S3 prefix name is set in LocationARN, or if an access point or access point alias is used. A valid NFS file share name can only contain the following characters: a-z, A-Z, 0-9, -, ., and _. public var fileShareName: Swift.String? /// A value that enables guessing of the MIME type for uploaded objects based on file extensions. Set this value to true to enable MIME type guessing, otherwise set to false. The default value is true. Valid Values: true | false public var guessMIMETypeEnabled: Swift.Bool? @@ -5682,7 +5682,7 @@ public struct UpdateSMBFileShareInput: Swift.Sendable { /// The Amazon Resource Name (ARN) of the SMB file share that you want to update. /// This member is required. public var fileShareARN: Swift.String? - /// The name of the file share. Optional. FileShareName must be set if an S3 prefix name is set in LocationARN, or if an access point or access point alias is used. + /// The name of the file share. Optional. FileShareName must be set if an S3 prefix name is set in LocationARN, or if an access point or access point alias is used. A valid SMB file share name cannot contain the following characters: [,],#,;,<,>,:,",\,/,|,?,*,+, or ASCII control characters 1-31. public var fileShareName: Swift.String? /// A value that enables guessing of the MIME type for uploaded objects based on file extensions. Set this value to true to enable MIME type guessing, otherwise set to false. The default value is true. Valid Values: true | false public var guessMIMETypeEnabled: Swift.Bool?