diff --git a/.changelog/3b2a065c571441cc9b9f756cdd962387.json b/.changelog/3b2a065c571441cc9b9f756cdd962387.json new file mode 100644 index 00000000000..ad4082d71e6 --- /dev/null +++ b/.changelog/3b2a065c571441cc9b9f756cdd962387.json @@ -0,0 +1,8 @@ +{ + "id": "3b2a065c-5714-41cc-9b9f-756cdd962387", + "type": "feature", + "description": "Amazon Q in Connect enables agents to ask Q for assistance in multiple languages and Q will provide answers and recommended step-by-step guides in those languages. Qs default language is English (United States) and you can switch this by setting the locale configuration on the AI Agent.", + "modules": [ + "service/qconnect" + ] +} \ No newline at end of file diff --git a/.changelog/7a0a315041424b23baae347b15e0dfcb.json b/.changelog/7a0a315041424b23baae347b15e0dfcb.json new file mode 100644 index 00000000000..ea494c47d90 --- /dev/null +++ b/.changelog/7a0a315041424b23baae347b15e0dfcb.json @@ -0,0 +1,8 @@ +{ + "id": "7a0a3150-4142-4b23-baae-347b15e0dfcb", + "type": "feature", + "description": "Added support for Rocky Linux 8 on Amazon AppStream 2.0", + "modules": [ + "service/appstream" + ] +} \ No newline at end of file diff --git a/.changelog/9fca1acb9b184f8095f675c080780e7e.json b/.changelog/9fca1acb9b184f8095f675c080780e7e.json new file mode 100644 index 00000000000..f4654f516b6 --- /dev/null +++ b/.changelog/9fca1acb9b184f8095f675c080780e7e.json @@ -0,0 +1,8 @@ +{ + "id": "9fca1acb-9b18-4f80-95f6-75c080780e7e", + "type": "feature", + "description": "This release adds support for inserting timecode tracks into MP4 container outputs.", + "modules": [ + "service/mediaconvert" + ] +} \ No newline at end of file diff --git a/.changelog/aca0524e20554f0f8d23321769cf0785.json b/.changelog/aca0524e20554f0f8d23321769cf0785.json new file mode 100644 index 00000000000..9667c213cbe --- /dev/null +++ b/.changelog/aca0524e20554f0f8d23321769cf0785.json @@ -0,0 +1,8 @@ +{ + "id": "aca0524e-2055-4f0f-8d23-321769cf0785", + "type": "feature", + "description": "MediaLive is releasing ListVersions api", + "modules": [ + "service/medialive" + ] +} \ No newline at end of file diff --git a/.changelog/ddc3726544f94d9d9b26c3442d7aa873.json b/.changelog/ddc3726544f94d9d9b26c3442d7aa873.json new file mode 100644 index 00000000000..c20842b0b9e --- /dev/null +++ b/.changelog/ddc3726544f94d9d9b26c3442d7aa873.json @@ -0,0 +1,8 @@ +{ + "id": "ddc37265-44f9-4d9d-9b26-c3442d7aa873", + "type": "feature", + "description": "Added AWS Global Accelerator (AGA) support for WorkSpaces Personal.", + "modules": [ + "service/workspaces" + ] +} \ No newline at end of file diff --git a/.changelog/e559ca29901346e79636bb2cd6ea4f76.json b/.changelog/e559ca29901346e79636bb2cd6ea4f76.json new file mode 100644 index 00000000000..0b917106302 --- /dev/null +++ b/.changelog/e559ca29901346e79636bb2cd6ea4f76.json @@ -0,0 +1,8 @@ +{ + "id": "e559ca29-9013-46e7-9636-bb2cd6ea4f76", + "type": "feature", + "description": "AWS Systems Manager for SAP added support for registration and discovery of distributed ABAP applications", + "modules": [ + "service/ssmsap" + ] +} \ No newline at end of file diff --git a/service/appstream/types/enums.go b/service/appstream/types/enums.go index 554520209f2..b0170e6b66d 100644 --- a/service/appstream/types/enums.go +++ b/service/appstream/types/enums.go @@ -609,6 +609,7 @@ const ( PlatformTypeWindowsServer2022 PlatformType = "WINDOWS_SERVER_2022" PlatformTypeAmazonLinux2 PlatformType = "AMAZON_LINUX2" PlatformTypeRhel8 PlatformType = "RHEL8" + PlatformTypeRockyLinux8 PlatformType = "ROCKY_LINUX8" ) // Values returns all known values for PlatformType. Note that this can be @@ -623,6 +624,7 @@ func (PlatformType) Values() []PlatformType { "WINDOWS_SERVER_2022", "AMAZON_LINUX2", "RHEL8", + "ROCKY_LINUX8", } } diff --git a/service/dlm/internal/endpoints/endpoints.go b/service/dlm/internal/endpoints/endpoints.go index 542d339239c..ca6255d73a3 100644 --- a/service/dlm/internal/endpoints/endpoints.go +++ b/service/dlm/internal/endpoints/endpoints.go @@ -485,9 +485,21 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "cn-north-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "cn-north-1", + Variant: endpoints.DualStackVariant, + }: { + Hostname: "dlm.cn-north-1.api.amazonwebservices.com.cn", + }, endpoints.EndpointKey{ Region: "cn-northwest-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "cn-northwest-1", + Variant: endpoints.DualStackVariant, + }: { + Hostname: "dlm.cn-northwest-1.api.amazonwebservices.com.cn", + }, }, }, { diff --git a/service/mediaconvert/deserializers.go b/service/mediaconvert/deserializers.go index f40521b47c9..7c700523d4a 100644 --- a/service/mediaconvert/deserializers.go +++ b/service/mediaconvert/deserializers.go @@ -7285,7 +7285,7 @@ func awsRestjson1_deserializeDocumentAudioDescription(v **types.AudioDescription if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected __string to be of type string, got %T instead", value) + return fmt.Errorf("expected __stringMax2048 to be of type string, got %T instead", value) } sv.AudioSourceName = ptr.String(jtv) } @@ -8618,6 +8618,15 @@ func awsRestjson1_deserializeDocumentBurninDestinationSettings(v **types.BurninD sv.OutlineSize = ptr.Int32(int32(i64)) } + case "removeRubyReserveAttributes": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected RemoveRubyReserveAttributes to be of type string, got %T instead", value) + } + sv.RemoveRubyReserveAttributes = types.RemoveRubyReserveAttributes(jtv) + } + case "shadowColor": if value != nil { jtv, ok := value.(string) @@ -15585,7 +15594,7 @@ func awsRestjson1_deserializeDocumentInput(v **types.Input, value interface{}) e if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected __stringPatternS3Https to be of type string, got %T instead", value) + return fmt.Errorf("expected __stringMax2048PatternS3Https to be of type string, got %T instead", value) } sv.FileInput = ptr.String(jtv) } @@ -20204,7 +20213,7 @@ func awsRestjson1_deserializeDocumentOutput(v **types.Output, value interface{}) if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected __string to be of type string, got %T instead", value) + return fmt.Errorf("expected __stringMax256 to be of type string, got %T instead", value) } sv.Extension = ptr.String(jtv) } @@ -20376,7 +20385,7 @@ func awsRestjson1_deserializeDocumentOutputGroup(v **types.OutputGroup, value in if value != nil { jtv, ok := value.(string) if !ok { - return fmt.Errorf("expected __string to be of type string, got %T instead", value) + return fmt.Errorf("expected __stringMax2048 to be of type string, got %T instead", value) } sv.Name = ptr.String(jtv) } @@ -22944,6 +22953,15 @@ func awsRestjson1_deserializeDocumentVideoDescription(v **types.VideoDescription sv.TimecodeInsertion = types.VideoTimecodeInsertion(jtv) } + case "timecodeTrack": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TimecodeTrack to be of type string, got %T instead", value) + } + sv.TimecodeTrack = types.TimecodeTrack(jtv) + } + case "videoPreprocessors": if err := awsRestjson1_deserializeDocumentVideoPreprocessor(&sv.VideoPreprocessors, value); err != nil { return err diff --git a/service/mediaconvert/serializers.go b/service/mediaconvert/serializers.go index 3098fff2b7a..e6486340a16 100644 --- a/service/mediaconvert/serializers.go +++ b/service/mediaconvert/serializers.go @@ -4066,6 +4066,11 @@ func awsRestjson1_serializeDocumentBurninDestinationSettings(v *types.BurninDest ok.Integer(*v.OutlineSize) } + if len(v.RemoveRubyReserveAttributes) > 0 { + ok := object.Key("removeRubyReserveAttributes") + ok.String(string(v.RemoveRubyReserveAttributes)) + } + if len(v.ShadowColor) > 0 { ok := object.Key("shadowColor") ok.String(string(v.ShadowColor)) @@ -10069,6 +10074,11 @@ func awsRestjson1_serializeDocumentVideoDescription(v *types.VideoDescription, v ok.String(string(v.TimecodeInsertion)) } + if len(v.TimecodeTrack) > 0 { + ok := object.Key("timecodeTrack") + ok.String(string(v.TimecodeTrack)) + } + if v.VideoPreprocessors != nil { ok := object.Key("videoPreprocessors") if err := awsRestjson1_serializeDocumentVideoPreprocessor(v.VideoPreprocessors, ok); err != nil { diff --git a/service/mediaconvert/types/enums.go b/service/mediaconvert/types/enums.go index 4fe9bae675d..99d6c6c05d0 100644 --- a/service/mediaconvert/types/enums.go +++ b/service/mediaconvert/types/enums.go @@ -7866,6 +7866,25 @@ func (QueueStatus) Values() []QueueStatus { } } +type RemoveRubyReserveAttributes string + +// Enum values for RemoveRubyReserveAttributes +const ( + RemoveRubyReserveAttributesDisabled RemoveRubyReserveAttributes = "DISABLED" + RemoveRubyReserveAttributesEnabled RemoveRubyReserveAttributes = "ENABLED" +) + +// Values returns all known values for RemoveRubyReserveAttributes. Note that this +// can be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (RemoveRubyReserveAttributes) Values() []RemoveRubyReserveAttributes { + return []RemoveRubyReserveAttributes{ + "DISABLED", + "ENABLED", + } +} + type RenewalType string // Enum values for RenewalType @@ -8271,6 +8290,25 @@ func (TimecodeSource) Values() []TimecodeSource { } } +type TimecodeTrack string + +// Enum values for TimecodeTrack +const ( + TimecodeTrackDisabled TimecodeTrack = "DISABLED" + TimecodeTrackEnabled TimecodeTrack = "ENABLED" +) + +// Values returns all known values for TimecodeTrack. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (TimecodeTrack) Values() []TimecodeTrack { + return []TimecodeTrack{ + "DISABLED", + "ENABLED", + } +} + type TimedMetadata string // Enum values for TimedMetadata diff --git a/service/mediaconvert/types/types.go b/service/mediaconvert/types/types.go index e0f17bb6bb4..35475430dc2 100644 --- a/service/mediaconvert/types/types.go +++ b/service/mediaconvert/types/types.go @@ -1062,6 +1062,13 @@ type BurninDestinationSettings struct { // your input captions, if present. OutlineSize *int32 + // Optionally remove any tts:rubyReserve attributes present in your input, that do + // not have a tts:ruby attribute in the same element, from your output. Use if your + // vertical Japanese output captions have alignment issues. To remove ruby reserve + // attributes when present: Choose Enabled. To not remove any ruby reserve + // attributes: Keep the default value, Disabled. + RemoveRubyReserveAttributes RemoveRubyReserveAttributes + // Specify the color of the shadow cast by the captions. Leave Shadow color blank // and set Style passthrough to enabled to use the shadow color data from your // input captions, if present. @@ -8071,7 +8078,7 @@ type VideoDescription struct { // Applies only to 29.97 fps outputs. When this feature is enabled, the service // will use drop-frame timecode on outputs. If it is not possible to use drop-frame // timecode, the system will fall back to non-drop-frame. This setting is enabled - // by default when Timecode insertion is enabled. + // by default when Timecode insertion or Timecode track is enabled. DropFrameTimecode DropFrameTimecode // Applies only if you set AFD Signaling to Fixed. Use Fixed to specify a four-bit @@ -8122,6 +8129,13 @@ type VideoDescription struct { // under Job settings > Timecode configuration does. TimecodeInsertion VideoTimecodeInsertion + // To include a timecode track in your MP4 output: Choose Enabled. MediaConvert + // writes the timecode track in the Null Media Header box (NMHD), without any + // timecode text formatting information. You can also specify dropframe or + // non-dropframe timecode under the Drop Frame Timecode setting. To not include a + // timecode track: Keep the default value, Disabled. + TimecodeTrack TimecodeTrack + // Find additional transcoding features under Preprocessors. Enable the features // at each output individually. These features are disabled by default. VideoPreprocessors *VideoPreprocessor diff --git a/service/medialive/api_op_CreateChannel.go b/service/medialive/api_op_CreateChannel.go index b1281cdabcb..f086dd3b8db 100644 --- a/service/medialive/api_op_CreateChannel.go +++ b/service/medialive/api_op_CreateChannel.go @@ -40,9 +40,15 @@ type CreateChannelInput struct { // SINGLE_PIPELINE for a channel with one pipeline. ChannelClass types.ChannelClass + // The desired engine version for this channel. + ChannelEngineVersion *types.ChannelEngineVersionRequest + // Placeholder documentation for __listOfOutputDestination Destinations []types.OutputDestination + // Placeholder documentation for __boolean + DryRun *bool + // Encoder Settings EncoderSettings *types.EncoderSettings diff --git a/service/medialive/api_op_DeleteChannel.go b/service/medialive/api_op_DeleteChannel.go index 3a58c9ea3ce..13b228fdda2 100644 --- a/service/medialive/api_op_DeleteChannel.go +++ b/service/medialive/api_op_DeleteChannel.go @@ -54,6 +54,9 @@ type DeleteChannelOutput struct { // SINGLE_PIPELINE for a channel with one pipeline. ChannelClass types.ChannelClass + // Requested engine version for this channel. + ChannelEngineVersion *types.ChannelEngineVersionResponse + // A list of destinations of the channel. For UDP outputs, there is one // destination per output. For other types (HLS, for example), there is one // destination per packager. diff --git a/service/medialive/api_op_DescribeChannel.go b/service/medialive/api_op_DescribeChannel.go index c3f2469af7d..15c89920492 100644 --- a/service/medialive/api_op_DescribeChannel.go +++ b/service/medialive/api_op_DescribeChannel.go @@ -59,6 +59,9 @@ type DescribeChannelOutput struct { // SINGLE_PIPELINE for a channel with one pipeline. ChannelClass types.ChannelClass + // Requested engine version for this channel. + ChannelEngineVersion *types.ChannelEngineVersionResponse + // A list of destinations of the channel. For UDP outputs, there is one // destination per output. For other types (HLS, for example), there is one // destination per packager. diff --git a/service/medialive/api_op_ListVersions.go b/service/medialive/api_op_ListVersions.go new file mode 100644 index 00000000000..3e471a35e8f --- /dev/null +++ b/service/medialive/api_op_ListVersions.go @@ -0,0 +1,151 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package medialive + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/medialive/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Retrieves an array of all the encoder engine versions that are available in +// this AWS account. +func (c *Client) ListVersions(ctx context.Context, params *ListVersionsInput, optFns ...func(*Options)) (*ListVersionsOutput, error) { + if params == nil { + params = &ListVersionsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListVersions", params, optFns, c.addOperationListVersionsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListVersionsOutput) + out.ResultMetadata = metadata + return out, nil +} + +// Placeholder documentation for ListVersionsRequest +type ListVersionsInput struct { + noSmithyDocumentSerde +} + +// Placeholder documentation for ListVersionsResponse +type ListVersionsOutput struct { + + // List of engine versions that are available for this AWS account. + Versions []types.ChannelEngineVersionResponse + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListVersionsMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsRestjson1_serializeOpListVersions{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpListVersions{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListVersions"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListVersions(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opListVersions(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "ListVersions", + } +} diff --git a/service/medialive/api_op_RestartChannelPipelines.go b/service/medialive/api_op_RestartChannelPipelines.go index 4e8eb9919cc..597b8510e57 100644 --- a/service/medialive/api_op_RestartChannelPipelines.go +++ b/service/medialive/api_op_RestartChannelPipelines.go @@ -58,6 +58,9 @@ type RestartChannelPipelinesOutput struct { // SINGLE_PIPELINE for a channel with one pipeline. ChannelClass types.ChannelClass + // Requested engine version for this channel. + ChannelEngineVersion *types.ChannelEngineVersionResponse + // A list of destinations of the channel. For UDP outputs, there is one // destination per output. For other types (HLS, for example), there is one // destination per packager. diff --git a/service/medialive/api_op_StartChannel.go b/service/medialive/api_op_StartChannel.go index c20b47b98df..d7dbb999c64 100644 --- a/service/medialive/api_op_StartChannel.go +++ b/service/medialive/api_op_StartChannel.go @@ -54,6 +54,9 @@ type StartChannelOutput struct { // SINGLE_PIPELINE for a channel with one pipeline. ChannelClass types.ChannelClass + // Requested engine version for this channel. + ChannelEngineVersion *types.ChannelEngineVersionResponse + // A list of destinations of the channel. For UDP outputs, there is one // destination per output. For other types (HLS, for example), there is one // destination per packager. diff --git a/service/medialive/api_op_StopChannel.go b/service/medialive/api_op_StopChannel.go index ea5df67d77c..31402dd459d 100644 --- a/service/medialive/api_op_StopChannel.go +++ b/service/medialive/api_op_StopChannel.go @@ -54,6 +54,9 @@ type StopChannelOutput struct { // SINGLE_PIPELINE for a channel with one pipeline. ChannelClass types.ChannelClass + // Requested engine version for this channel. + ChannelEngineVersion *types.ChannelEngineVersionResponse + // A list of destinations of the channel. For UDP outputs, there is one // destination per output. For other types (HLS, for example), there is one // destination per packager. diff --git a/service/medialive/api_op_UpdateChannel.go b/service/medialive/api_op_UpdateChannel.go index b6b11dfcd27..8ce6efa94b6 100644 --- a/service/medialive/api_op_UpdateChannel.go +++ b/service/medialive/api_op_UpdateChannel.go @@ -38,9 +38,15 @@ type UpdateChannelInput struct { // Specification of CDI inputs for this channel CdiInputSpecification *types.CdiInputSpecification + // Channel engine version for this channel + ChannelEngineVersion *types.ChannelEngineVersionRequest + // A list of output destinations for this channel. Destinations []types.OutputDestination + // Placeholder documentation for __boolean + DryRun *bool + // The encoder settings for this channel. EncoderSettings *types.EncoderSettings diff --git a/service/medialive/deserializers.go b/service/medialive/deserializers.go index be1d2ed8468..4de336db3ad 100644 --- a/service/medialive/deserializers.go +++ b/service/medialive/deserializers.go @@ -4847,6 +4847,11 @@ func awsRestjson1_deserializeOpDocumentDeleteChannelOutput(v **DeleteChannelOutp sv.ChannelClass = types.ChannelClass(jtv) } + case "channelEngineVersion": + if err := awsRestjson1_deserializeDocumentChannelEngineVersionResponse(&sv.ChannelEngineVersion, value); err != nil { + return err + } + case "destinations": if err := awsRestjson1_deserializeDocument__listOfOutputDestination(&sv.Destinations, value); err != nil { return err @@ -8039,6 +8044,11 @@ func awsRestjson1_deserializeOpDocumentDescribeChannelOutput(v **DescribeChannel sv.ChannelClass = types.ChannelClass(jtv) } + case "channelEngineVersion": + if err := awsRestjson1_deserializeDocumentChannelEngineVersionResponse(&sv.ChannelEngineVersion, value); err != nil { + return err + } + case "destinations": if err := awsRestjson1_deserializeDocument__listOfOutputDestination(&sv.Destinations, value); err != nil { return err @@ -16187,6 +16197,179 @@ func awsRestjson1_deserializeOpDocumentListTagsForResourceOutput(v **ListTagsFor return nil } +type awsRestjson1_deserializeOpListVersions struct { +} + +func (*awsRestjson1_deserializeOpListVersions) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpListVersions) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsRestjson1_deserializeOpErrorListVersions(response, &metadata) + } + output := &ListVersionsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsRestjson1_deserializeOpDocumentListVersionsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + return out, metadata, &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body with invalid JSON, %w", err), + Snapshot: snapshot.Bytes(), + } + } + + span.End() + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorListVersions(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + if len(headerCode) != 0 { + errorCode = restjson.SanitizeErrorCode(headerCode) + } + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + jsonCode, message, err := restjson.GetErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if len(headerCode) == 0 && len(jsonCode) != 0 { + errorCode = restjson.SanitizeErrorCode(jsonCode) + } + if len(message) != 0 { + errorMessage = message + } + + switch { + case strings.EqualFold("BadGatewayException", errorCode): + return awsRestjson1_deserializeErrorBadGatewayException(response, errorBody) + + case strings.EqualFold("BadRequestException", errorCode): + return awsRestjson1_deserializeErrorBadRequestException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsRestjson1_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("ForbiddenException", errorCode): + return awsRestjson1_deserializeErrorForbiddenException(response, errorBody) + + case strings.EqualFold("GatewayTimeoutException", errorCode): + return awsRestjson1_deserializeErrorGatewayTimeoutException(response, errorBody) + + case strings.EqualFold("InternalServerErrorException", errorCode): + return awsRestjson1_deserializeErrorInternalServerErrorException(response, errorBody) + + case strings.EqualFold("NotFoundException", errorCode): + return awsRestjson1_deserializeErrorNotFoundException(response, errorBody) + + case strings.EqualFold("TooManyRequestsException", errorCode): + return awsRestjson1_deserializeErrorTooManyRequestsException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentListVersionsOutput(v **ListVersionsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListVersionsOutput + if *v == nil { + sv = &ListVersionsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "versions": + if err := awsRestjson1_deserializeDocument__listOfChannelEngineVersionResponse(&sv.Versions, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + type awsRestjson1_deserializeOpPurchaseOffering struct { } @@ -16768,6 +16951,11 @@ func awsRestjson1_deserializeOpDocumentRestartChannelPipelinesOutput(v **Restart sv.ChannelClass = types.ChannelClass(jtv) } + case "channelEngineVersion": + if err := awsRestjson1_deserializeDocumentChannelEngineVersionResponse(&sv.ChannelEngineVersion, value); err != nil { + return err + } + case "destinations": if err := awsRestjson1_deserializeDocument__listOfOutputDestination(&sv.Destinations, value); err != nil { return err @@ -17076,6 +17264,11 @@ func awsRestjson1_deserializeOpDocumentStartChannelOutput(v **StartChannelOutput sv.ChannelClass = types.ChannelClass(jtv) } + case "channelEngineVersion": + if err := awsRestjson1_deserializeDocumentChannelEngineVersionResponse(&sv.ChannelEngineVersion, value); err != nil { + return err + } + case "destinations": if err := awsRestjson1_deserializeDocument__listOfOutputDestination(&sv.Destinations, value); err != nil { return err @@ -18767,6 +18960,11 @@ func awsRestjson1_deserializeOpDocumentStopChannelOutput(v **StopChannelOutput, sv.ChannelClass = types.ChannelClass(jtv) } + case "channelEngineVersion": + if err := awsRestjson1_deserializeDocumentChannelEngineVersionResponse(&sv.ChannelEngineVersion, value); err != nil { + return err + } + case "destinations": if err := awsRestjson1_deserializeDocument__listOfOutputDestination(&sv.Destinations, value); err != nil { return err @@ -24015,6 +24213,40 @@ func awsRestjson1_deserializeDocument__listOfChannelEgressEndpoint(v *[]types.Ch return nil } +func awsRestjson1_deserializeDocument__listOfChannelEngineVersionResponse(v *[]types.ChannelEngineVersionResponse, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ChannelEngineVersionResponse + if *v == nil { + cv = []types.ChannelEngineVersionResponse{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ChannelEngineVersionResponse + destAddr := &col + if err := awsRestjson1_deserializeDocumentChannelEngineVersionResponse(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocument__listOfChannelSummary(v *[]types.ChannelSummary, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -29194,6 +29426,11 @@ func awsRestjson1_deserializeDocumentChannel(v **types.Channel, value interface{ sv.ChannelClass = types.ChannelClass(jtv) } + case "channelEngineVersion": + if err := awsRestjson1_deserializeDocumentChannelEngineVersionResponse(&sv.ChannelEngineVersion, value); err != nil { + return err + } + case "destinations": if err := awsRestjson1_deserializeDocument__listOfOutputDestination(&sv.Destinations, value); err != nil { return err @@ -29346,6 +29583,59 @@ func awsRestjson1_deserializeDocumentChannelEgressEndpoint(v **types.ChannelEgre return nil } +func awsRestjson1_deserializeDocumentChannelEngineVersionResponse(v **types.ChannelEngineVersionResponse, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ChannelEngineVersionResponse + if *v == nil { + sv = &types.ChannelEngineVersionResponse{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "expirationDate": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected __timestampIso8601 to be of type string, got %T instead", value) + } + t, err := smithytime.ParseDateTime(jtv) + if err != nil { + return err + } + sv.ExpirationDate = ptr.Time(t) + } + + case "version": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected __string to be of type string, got %T instead", value) + } + sv.Version = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentChannelSummary(v **types.ChannelSummary, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -29396,6 +29686,11 @@ func awsRestjson1_deserializeDocumentChannelSummary(v **types.ChannelSummary, va sv.ChannelClass = types.ChannelClass(jtv) } + case "channelEngineVersion": + if err := awsRestjson1_deserializeDocumentChannelEngineVersionResponse(&sv.ChannelEngineVersion, value); err != nil { + return err + } + case "destinations": if err := awsRestjson1_deserializeDocument__listOfOutputDestination(&sv.Destinations, value); err != nil { return err @@ -29484,6 +29779,11 @@ func awsRestjson1_deserializeDocumentChannelSummary(v **types.ChannelSummary, va return err } + case "usedChannelEngineVersions": + if err := awsRestjson1_deserializeDocument__listOfChannelEngineVersionResponse(&sv.UsedChannelEngineVersions, value); err != nil { + return err + } + case "vpc": if err := awsRestjson1_deserializeDocumentVpcOutputSettingsDescription(&sv.Vpc, value); err != nil { return err @@ -42337,6 +42637,11 @@ func awsRestjson1_deserializeDocumentPipelineDetail(v **types.PipelineDetail, va sv.ActiveMotionGraphicsUri = ptr.String(jtv) } + case "channelEngineVersion": + if err := awsRestjson1_deserializeDocumentChannelEngineVersionResponse(&sv.ChannelEngineVersion, value); err != nil { + return err + } + case "pipelineId": if value != nil { jtv, ok := value.(string) diff --git a/service/medialive/generated.json b/service/medialive/generated.json index 77f3ee6af49..5047cb36fdb 100644 --- a/service/medialive/generated.json +++ b/service/medialive/generated.json @@ -90,6 +90,7 @@ "api_op_ListReservations.go", "api_op_ListSignalMaps.go", "api_op_ListTagsForResource.go", + "api_op_ListVersions.go", "api_op_PurchaseOffering.go", "api_op_RebootInputDevice.go", "api_op_RejectInputDeviceTransfer.go", diff --git a/service/medialive/serializers.go b/service/medialive/serializers.go index fca7bcbedd5..3e8dda92bb5 100644 --- a/service/medialive/serializers.go +++ b/service/medialive/serializers.go @@ -718,6 +718,13 @@ func awsRestjson1_serializeOpDocumentCreateChannelInput(v *CreateChannelInput, v ok.String(string(v.ChannelClass)) } + if v.ChannelEngineVersion != nil { + ok := object.Key("channelEngineVersion") + if err := awsRestjson1_serializeDocumentChannelEngineVersionRequest(v.ChannelEngineVersion, ok); err != nil { + return err + } + } + if v.Destinations != nil { ok := object.Key("destinations") if err := awsRestjson1_serializeDocument__listOfOutputDestination(v.Destinations, ok); err != nil { @@ -725,6 +732,11 @@ func awsRestjson1_serializeOpDocumentCreateChannelInput(v *CreateChannelInput, v } } + if v.DryRun != nil { + ok := object.Key("dryRun") + ok.Boolean(*v.DryRun) + } + if v.EncoderSettings != nil { ok := object.Key("encoderSettings") if err := awsRestjson1_serializeDocumentEncoderSettings(v.EncoderSettings, ok); err != nil { @@ -6827,6 +6839,64 @@ func awsRestjson1_serializeOpHttpBindingsListTagsForResourceInput(v *ListTagsFor return nil } +type awsRestjson1_serializeOpListVersions struct { +} + +func (*awsRestjson1_serializeOpListVersions) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpListVersions) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListVersionsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/prod/versions") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "GET" + var restEncoder *httpbinding.Encoder + if request.URL.RawPath == "" { + restEncoder, err = httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + } else { + request.URL.RawPath = smithyhttp.JoinPath(request.URL.RawPath, opPath) + restEncoder, err = httpbinding.NewEncoderWithRawPath(request.URL.Path, request.URL.RawPath, request.URL.RawQuery, request.Header) + } + + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = restEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsListVersionsInput(v *ListVersionsInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + return nil +} + type awsRestjson1_serializeOpPurchaseOffering struct { } @@ -8276,6 +8346,13 @@ func awsRestjson1_serializeOpDocumentUpdateChannelInput(v *UpdateChannelInput, v } } + if v.ChannelEngineVersion != nil { + ok := object.Key("channelEngineVersion") + if err := awsRestjson1_serializeDocumentChannelEngineVersionRequest(v.ChannelEngineVersion, ok); err != nil { + return err + } + } + if v.Destinations != nil { ok := object.Key("destinations") if err := awsRestjson1_serializeDocument__listOfOutputDestination(v.Destinations, ok); err != nil { @@ -8283,6 +8360,11 @@ func awsRestjson1_serializeOpDocumentUpdateChannelInput(v *UpdateChannelInput, v } } + if v.DryRun != nil { + ok := object.Key("dryRun") + ok.Boolean(*v.DryRun) + } + if v.EncoderSettings != nil { ok := object.Key("encoderSettings") if err := awsRestjson1_serializeDocumentEncoderSettings(v.EncoderSettings, ok); err != nil { @@ -12168,6 +12250,18 @@ func awsRestjson1_serializeDocumentCdiInputSpecification(v *types.CdiInputSpecif return nil } +func awsRestjson1_serializeDocumentChannelEngineVersionRequest(v *types.ChannelEngineVersionRequest, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Version != nil { + ok := object.Key("version") + ok.String(*v.Version) + } + + return nil +} + func awsRestjson1_serializeDocumentClusterNetworkSettingsCreateRequest(v *types.ClusterNetworkSettingsCreateRequest, value smithyjson.Value) error { object := value.Object() defer object.Close() diff --git a/service/medialive/snapshot/api_op_ListVersions.go.snap b/service/medialive/snapshot/api_op_ListVersions.go.snap new file mode 100644 index 00000000000..677c335db1d --- /dev/null +++ b/service/medialive/snapshot/api_op_ListVersions.go.snap @@ -0,0 +1,40 @@ +ListVersions + Initialize stack step + spanInitializeStart + RegisterServiceMetadata + legacyEndpointContextSetter + SetLogger + spanInitializeEnd + Serialize stack step + spanBuildRequestStart + setOperationInput + ResolveEndpoint + OperationSerializer + Build stack step + ClientRequestID + ComputeContentLength + UserAgent + AddTimeOffsetMiddleware + RecursionDetection + spanBuildRequestEnd + Finalize stack step + ResolveAuthScheme + GetIdentity + ResolveEndpointV2 + disableHTTPS + ComputePayloadHash + spanRetryLoop + Retry + RetryMetricsHeader + setLegacyContextSigningOptions + Signing + Deserialize stack step + AddRawResponseToMetadata + ErrorCloseResponseBody + CloseResponseBody + ResponseErrorWrapper + RequestIDRetriever + OperationDeserializer + AddTimeOffsetMiddleware + RecordResponseTiming + RequestResponseLogger diff --git a/service/medialive/snapshot_test.go b/service/medialive/snapshot_test.go index d45e7b24c5e..c33bde5ad50 100644 --- a/service/medialive/snapshot_test.go +++ b/service/medialive/snapshot_test.go @@ -1034,6 +1034,18 @@ func TestCheckSnapshot_ListTagsForResource(t *testing.T) { } } +func TestCheckSnapshot_ListVersions(t *testing.T) { + svc := New(Options{}) + _, err := svc.ListVersions(context.Background(), nil, func(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + return testSnapshot(stack, "ListVersions") + }) + }) + if _, ok := err.(snapshotOK); !ok && err != nil { + t.Fatal(err) + } +} + func TestCheckSnapshot_PurchaseOffering(t *testing.T) { svc := New(Options{}) _, err := svc.PurchaseOffering(context.Background(), nil, func(o *Options) { @@ -2401,6 +2413,18 @@ func TestUpdateSnapshot_ListTagsForResource(t *testing.T) { } } +func TestUpdateSnapshot_ListVersions(t *testing.T) { + svc := New(Options{}) + _, err := svc.ListVersions(context.Background(), nil, func(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + return updateSnapshot(stack, "ListVersions") + }) + }) + if _, ok := err.(snapshotOK); !ok && err != nil { + t.Fatal(err) + } +} + func TestUpdateSnapshot_PurchaseOffering(t *testing.T) { svc := New(Options{}) _, err := svc.PurchaseOffering(context.Background(), nil, func(o *Options) { diff --git a/service/medialive/types/types.go b/service/medialive/types/types.go index 242fd492205..1adcb22df98 100644 --- a/service/medialive/types/types.go +++ b/service/medialive/types/types.go @@ -1179,6 +1179,9 @@ type Channel struct { // SINGLE_PIPELINE for a channel with one pipeline. ChannelClass ChannelClass + // Requested engine version for this channel. + ChannelEngineVersion *ChannelEngineVersionResponse + // A list of destinations of the channel. For UDP outputs, there is one // destination per output. For other types (HLS, for example), there is one // destination per packager. @@ -1238,6 +1241,28 @@ type ChannelEgressEndpoint struct { noSmithyDocumentSerde } +// Placeholder documentation for ChannelEngineVersionRequest +type ChannelEngineVersionRequest struct { + + // The build identifier of the engine version to use for this channel. Specify + // 'DEFAULT' to reset to the default version. + Version *string + + noSmithyDocumentSerde +} + +// Placeholder documentation for ChannelEngineVersionResponse +type ChannelEngineVersionResponse struct { + + // The UTC time when the version expires. + ExpirationDate *time.Time + + // The build identifier for this version of the channel version. + Version *string + + noSmithyDocumentSerde +} + // Placeholder documentation for ChannelSummary type ChannelSummary struct { @@ -1254,6 +1279,9 @@ type ChannelSummary struct { // SINGLE_PIPELINE for a channel with one pipeline. ChannelClass ChannelClass + // The engine version that you requested for this channel. + ChannelEngineVersion *ChannelEngineVersionResponse + // A list of destinations of the channel. For UDP outputs, there is one // destination per output. For other types (HLS, for example), there is one // destination per packager. @@ -1292,6 +1320,9 @@ type ChannelSummary struct { // A collection of key-value pairs. Tags map[string]string + // The engine version that the running pipelines are using. + UsedChannelEngineVersions []ChannelEngineVersionResponse + // Settings for any VPC outputs. Vpc *VpcOutputSettingsDescription @@ -6135,6 +6166,9 @@ type PipelineDetail struct { // The current URI being used for HTML5 motion graphics for this pipeline. ActiveMotionGraphicsUri *string + // Current engine version of the encoder for this pipeline. + ChannelEngineVersion *ChannelEngineVersionResponse + // Pipeline ID PipelineId *string diff --git a/service/organizations/internal/endpoints/endpoints.go b/service/organizations/internal/endpoints/endpoints.go index ca2f175d598..5d64994b22b 100644 --- a/service/organizations/internal/endpoints/endpoints.go +++ b/service/organizations/internal/endpoints/endpoints.go @@ -232,8 +232,19 @@ var defaultPartitions = endpoints.Partitions{ SignatureVersions: []string{"v4"}, }, }, - RegionRegex: partitionRegexp.AwsIso, - IsRegionalized: true, + RegionRegex: partitionRegexp.AwsIso, + IsRegionalized: false, + PartitionEndpoint: "aws-iso-global", + Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "aws-iso-global", + }: endpoints.Endpoint{ + Hostname: "organizations.us-iso-east-1.c2s.ic.gov", + CredentialScope: endpoints.CredentialScope{ + Region: "us-iso-east-1", + }, + }, + }, }, { ID: "aws-iso-b", diff --git a/service/qconnect/deserializers.go b/service/qconnect/deserializers.go index d71e3295f10..ab933d0d628 100644 --- a/service/qconnect/deserializers.go +++ b/service/qconnect/deserializers.go @@ -16124,6 +16124,15 @@ func awsRestjson1_deserializeDocumentAnswerRecommendationAIAgentConfiguration(v sv.IntentLabelingGenerationAIPromptId = ptr.String(jtv) } + case "locale": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NonEmptyString to be of type string, got %T instead", value) + } + sv.Locale = ptr.String(jtv) + } + case "queryReformulationAIPromptId": if value != nil { jtv, ok := value.(string) @@ -21457,6 +21466,15 @@ func awsRestjson1_deserializeDocumentManualSearchAIAgentConfiguration(v **types. return err } + case "locale": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NonEmptyString to be of type string, got %T instead", value) + } + sv.Locale = ptr.String(jtv) + } + default: _, _ = key, value diff --git a/service/qconnect/serializers.go b/service/qconnect/serializers.go index e1d29779e24..de93a6f9b4d 100644 --- a/service/qconnect/serializers.go +++ b/service/qconnect/serializers.go @@ -9137,6 +9137,11 @@ func awsRestjson1_serializeDocumentAnswerRecommendationAIAgentConfiguration(v *t ok.String(*v.IntentLabelingGenerationAIPromptId) } + if v.Locale != nil { + ok := object.Key("locale") + ok.String(*v.Locale) + } + if v.QueryReformulationAIPromptId != nil { ok := object.Key("queryReformulationAIPromptId") ok.String(*v.QueryReformulationAIPromptId) @@ -10270,6 +10275,11 @@ func awsRestjson1_serializeDocumentManualSearchAIAgentConfiguration(v *types.Man } } + if v.Locale != nil { + ok := object.Key("locale") + ok.String(*v.Locale) + } + return nil } diff --git a/service/qconnect/types/types.go b/service/qconnect/types/types.go index 0df94298ba1..5cc9d662593 100644 --- a/service/qconnect/types/types.go +++ b/service/qconnect/types/types.go @@ -622,6 +622,16 @@ type AnswerRecommendationAIAgentConfiguration struct { // ANSWER_RECOMMENDATION AI Agent. IntentLabelingGenerationAIPromptId *string + // The locale to which specifies the language and region settings that determine + // the response language for [QueryAssistant]. + // + // Changing this locale to anything other than en_US will turn off recommendations + // triggered by contact transcripts for agent assistance, as this feature is not + // supported in multiple languages. + // + // [QueryAssistant]: https://docs.aws.amazon.com/connect/latest/APIReference/API_amazon-q-connect_QueryAssistant.html + Locale *string + // The AI Prompt identifier for the Query Reformulation prompt used by the // ANSWER_RECOMMENDATION AI Agent. QueryReformulationAIPromptId *string @@ -2137,7 +2147,7 @@ type GuardrailPiiEntityConfig struct { // // - Finance // - // - REDIT_DEBIT_CARD_CVV + // - CREDIT_DEBIT_CARD_CVV // // A three-digit card verification code (CVV) that is present on VISA, MasterCard, // and Discover credit and debit cards. For American Express credit or debit cards, @@ -2722,6 +2732,12 @@ type ManualSearchAIAgentConfiguration struct { // The association configurations for overriding behavior on this AI Agent. AssociationConfigurations []AssociationConfiguration + // The locale to which specifies the language and region settings that determine + // the response language for [QueryAssistant]. + // + // [QueryAssistant]: https://docs.aws.amazon.com/connect/latest/APIReference/API_amazon-q-connect_QueryAssistant.html + Locale *string + noSmithyDocumentSerde } diff --git a/service/ssmsap/api_op_RegisterApplication.go b/service/ssmsap/api_op_RegisterApplication.go index 5c78bf4a2e8..ab939039622 100644 --- a/service/ssmsap/api_op_RegisterApplication.go +++ b/service/ssmsap/api_op_RegisterApplication.go @@ -54,6 +54,12 @@ type RegisterApplicationInput struct { // This member is required. Instances []string + // This is an optional parameter for component details to which the SAP ABAP + // application is attached, such as Web Dispatcher. + // + // This is an array of ApplicationComponent objects. You may input 0 to 5 items. + ComponentsInfo []types.ComponentInfo + // The credentials of the SAP application. Credentials []types.ApplicationCredential diff --git a/service/ssmsap/serializers.go b/service/ssmsap/serializers.go index a468403bf6a..d00f66c86b2 100644 --- a/service/ssmsap/serializers.go +++ b/service/ssmsap/serializers.go @@ -1348,6 +1348,13 @@ func awsRestjson1_serializeOpDocumentRegisterApplicationInput(v *RegisterApplica ok.String(string(v.ApplicationType)) } + if v.ComponentsInfo != nil { + ok := object.Key("ComponentsInfo") + if err := awsRestjson1_serializeDocumentComponentInfoList(v.ComponentsInfo, ok); err != nil { + return err + } + } + if v.Credentials != nil { ok := object.Key("Credentials") if err := awsRestjson1_serializeDocumentApplicationCredentialList(v.Credentials, ok); err != nil { @@ -1972,6 +1979,41 @@ func awsRestjson1_serializeDocumentBackintConfig(v *types.BackintConfig, value s return nil } +func awsRestjson1_serializeDocumentComponentInfo(v *types.ComponentInfo, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.ComponentType) > 0 { + ok := object.Key("ComponentType") + ok.String(string(v.ComponentType)) + } + + if v.Ec2InstanceId != nil { + ok := object.Key("Ec2InstanceId") + ok.String(*v.Ec2InstanceId) + } + + if v.Sid != nil { + ok := object.Key("Sid") + ok.String(*v.Sid) + } + + return nil +} + +func awsRestjson1_serializeDocumentComponentInfoList(v []types.ComponentInfo, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsRestjson1_serializeDocumentComponentInfo(&v[i], av); err != nil { + return err + } + } + return nil +} + func awsRestjson1_serializeDocumentFilter(v *types.Filter, value smithyjson.Value) error { object := value.Object() defer object.Close() diff --git a/service/ssmsap/types/types.go b/service/ssmsap/types/types.go index 5e9c3e16c27..de5531369c9 100644 --- a/service/ssmsap/types/types.go +++ b/service/ssmsap/types/types.go @@ -214,6 +214,34 @@ type Component struct { noSmithyDocumentSerde } +// This is information about the component of your SAP application, such as Web +// Dispatcher. +type ComponentInfo struct { + + // This string is the type of the component. + // + // Accepted value is WD . + // + // This member is required. + ComponentType ComponentType + + // This is the Amazon EC2 instance on which your SAP component is running. + // + // Accepted values are alphanumeric. + // + // This member is required. + Ec2InstanceId *string + + // This string is the SAP System ID of the component. + // + // Accepted values are alphanumeric. + // + // This member is required. + Sid *string + + noSmithyDocumentSerde +} + // The summary of the component. type ComponentSummary struct { diff --git a/service/ssmsap/validators.go b/service/ssmsap/validators.go index 652efc94b5f..6ce53dbf341 100644 --- a/service/ssmsap/validators.go +++ b/service/ssmsap/validators.go @@ -474,6 +474,44 @@ func validateBackintConfig(v *types.BackintConfig) error { } } +func validateComponentInfo(v *types.ComponentInfo) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ComponentInfo"} + if len(v.ComponentType) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("ComponentType")) + } + if v.Sid == nil { + invalidParams.Add(smithy.NewErrParamRequired("Sid")) + } + if v.Ec2InstanceId == nil { + invalidParams.Add(smithy.NewErrParamRequired("Ec2InstanceId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateComponentInfoList(v []types.ComponentInfo) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ComponentInfoList"} + for i := range v { + if err := validateComponentInfo(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateFilter(v *types.Filter) error { if v == nil { return nil @@ -702,6 +740,11 @@ func validateOpRegisterApplicationInput(v *RegisterApplicationInput) error { invalidParams.AddNested("Credentials", err.(smithy.InvalidParamsError)) } } + if v.ComponentsInfo != nil { + if err := validateComponentInfoList(v.ComponentsInfo); err != nil { + invalidParams.AddNested("ComponentsInfo", err.(smithy.InvalidParamsError)) + } + } if invalidParams.Len() > 0 { return invalidParams } else { diff --git a/service/workspaces/deserializers.go b/service/workspaces/deserializers.go index 053a4533497..99cdc61afc9 100644 --- a/service/workspaces/deserializers.go +++ b/service/workspaces/deserializers.go @@ -13745,6 +13745,104 @@ func awsAwsjson11_deserializeDocumentFailedWorkspaceChangeRequest(v **types.Fail return nil } +func awsAwsjson11_deserializeDocumentGlobalAcceleratorForDirectory(v **types.GlobalAcceleratorForDirectory, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.GlobalAcceleratorForDirectory + if *v == nil { + sv = &types.GlobalAcceleratorForDirectory{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Mode": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AGAModeForDirectoryEnum to be of type string, got %T instead", value) + } + sv.Mode = types.AGAModeForDirectoryEnum(jtv) + } + + case "PreferredProtocol": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AGAPreferredProtocolForDirectory to be of type string, got %T instead", value) + } + sv.PreferredProtocol = types.AGAPreferredProtocolForDirectory(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentGlobalAcceleratorForWorkSpace(v **types.GlobalAcceleratorForWorkSpace, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.GlobalAcceleratorForWorkSpace + if *v == nil { + sv = &types.GlobalAcceleratorForWorkSpace{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "Mode": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AGAModeForWorkSpaceEnum to be of type string, got %T instead", value) + } + sv.Mode = types.AGAModeForWorkSpaceEnum(jtv) + } + + case "PreferredProtocol": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AGAPreferredProtocolForWorkSpace to be of type string, got %T instead", value) + } + sv.PreferredProtocol = types.AGAPreferredProtocolForWorkSpace(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsAwsjson11_deserializeDocumentIDCConfig(v **types.IDCConfig, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -15855,6 +15953,11 @@ func awsAwsjson11_deserializeDocumentStreamingProperties(v **types.StreamingProp for key, value := range shape { switch key { + case "GlobalAccelerator": + if err := awsAwsjson11_deserializeDocumentGlobalAcceleratorForDirectory(&sv.GlobalAccelerator, value); err != nil { + return err + } + case "StorageConnectors": if err := awsAwsjson11_deserializeDocumentStorageConnectors(&sv.StorageConnectors, value); err != nil { return err @@ -17558,6 +17661,11 @@ func awsAwsjson11_deserializeDocumentWorkspaceProperties(v **types.WorkspaceProp sv.ComputeTypeName = types.Compute(jtv) } + case "GlobalAccelerator": + if err := awsAwsjson11_deserializeDocumentGlobalAcceleratorForWorkSpace(&sv.GlobalAccelerator, value); err != nil { + return err + } + case "OperatingSystemName": if value != nil { jtv, ok := value.(string) diff --git a/service/workspaces/serializers.go b/service/workspaces/serializers.go index 08da72db4c6..d2b3e443926 100644 --- a/service/workspaces/serializers.go +++ b/service/workspaces/serializers.go @@ -5727,6 +5727,40 @@ func awsAwsjson11_serializeDocumentDirectoryIdList(v []string, value smithyjson. return nil } +func awsAwsjson11_serializeDocumentGlobalAcceleratorForDirectory(v *types.GlobalAcceleratorForDirectory, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.Mode) > 0 { + ok := object.Key("Mode") + ok.String(string(v.Mode)) + } + + if len(v.PreferredProtocol) > 0 { + ok := object.Key("PreferredProtocol") + ok.String(string(v.PreferredProtocol)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentGlobalAcceleratorForWorkSpace(v *types.GlobalAcceleratorForWorkSpace, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.Mode) > 0 { + ok := object.Key("Mode") + ok.String(string(v.Mode)) + } + + if len(v.PreferredProtocol) > 0 { + ok := object.Key("PreferredProtocol") + ok.String(string(v.PreferredProtocol)) + } + + return nil +} + func awsAwsjson11_serializeDocumentImageAssociatedResourceTypeList(v []types.ImageAssociatedResourceType, value smithyjson.Value) error { array := value.Array() defer array.Close() @@ -6153,6 +6187,13 @@ func awsAwsjson11_serializeDocumentStreamingProperties(v *types.StreamingPropert object := value.Object() defer object.Close() + if v.GlobalAccelerator != nil { + ok := object.Key("GlobalAccelerator") + if err := awsAwsjson11_serializeDocumentGlobalAcceleratorForDirectory(v.GlobalAccelerator, ok); err != nil { + return err + } + } + if v.StorageConnectors != nil { ok := object.Key("StorageConnectors") if err := awsAwsjson11_serializeDocumentStorageConnectors(v.StorageConnectors, ok); err != nil { @@ -6474,6 +6515,13 @@ func awsAwsjson11_serializeDocumentWorkspaceProperties(v *types.WorkspacePropert ok.String(string(v.ComputeTypeName)) } + if v.GlobalAccelerator != nil { + ok := object.Key("GlobalAccelerator") + if err := awsAwsjson11_serializeDocumentGlobalAcceleratorForWorkSpace(v.GlobalAccelerator, ok); err != nil { + return err + } + } + if len(v.OperatingSystemName) > 0 { ok := object.Key("OperatingSystemName") ok.String(string(v.OperatingSystemName)) diff --git a/service/workspaces/types/enums.go b/service/workspaces/types/enums.go index 92b3ea72fbf..9fcc7595a0e 100644 --- a/service/workspaces/types/enums.go +++ b/service/workspaces/types/enums.go @@ -46,6 +46,88 @@ func (AccountLinkStatusEnum) Values() []AccountLinkStatusEnum { } } +type AGAModeForDirectoryEnum string + +// Enum values for AGAModeForDirectoryEnum +const ( + AGAModeForDirectoryEnumEnabledAuto AGAModeForDirectoryEnum = "ENABLED_AUTO" + AGAModeForDirectoryEnumDisabled AGAModeForDirectoryEnum = "DISABLED" +) + +// Values returns all known values for AGAModeForDirectoryEnum. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (AGAModeForDirectoryEnum) Values() []AGAModeForDirectoryEnum { + return []AGAModeForDirectoryEnum{ + "ENABLED_AUTO", + "DISABLED", + } +} + +type AGAModeForWorkSpaceEnum string + +// Enum values for AGAModeForWorkSpaceEnum +const ( + AGAModeForWorkSpaceEnumEnabledAuto AGAModeForWorkSpaceEnum = "ENABLED_AUTO" + AGAModeForWorkSpaceEnumDisabled AGAModeForWorkSpaceEnum = "DISABLED" + AGAModeForWorkSpaceEnumInherited AGAModeForWorkSpaceEnum = "INHERITED" +) + +// Values returns all known values for AGAModeForWorkSpaceEnum. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (AGAModeForWorkSpaceEnum) Values() []AGAModeForWorkSpaceEnum { + return []AGAModeForWorkSpaceEnum{ + "ENABLED_AUTO", + "DISABLED", + "INHERITED", + } +} + +type AGAPreferredProtocolForDirectory string + +// Enum values for AGAPreferredProtocolForDirectory +const ( + AGAPreferredProtocolForDirectoryTcp AGAPreferredProtocolForDirectory = "TCP" + AGAPreferredProtocolForDirectoryNone AGAPreferredProtocolForDirectory = "NONE" +) + +// Values returns all known values for AGAPreferredProtocolForDirectory. Note that +// this can be expanded in the future, and so it is only as up to date as the +// client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (AGAPreferredProtocolForDirectory) Values() []AGAPreferredProtocolForDirectory { + return []AGAPreferredProtocolForDirectory{ + "TCP", + "NONE", + } +} + +type AGAPreferredProtocolForWorkSpace string + +// Enum values for AGAPreferredProtocolForWorkSpace +const ( + AGAPreferredProtocolForWorkSpaceTcp AGAPreferredProtocolForWorkSpace = "TCP" + AGAPreferredProtocolForWorkSpaceNone AGAPreferredProtocolForWorkSpace = "NONE" + AGAPreferredProtocolForWorkSpaceInherited AGAPreferredProtocolForWorkSpace = "INHERITED" +) + +// Values returns all known values for AGAPreferredProtocolForWorkSpace. Note that +// this can be expanded in the future, and so it is only as up to date as the +// client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (AGAPreferredProtocolForWorkSpace) Values() []AGAPreferredProtocolForWorkSpace { + return []AGAPreferredProtocolForWorkSpace{ + "TCP", + "NONE", + "INHERITED", + } +} + type Application string // Enum values for Application diff --git a/service/workspaces/types/types.go b/service/workspaces/types/types.go index 9ecec3d1bb8..6ec550a39bc 100644 --- a/service/workspaces/types/types.go +++ b/service/workspaces/types/types.go @@ -608,6 +608,35 @@ type FailedWorkspaceChangeRequest struct { noSmithyDocumentSerde } +// Describes the Global Accelerator for directory +type GlobalAcceleratorForDirectory struct { + + // Indicates if Global Accelerator for directory is enabled or disabled. + // + // This member is required. + Mode AGAModeForDirectoryEnum + + // Indicates the preferred protocol for Global Accelerator. + PreferredProtocol AGAPreferredProtocolForDirectory + + noSmithyDocumentSerde +} + +// Describes the Global Accelerator for WorkSpaces. +type GlobalAcceleratorForWorkSpace struct { + + // Indicates if Global Accelerator for WorkSpaces is enabled, disabled, or the + // same mode as the associated directory. + // + // This member is required. + Mode AGAModeForWorkSpaceEnum + + // Indicates the preferred protocol for Global Accelerator. + PreferredProtocol AGAPreferredProtocolForWorkSpace + + noSmithyDocumentSerde +} + // Specifies the configurations of the identity center. type IDCConfig struct { @@ -1082,6 +1111,9 @@ type StorageConnector struct { // Describes the streaming properties. type StreamingProperties struct { + // Indicates the Global Accelerator properties. + GlobalAccelerator *GlobalAcceleratorForDirectory + // Indicates the storage connector used StorageConnectors []StorageConnector @@ -1663,6 +1695,9 @@ type WorkspaceProperties struct { // [Amazon WorkSpaces Bundles]: http://aws.amazon.com/workspaces/details/#Amazon_WorkSpaces_Bundles ComputeTypeName Compute + // Indicates the Global Accelerator properties. + GlobalAccelerator *GlobalAcceleratorForWorkSpace + // The name of the operating system. OperatingSystemName OperatingSystemName diff --git a/service/workspaces/validators.go b/service/workspaces/validators.go index c9aa088ab2b..d54c71cce73 100644 --- a/service/workspaces/validators.go +++ b/service/workspaces/validators.go @@ -1925,6 +1925,36 @@ func validateDescribeWorkspacesPoolsFilters(v []types.DescribeWorkspacesPoolsFil } } +func validateGlobalAcceleratorForDirectory(v *types.GlobalAcceleratorForDirectory) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "GlobalAcceleratorForDirectory"} + if len(v.Mode) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Mode")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateGlobalAcceleratorForWorkSpace(v *types.GlobalAcceleratorForWorkSpace) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "GlobalAcceleratorForWorkSpace"} + if len(v.Mode) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Mode")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateRebootRequest(v *types.RebootRequest) error { if v == nil { return nil @@ -2094,6 +2124,11 @@ func validateStreamingProperties(v *types.StreamingProperties) error { invalidParams.AddNested("StorageConnectors", err.(smithy.InvalidParamsError)) } } + if v.GlobalAccelerator != nil { + if err := validateGlobalAcceleratorForDirectory(v.GlobalAccelerator); err != nil { + invalidParams.AddNested("GlobalAccelerator", err.(smithy.InvalidParamsError)) + } + } if invalidParams.Len() > 0 { return invalidParams } else { @@ -2215,6 +2250,23 @@ func validateUserStorage(v *types.UserStorage) error { } } +func validateWorkspaceProperties(v *types.WorkspaceProperties) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "WorkspaceProperties"} + if v.GlobalAccelerator != nil { + if err := validateGlobalAcceleratorForWorkSpace(v.GlobalAccelerator); err != nil { + invalidParams.AddNested("GlobalAccelerator", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateWorkspaceRequest(v *types.WorkspaceRequest) error { if v == nil { return nil @@ -2229,6 +2281,11 @@ func validateWorkspaceRequest(v *types.WorkspaceRequest) error { if v.BundleId == nil { invalidParams.Add(smithy.NewErrParamRequired("BundleId")) } + if v.WorkspaceProperties != nil { + if err := validateWorkspaceProperties(v.WorkspaceProperties); err != nil { + invalidParams.AddNested("WorkspaceProperties", err.(smithy.InvalidParamsError)) + } + } if v.Tags != nil { if err := validateTagList(v.Tags); err != nil { invalidParams.AddNested("Tags", err.(smithy.InvalidParamsError)) @@ -3272,6 +3329,11 @@ func validateOpModifyWorkspacePropertiesInput(v *ModifyWorkspacePropertiesInput) if v.WorkspaceId == nil { invalidParams.Add(smithy.NewErrParamRequired("WorkspaceId")) } + if v.WorkspaceProperties != nil { + if err := validateWorkspaceProperties(v.WorkspaceProperties); err != nil { + invalidParams.AddNested("WorkspaceProperties", err.(smithy.InvalidParamsError)) + } + } if invalidParams.Len() > 0 { return invalidParams } else {