diff --git a/.changelog/34538f00ed0d4369a455266c89ef0f8e.json b/.changelog/34538f00ed0d4369a455266c89ef0f8e.json new file mode 100644 index 00000000000..5950f8dfe91 --- /dev/null +++ b/.changelog/34538f00ed0d4369a455266c89ef0f8e.json @@ -0,0 +1,8 @@ +{ + "id": "34538f00-ed0d-4369-a455-266c89ef0f8e", + "type": "feature", + "description": "This release adds support for waiters to fail on AccessDeniedException when having insufficient permissions", + "modules": [ + "service/acmpca" + ] +} \ No newline at end of file diff --git a/.changelog/3536cf12d5f24eae8f227b3329d2a970.json b/.changelog/3536cf12d5f24eae8f227b3329d2a970.json new file mode 100644 index 00000000000..4862add9cbb --- /dev/null +++ b/.changelog/3536cf12d5f24eae8f227b3329d2a970.json @@ -0,0 +1,8 @@ +{ + "id": "3536cf12-d5f2-4eae-8f22-7b3329d2a970", + "type": "feature", + "description": "AWS MSK support for Broker Removal.", + "modules": [ + "service/kafka" + ] +} \ No newline at end of file diff --git a/.changelog/42187b8a7e724c1384b6a9ab26c8c5f1.json b/.changelog/42187b8a7e724c1384b6a9ab26c8c5f1.json new file mode 100644 index 00000000000..8b25b3b2c6b --- /dev/null +++ b/.changelog/42187b8a7e724c1384b6a9ab26c8c5f1.json @@ -0,0 +1,8 @@ +{ + "id": "42187b8a-7e72-4c13-84b6-a9ab26c8c5f1", + "type": "feature", + "description": "Amazon MWAA now supports Airflow web server auto scaling to automatically handle increased demand from REST APIs, Command Line Interface (CLI), or more Airflow User Interface (UI) users. Customers can specify maximum and minimum web server instances during environment creation and update workflow.", + "modules": [ + "service/mwaa" + ] +} \ No newline at end of file diff --git a/.changelog/968f24dade7d447490fd9b7790b95f5c.json b/.changelog/968f24dade7d447490fd9b7790b95f5c.json new file mode 100644 index 00000000000..cd06b05e48d --- /dev/null +++ b/.changelog/968f24dade7d447490fd9b7790b95f5c.json @@ -0,0 +1,8 @@ +{ + "id": "968f24da-de7d-4474-90fd-9b7790b95f5c", + "type": "documentation", + "description": "Documentation updates for AWS Secrets Manager", + "modules": [ + "service/secretsmanager" + ] +} \ No newline at end of file diff --git a/.changelog/cc412d088bdc44988b101d6cde1ae180.json b/.changelog/cc412d088bdc44988b101d6cde1ae180.json new file mode 100644 index 00000000000..6c5543f7ea9 --- /dev/null +++ b/.changelog/cc412d088bdc44988b101d6cde1ae180.json @@ -0,0 +1,8 @@ +{ + "id": "cc412d08-8bdc-4498-8b10-1d6cde1ae180", + "type": "feature", + "description": "This release adds DescribeKeyRegistration and UpdateKeyRegistration APIs to manage QuickSight Customer Managed Keys (CMK).", + "modules": [ + "service/quicksight" + ] +} \ No newline at end of file diff --git a/.changelog/de5ea510479c4b7983513b6661e85d81.json b/.changelog/de5ea510479c4b7983513b6661e85d81.json new file mode 100644 index 00000000000..faf0ed647a8 --- /dev/null +++ b/.changelog/de5ea510479c4b7983513b6661e85d81.json @@ -0,0 +1,8 @@ +{ + "id": "de5ea510-479c-4b79-8351-3b6661e85d81", + "type": "feature", + "description": "Introduced WorkerAccessConfiguration to SageMaker Workteam. This allows customers to configure resource access for workers in a workteam.", + "modules": [ + "service/sagemaker" + ] +} \ No newline at end of file diff --git a/.changelog/eafbae005fb541c19e77f512cee6818a.json b/.changelog/eafbae005fb541c19e77f512cee6818a.json new file mode 100644 index 00000000000..2579fb2d1f2 --- /dev/null +++ b/.changelog/eafbae005fb541c19e77f512cee6818a.json @@ -0,0 +1,8 @@ +{ + "id": "eafbae00-5fb5-41c1-9e77-f512cee6818a", + "type": "documentation", + "description": "Adding Contact Flow metrics to the GetMetricDataV2 API", + "modules": [ + "service/connect" + ] +} \ No newline at end of file diff --git a/service/acmpca/api_op_DescribeCertificateAuthorityAuditReport.go b/service/acmpca/api_op_DescribeCertificateAuthorityAuditReport.go index e86472f9608..786effade34 100644 --- a/service/acmpca/api_op_DescribeCertificateAuthorityAuditReport.go +++ b/service/acmpca/api_op_DescribeCertificateAuthorityAuditReport.go @@ -4,9 +4,11 @@ package acmpca import ( "context" + "errors" "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/service/acmpca/types" + smithy "github.com/aws/smithy-go" "github.com/aws/smithy-go/middleware" smithytime "github.com/aws/smithy-go/time" smithyhttp "github.com/aws/smithy-go/transport/http" @@ -351,6 +353,18 @@ func auditReportCreatedStateRetryable(ctx context.Context, input *DescribeCertif } } + if err != nil { + var apiErr smithy.APIError + ok := errors.As(err, &apiErr) + if !ok { + return false, fmt.Errorf("expected err to be of type smithy.APIError, got %w", err) + } + + if "AccessDeniedException" == apiErr.ErrorCode() { + return false, fmt.Errorf("waiter state transitioned to Failure") + } + } + return true, nil } diff --git a/service/acmpca/api_op_GetCertificate.go b/service/acmpca/api_op_GetCertificate.go index 99cd87cadfe..11a306e76e6 100644 --- a/service/acmpca/api_op_GetCertificate.go +++ b/service/acmpca/api_op_GetCertificate.go @@ -8,6 +8,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/service/acmpca/types" + smithy "github.com/aws/smithy-go" "github.com/aws/smithy-go/middleware" smithytime "github.com/aws/smithy-go/time" smithyhttp "github.com/aws/smithy-go/transport/http" @@ -330,6 +331,18 @@ func certificateIssuedStateRetryable(ctx context.Context, input *GetCertificateI } } + if err != nil { + var apiErr smithy.APIError + ok := errors.As(err, &apiErr) + if !ok { + return false, fmt.Errorf("expected err to be of type smithy.APIError, got %w", err) + } + + if "AccessDeniedException" == apiErr.ErrorCode() { + return false, fmt.Errorf("waiter state transitioned to Failure") + } + } + return true, nil } diff --git a/service/acmpca/api_op_GetCertificateAuthorityCsr.go b/service/acmpca/api_op_GetCertificateAuthorityCsr.go index b2b2a6bed8f..a1c87ccd862 100644 --- a/service/acmpca/api_op_GetCertificateAuthorityCsr.go +++ b/service/acmpca/api_op_GetCertificateAuthorityCsr.go @@ -8,6 +8,7 @@ import ( "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/service/acmpca/types" + smithy "github.com/aws/smithy-go" "github.com/aws/smithy-go/middleware" smithytime "github.com/aws/smithy-go/time" smithyhttp "github.com/aws/smithy-go/transport/http" @@ -321,6 +322,18 @@ func certificateAuthorityCSRCreatedStateRetryable(ctx context.Context, input *Ge } } + if err != nil { + var apiErr smithy.APIError + ok := errors.As(err, &apiErr) + if !ok { + return false, fmt.Errorf("expected err to be of type smithy.APIError, got %w", err) + } + + if "AccessDeniedException" == apiErr.ErrorCode() { + return false, fmt.Errorf("waiter state transitioned to Failure") + } + } + return true, nil } diff --git a/service/connect/api_op_CreatePrompt.go b/service/connect/api_op_CreatePrompt.go index 6b6491ef7f7..bfc7a5fc307 100644 --- a/service/connect/api_op_CreatePrompt.go +++ b/service/connect/api_op_CreatePrompt.go @@ -11,7 +11,7 @@ import ( ) // Creates a prompt. For more information about prompts, such as supported file -// types and maximum length, see [Create prompts]in the Amazon Connect Administrator's Guide. +// types and maximum length, see [Create prompts]in the Amazon Connect Administrator Guide. // // [Create prompts]: https://docs.aws.amazon.com/connect/latest/adminguide/prompts.html func (c *Client) CreatePrompt(ctx context.Context, params *CreatePromptInput, optFns ...func(*Options)) (*CreatePromptOutput, error) { diff --git a/service/connect/api_op_GetMetricDataV2.go b/service/connect/api_op_GetMetricDataV2.go index 7e475d4d762..10580b8e2f5 100644 --- a/service/connect/api_op_GetMetricDataV2.go +++ b/service/connect/api_op_GetMetricDataV2.go @@ -21,7 +21,7 @@ import ( // at varying intervals. // // For a description of the historical metrics that are supported by -// GetMetricDataV2 and GetMetricData , see [Historical metrics definitions] in the Amazon Connect Administrator's +// GetMetricDataV2 and GetMetricData , see [Historical metrics definitions] in the Amazon Connect Administrator // Guide. // // [Historical metrics definitions]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html @@ -53,34 +53,36 @@ type GetMetricDataV2Input struct { // The filters to apply to returned metrics. You can filter on the following // resources: // - // - Queues - // - // - Routing profiles - // // - Agents // // - Channels // - // - User hierarchy groups - // // - Feature // + // - Queues + // + // - Routing profiles + // // - Routing step expression // + // - User hierarchy groups + // // At least one filter must be passed from queues, routing profiles, agents, or // user hierarchy groups. // - // To filter by phone number, see [Create a historical metrics report] in the Amazon Connect Administrator's Guide. + // To filter by phone number, see [Create a historical metrics report] in the Amazon Connect Administrator Guide. // // Note the following limits: // // - Filter keys: A maximum of 5 filter keys are supported in a single request. - // Valid filter keys: QUEUE | ROUTING_PROFILE | AGENT | CHANNEL | - // AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | - // AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | - // AGENT_HIERARCHY_LEVEL_FIVE | FEATURE | CASE_TEMPLATE_ARN | CASE_STATUS | - // contact/segmentAttributes/connect:Subtype | ROUTING_STEP_EXPRESSION | - // Q_CONNECT_ENABLED + // Valid filter keys: AGENT | AGENT_HIERARCHY_LEVEL_ONE | + // AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | + // AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE | CASE_TEMPLATE_ARN | + // CASE_STATUS | CHANNEL | contact/segmentAttributes/connect:Subtype | FEATURE | + // FLOW_TYPE | FLOWS_NEXT_RESOURCE_ID | FLOWS_NEXT_RESOURCE_QUEUE_ID | + // FLOWS_OUTCOME_TYPE | FLOWS_RESOURCE_ID | INITIATION_METHOD | + // RESOURCE_PUBLISHED_TIMESTAMP | ROUTING_PROFILE | ROUTING_STEP_EXPRESSION | + // QUEUE | Q_CONNECT_ENABLED | // // - Filter values: A maximum of 100 filter values are supported in a single // request. VOICE, CHAT, and TASK are valid filterValue for the CHANNEL filter @@ -118,7 +120,7 @@ type GetMetricDataV2Input struct { // The metrics to retrieve. Specify the name, groupings, and filters for each // metric. The following historical metrics are available. For a description of - // each metric, see [Historical metrics definitions]in the Amazon Connect Administrator's Guide. + // each metric, see [Historical metrics definitions]in the Amazon Connect Administrator Guide. // // ABANDONMENT_RATE Unit: Percent // @@ -269,6 +271,15 @@ type GetMetricDataV2Input struct { // // UI name: [Average conversation duration] // + // AVG_FLOW_TIME Unit: Seconds + // + // Valid groupings and filters: Channel, + // contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, + // Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows + // resource ID, Initiation method, Resource published timestamp + // + // UI name: [Average flow time] + // // AVG_GREETING_TIME_AGENT This metric is available only for contacts analyzed by // Contact Lens conversational analytics. // @@ -418,12 +429,37 @@ type GetMetricDataV2Input struct { // // CONTACTS_ABANDONED Unit: Count // + // Metric filter: + // + // - Valid values: API | Incoming | Outbound | Transfer | Callback | + // Queue_Transfer | Disconnect + // // Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent // Hierarchy, contact/segmentAttributes/connect:Subtype, RoutingStepExpression, Q // in Connect // // UI name: [Contact abandoned] // + // CONTACTS_ABANDONED_IN_X Unit: Count + // + // Valid groupings and filters: Queue, Channel, Routing Profile, + // contact/segmentAttributes/connect:Subtype, Q in Connect + // + // Threshold: For ThresholdValue , enter any whole number from 1 to 604800 + // (inclusive), in seconds. For Comparison , you must enter LT (for "Less than"). + // + // UI name: [Contacts abandoned in X seconds] + // + // CONTACTS_ANSWERED_IN_X Unit: Count + // + // Valid groupings and filters: Queue, Channel, Routing Profile, + // contact/segmentAttributes/connect:Subtype, Q in Connect + // + // Threshold: For ThresholdValue , enter any whole number from 1 to 604800 + // (inclusive), in seconds. For Comparison , you must enter LT (for "Less than"). + // + // UI name: [Contacts answered in X seconds] + // // CONTACTS_CREATED Unit: Count // // Valid metric filter key: INITIATION_METHOD @@ -553,6 +589,32 @@ type GetMetricDataV2Input struct { // // UI name: [Current cases] // + // FLOWS_OUTCOME Unit: Count + // + // Valid groupings and filters: Channel, + // contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, + // Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows + // resource ID, Initiation method, Resource published timestamp + // + // UI name: [Flows outcome] + // + // FLOWS_STARTED Unit: Count + // + // Valid groupings and filters: Channel, + // contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, + // Flows resource ID, Initiation method, Resource published timestamp + // + // UI name: [Flows started] + // + // MAX_FLOW_TIME Unit: Seconds + // + // Valid groupings and filters: Channel, + // contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, + // Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows + // resource ID, Initiation method, Resource published timestamp + // + // UI name: [Maximum flow time] + // // MAX_QUEUED_TIME Unit: Seconds // // Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent @@ -560,6 +622,15 @@ type GetMetricDataV2Input struct { // // UI name: [Maximum queued time] // + // MIN_FLOW_TIME Unit: Seconds + // + // Valid groupings and filters: Channel, + // contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, + // Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows + // resource ID, Initiation method, Resource published timestamp + // + // UI name: [Minimum flow time] + // // PERCENT_CASES_FIRST_CONTACT_RESOLVED Unit: Percent // // Required filter key: CASE_TEMPLATE_ARN @@ -580,6 +651,19 @@ type GetMetricDataV2Input struct { // // UI name: Not available // + // PERCENT_FLOWS_OUTCOME Unit: Percent + // + // Valid metric filter key: FLOWS_OUTCOME_TYPE + // + // Valid groupings and filters: Channel, + // contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, + // Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows + // resource ID, Initiation method, Resource published timestamp + // + // UI name: [Flows outcome percentage]. + // + // The FLOWS_OUTCOME_TYPE is not a valid grouping. + // // PERCENT_NON_TALK_TIME This metric is available only for contacts analyzed by // Contact Lens conversational analytics. // @@ -686,26 +770,6 @@ type GetMetricDataV2Input struct { // // UI name: [Agent on contact time] // - // SUM_CONTACTS_ANSWERED_IN_X Unit: Count - // - // Valid groupings and filters: Queue, Channel, Routing Profile, - // contact/segmentAttributes/connect:Subtype, Q in Connect - // - // Threshold: For ThresholdValue , enter any whole number from 1 to 604800 - // (inclusive), in seconds. For Comparison , you must enter LT (for "Less than"). - // - // UI name: [Contacts answered in X seconds] - // - // SUM_CONTACTS_ABANDONED_IN_X Unit: Count - // - // Valid groupings and filters: Queue, Channel, Routing Profile, - // contact/segmentAttributes/connect:Subtype, Q in Connect - // - // Threshold: For ThresholdValue , enter any whole number from 1 to 604800 - // (inclusive), in seconds. For Comparison , you must enter LT (for "Less than"). - // - // UI name: [Contacts abandoned in X seconds] - // // SUM_CONTACTS_DISCONNECTED Valid metric filter key: DISCONNECT_REASON // // Unit: Count @@ -783,6 +847,7 @@ type GetMetricDataV2Input struct { // [Average queue abandon time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-queue-abandon-time-historical // [Contacts transferred out by agent]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-transferred-out-by-agent-historical // [Average agent API connecting time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#htm-avg-agent-api-connecting-time + // [Maximum flow time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#maximum-flow-time-historical // [Average contact duration]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-contact-duration-historical // [Non-adherent time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#non-adherent-time // [Average agent interaction and customer hold time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-agent-interaction-customer-hold-time-historical @@ -792,11 +857,13 @@ type GetMetricDataV2Input struct { // [Average conversation duration]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-conversation-duration-historical // [After contact work time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#acw-historical // [Average customer talk time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-talk-time-customer-historical + // [Flows outcome]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#flows-outcome-historical // [Contacts queued]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-queued-historical // [Occupancy]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#occupancy-historical // [Error status time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#error-status-time-historical // [Maximum queued time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#maximum-queued-time-historical // [Contacts answered in X seconds]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-answered-x-historical + // [Minimum flow time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#minimum-flow-time-historical // [Average active time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-active-time-historical // [Contacts transferred out queue]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-transferred-out-by-agent-historical // [Cases reopened]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#cases-reopened-historical @@ -809,13 +876,16 @@ type GetMetricDataV2Input struct { // [Agent on contact time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#agent-on-contact-time-historical // [Average non-talk time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html##average-non-talk-time-historical // [Average agent talk time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-talk-time-agent-historical + // [Flows started]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#flows-started-historical // [Average agent interruption time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-interruptions-time-agent-historical // [Contacts transferred out]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-transferred-out-historical // [Average contacts per case]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-contacts-case-historical // [Agent talk time percent]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#ttagent-historical // [Average resolution time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-resolution-time-historical + // [Flows outcome percentage]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#flows-outcome-percentage-historical // [Cases resolved]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#cases-resolved-historicall // [Contacts queued (enqueue timestamp)]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-queued-by-enqueue-historical + // [Average flow time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-flow-time-historical // [Contacts hold disconnect]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-handled-by-connected-to-agent-historical // [Online time]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#online-time-historical // [Average holds]: https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-holds-historical @@ -879,12 +949,13 @@ type GetMetricDataV2Input struct { // // If no grouping is specified, a summary of all metrics is returned. // - // Valid grouping keys: QUEUE | ROUTING_PROFILE | AGENT | CHANNEL | - // AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | - // AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | - // AGENT_HIERARCHY_LEVEL_FIVE | CASE_TEMPLATE_ARN | CASE_STATUS | - // contact/segmentAttributes/connect:Subtype | ROUTING_STEP_EXPRESSION | - // Q_CONNECT_ENABLED + // Valid grouping keys: AGENT | AGENT_HIERARCHY_LEVEL_ONE | + // AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | + // AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE | CASE_TEMPLATE_ARN | + // CASE_STATUS | CHANNEL | contact/segmentAttributes/connect:Subtype | + // FLOWS_RESOURCE_ID | FLOWS_MODULE_RESOURCE_ID | FLOW_TYPE | FLOWS_OUTCOME_TYPE | + // INITIATION_METHOD | Q_CONNECT_ENABLED | QUEUE | RESOURCE_PUBLISHED_TIMESTAMP | + // ROUTING_PROFILE | ROUTING_STEP_EXPRESSION Groupings []string // The interval period and timezone to apply to returned metrics. diff --git a/service/connect/types/types.go b/service/connect/types/types.go index 98a1b9105ec..0532748eb02 100644 --- a/service/connect/types/types.go +++ b/service/connect/types/types.go @@ -2977,7 +2977,7 @@ type MetricFilterV2 struct { // // Valid metric filter keys: INITIATION_METHOD , DISCONNECT_REASON . These are the // same values as the InitiationMethod and DisconnectReason in the contact record. - // For more information, see [ContactTraceRecord]in the Amazon Connect Administrator's Guide. + // For more information, see [ContactTraceRecord]in the Amazon Connect Administrator Guide. // // [ContactTraceRecord]: https://docs.aws.amazon.com/connect/latest/adminguide/ctr-data-model.html#ctr-ContactTraceRecord MetricFilterKey *string diff --git a/service/kafka/deserializers.go b/service/kafka/deserializers.go index 8fc2ef6cf0d..ad9e28578cf 100644 --- a/service/kafka/deserializers.go +++ b/service/kafka/deserializers.go @@ -9301,6 +9301,67 @@ func awsRestjson1_deserializeErrorUnauthorizedException(response *smithyhttp.Res return output } +func awsRestjson1_deserializeDocument__listOf__double(v *[]float64, 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 []float64 + if *v == nil { + cv = []float64{} + } else { + cv = *v + } + + for _, value := range shape { + var col float64 + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + col = f64 + + case string: + var f64 float64 + switch { + case strings.EqualFold(jtv, "NaN"): + f64 = math.NaN() + + case strings.EqualFold(jtv, "Infinity"): + f64 = math.Inf(1) + + case strings.EqualFold(jtv, "-Infinity"): + f64 = math.Inf(-1) + + default: + return fmt.Errorf("unknown JSON number value: %s", jtv) + + } + col = f64 + + default: + return fmt.Errorf("expected __double to be a JSON Number, got %T instead", value) + + } + } + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocument__listOf__string(v *[]string, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -10214,6 +10275,47 @@ func awsRestjson1_deserializeDocumentBadRequestException(v **types.BadRequestExc return nil } +func awsRestjson1_deserializeDocumentBrokerCountUpdateInfo(v **types.BrokerCountUpdateInfo, 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.BrokerCountUpdateInfo + if *v == nil { + sv = &types.BrokerCountUpdateInfo{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "createdBrokerIds": + if err := awsRestjson1_deserializeDocument__listOf__double(&sv.CreatedBrokerIds, value); err != nil { + return err + } + + case "deletedBrokerIds": + if err := awsRestjson1_deserializeDocument__listOf__double(&sv.DeletedBrokerIds, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentBrokerEBSVolumeInfo(v **types.BrokerEBSVolumeInfo, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -12695,6 +12797,11 @@ func awsRestjson1_deserializeDocumentMutableClusterInfo(v **types.MutableCluster for key, value := range shape { switch key { + case "brokerCountUpdateInfo": + if err := awsRestjson1_deserializeDocumentBrokerCountUpdateInfo(&sv.BrokerCountUpdateInfo, value); err != nil { + return err + } + case "brokerEBSVolumeInfo": if err := awsRestjson1_deserializeDocument__listOfBrokerEBSVolumeInfo(&sv.BrokerEBSVolumeInfo, value); err != nil { return err diff --git a/service/kafka/types/types.go b/service/kafka/types/types.go index 640502a73fb..081a301d3ec 100644 --- a/service/kafka/types/types.go +++ b/service/kafka/types/types.go @@ -18,6 +18,18 @@ type AmazonMskCluster struct { noSmithyDocumentSerde } +// Information regarding UpdateBrokerCount. +type BrokerCountUpdateInfo struct { + + // Kafka Broker IDs of brokers being created. + CreatedBrokerIds []float64 + + // Kafka Broker IDs of brokers being deleted. + DeletedBrokerIds []float64 + + noSmithyDocumentSerde +} + // Specifies the EBS volume upgrade information. The broker identifier must be set // to the keyword ALL. This means the changes apply to all the brokers in the // cluster. @@ -801,6 +813,9 @@ type LoggingInfo struct { // Information about cluster attributes that can be updated via update APIs. type MutableClusterInfo struct { + // Describes brokers being changed during a broker count update. + BrokerCountUpdateInfo *BrokerCountUpdateInfo + // Specifies the size of the EBS volume and the ID of the associated broker. BrokerEBSVolumeInfo []BrokerEBSVolumeInfo diff --git a/service/mwaa/api_op_CreateEnvironment.go b/service/mwaa/api_op_CreateEnvironment.go index 8673214e708..02fd66a3133 100644 --- a/service/mwaa/api_op_CreateEnvironment.go +++ b/service/mwaa/api_op_CreateEnvironment.go @@ -102,8 +102,8 @@ type CreateEnvironmentInput struct { // delete the failed environment and create a new one. EndpointManagement types.EndpointManagement - // The environment class type. Valid values: mw1.small , mw1.medium , mw1.large . - // For more information, see [Amazon MWAA environment class]. + // The environment class type. Valid values: mw1.small , mw1.medium , mw1.large , + // mw1.xlarge , and mw1.2xlarge . For more information, see [Amazon MWAA environment class]. // // [Amazon MWAA environment class]: https://docs.aws.amazon.com/mwaa/latest/userguide/environment-class.html EnvironmentClass *string @@ -118,6 +118,19 @@ type CreateEnvironmentInput struct { // Defines the Apache Airflow logs to send to CloudWatch Logs. LoggingConfiguration *types.LoggingConfigurationInput + // The maximum number of web servers that you want to run in your environment. + // Amazon MWAA scales the number of Apache Airflow web servers up to the number you + // specify for MaxWebservers when you interact with your Apache Airflow + // environment using Apache Airflow REST API, or the Apache Airflow CLI. For + // example, in scenarios where your workload requires network calls to the Apache + // Airflow REST API with a high transaction-per-second (TPS) rate, Amazon MWAA will + // increase the number of web servers up to the number set in MaxWebserers . As TPS + // rates decrease Amazon MWAA disposes of the additional web servers, and scales + // down to the number set in MinxWebserers . + // + // Valid values: Accepts between 2 and 5 . Defaults to 2 . + MaxWebservers *int32 + // The maximum number of workers that you want to run in your environment. MWAA // scales the number of Apache Airflow workers up to the number you specify in the // MaxWorkers field. For example, 20 . When there are no more tasks running, and no @@ -125,6 +138,17 @@ type CreateEnvironmentInput struct { // that is included with your environment, or the number you specify in MinWorkers . MaxWorkers *int32 + // The minimum number of web servers that you want to run in your environment. + // Amazon MWAA scales the number of Apache Airflow web servers up to the number you + // specify for MaxWebservers when you interact with your Apache Airflow + // environment using Apache Airflow REST API, or the Apache Airflow CLI. As the + // transaction-per-second rate, and the network load, decrease, Amazon MWAA + // disposes of the additional web servers, and scales down to the number set in + // MinxWebserers . + // + // Valid values: Accepts between 2 and 5 . Defaults to 2 . + MinWebservers *int32 + // The minimum number of workers that you want to run in your environment. MWAA // scales the number of Apache Airflow workers up to the number you specify in the // MaxWorkers field. When there are no more tasks running, and no more in the @@ -162,9 +186,9 @@ type CreateEnvironmentInput struct { // The number of Apache Airflow schedulers to run in your environment. Valid // values: // - // - v2 - Accepts between 2 to 5. Defaults to 2. + // - v2 - Accepts between 2 to 5 . Defaults to 2 . // - // - v1 - Accepts 1. + // - v1 - Accepts 1 . Schedulers *int32 // The version of the startup shell script in your Amazon S3 bucket. You must diff --git a/service/mwaa/api_op_UpdateEnvironment.go b/service/mwaa/api_op_UpdateEnvironment.go index b09de50d2d1..68308e8dcd2 100644 --- a/service/mwaa/api_op_UpdateEnvironment.go +++ b/service/mwaa/api_op_UpdateEnvironment.go @@ -47,7 +47,7 @@ type UpdateEnvironmentInput struct { // and other resources used in your workflows are compatible with the new Apache // Airflow version. For more information about updating your resources, see [Upgrading an Amazon MWAA environment]. // - // Valid values: 1.10.12 , 2.0.2 , 2.2.2 , 2.4.3 , 2.5.1 , 2.6.3 , 2.7.2 . + // Valid values: 1.10.12 , 2.0.2 , 2.2.2 , 2.4.3 , 2.5.1 , 2.6.3 , 2.7.2 , 2.8.1 . // // [Upgrading an Amazon MWAA environment]: https://docs.aws.amazon.com/mwaa/latest/userguide/upgrading-environment.html AirflowVersion *string @@ -58,8 +58,8 @@ type UpdateEnvironmentInput struct { // [Adding or updating DAGs]: https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-folder.html DagS3Path *string - // The environment class type. Valid values: mw1.small , mw1.medium , mw1.large . - // For more information, see [Amazon MWAA environment class]. + // The environment class type. Valid values: mw1.small , mw1.medium , mw1.large , + // mw1.xlarge , and mw1.2xlarge . For more information, see [Amazon MWAA environment class]. // // [Amazon MWAA environment class]: https://docs.aws.amazon.com/mwaa/latest/userguide/environment-class.html EnvironmentClass *string @@ -74,6 +74,19 @@ type UpdateEnvironmentInput struct { // The Apache Airflow log types to send to CloudWatch Logs. LoggingConfiguration *types.LoggingConfigurationInput + // The maximum number of web servers that you want to run in your environment. + // Amazon MWAA scales the number of Apache Airflow web servers up to the number you + // specify for MaxWebservers when you interact with your Apache Airflow + // environment using Apache Airflow REST API, or the Apache Airflow CLI. For + // example, in scenarios where your workload requires network calls to the Apache + // Airflow REST API with a high transaction-per-second (TPS) rate, Amazon MWAA will + // increase the number of web servers up to the number set in MaxWebserers . As TPS + // rates decrease Amazon MWAA disposes of the additional web servers, and scales + // down to the number set in MinxWebserers . + // + // Valid values: Accepts between 2 and 5 . Defaults to 2 . + MaxWebservers *int32 + // The maximum number of workers that you want to run in your environment. MWAA // scales the number of Apache Airflow workers up to the number you specify in the // MaxWorkers field. For example, 20 . When there are no more tasks running, and no @@ -81,6 +94,17 @@ type UpdateEnvironmentInput struct { // that is included with your environment, or the number you specify in MinWorkers . MaxWorkers *int32 + // The minimum number of web servers that you want to run in your environment. + // Amazon MWAA scales the number of Apache Airflow web servers up to the number you + // specify for MaxWebservers when you interact with your Apache Airflow + // environment using Apache Airflow REST API, or the Apache Airflow CLI. As the + // transaction-per-second rate, and the network load, decrease, Amazon MWAA + // disposes of the additional web servers, and scales down to the number set in + // MinxWebserers . + // + // Valid values: Accepts between 2 and 5 . Defaults to 2 . + MinWebservers *int32 + // The minimum number of workers that you want to run in your environment. MWAA // scales the number of Apache Airflow workers up to the number you specify in the // MaxWorkers field. When there are no more tasks running, and no more in the diff --git a/service/mwaa/deserializers.go b/service/mwaa/deserializers.go index 5a9fd5f9fe0..eeb56ff90b0 100644 --- a/service/mwaa/deserializers.go +++ b/service/mwaa/deserializers.go @@ -1849,6 +1849,19 @@ func awsRestjson1_deserializeDocumentEnvironment(v **types.Environment, value in return err } + case "MaxWebservers": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected MaxWebservers to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.MaxWebservers = ptr.Int32(int32(i64)) + } + case "MaxWorkers": if value != nil { jtv, ok := value.(json.Number) @@ -1862,6 +1875,19 @@ func awsRestjson1_deserializeDocumentEnvironment(v **types.Environment, value in sv.MaxWorkers = ptr.Int32(int32(i64)) } + case "MinWebservers": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected MinWebservers to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.MinWebservers = ptr.Int32(int32(i64)) + } + case "MinWorkers": if value != nil { jtv, ok := value.(json.Number) diff --git a/service/mwaa/serializers.go b/service/mwaa/serializers.go index 77232796286..f67b0093020 100644 --- a/service/mwaa/serializers.go +++ b/service/mwaa/serializers.go @@ -205,11 +205,21 @@ func awsRestjson1_serializeOpDocumentCreateEnvironmentInput(v *CreateEnvironment } } + if v.MaxWebservers != nil { + ok := object.Key("MaxWebservers") + ok.Integer(*v.MaxWebservers) + } + if v.MaxWorkers != nil { ok := object.Key("MaxWorkers") ok.Integer(*v.MaxWorkers) } + if v.MinWebservers != nil { + ok := object.Key("MinWebservers") + ok.Integer(*v.MinWebservers) + } + if v.MinWorkers != nil { ok := object.Key("MinWorkers") ok.Integer(*v.MinWorkers) @@ -971,11 +981,21 @@ func awsRestjson1_serializeOpDocumentUpdateEnvironmentInput(v *UpdateEnvironment } } + if v.MaxWebservers != nil { + ok := object.Key("MaxWebservers") + ok.Integer(*v.MaxWebservers) + } + if v.MaxWorkers != nil { ok := object.Key("MaxWorkers") ok.Integer(*v.MaxWorkers) } + if v.MinWebservers != nil { + ok := object.Key("MinWebservers") + ok.Integer(*v.MinWebservers) + } + if v.MinWorkers != nil { ok := object.Key("MinWorkers") ok.Integer(*v.MinWorkers) diff --git a/service/mwaa/types/types.go b/service/mwaa/types/types.go index ef890185d54..1ffecac1f2c 100644 --- a/service/mwaa/types/types.go +++ b/service/mwaa/types/types.go @@ -38,7 +38,7 @@ type Environment struct { // The Apache Airflow version on your environment. // - // Valid values: 1.10.12 , 2.0.2 , 2.2.2 , 2.4.3 , 2.5.1 , 2.6.3 , 2.7.2 . + // Valid values: 1.10.12 , 2.0.2 , 2.2.2 , 2.4.3 , 2.5.1 , 2.6.3 , 2.7.2 , 2.8.1 . AirflowVersion *string // The Amazon Resource Name (ARN) of the Amazon MWAA environment. @@ -69,8 +69,8 @@ type Environment struct { // CUSTOMER , you must create, and manage, the VPC endpoints in your VPC. EndpointManagement EndpointManagement - // The environment class type. Valid values: mw1.small , mw1.medium , mw1.large . - // For more information, see [Amazon MWAA environment class]. + // The environment class type. Valid values: mw1.small , mw1.medium , mw1.large , + // mw1.xlarge , and mw1.2xlarge . For more information, see [Amazon MWAA environment class]. // // [Amazon MWAA environment class]: https://docs.aws.amazon.com/mwaa/latest/userguide/environment-class.html EnvironmentClass *string @@ -91,9 +91,33 @@ type Environment struct { // The Apache Airflow logs published to CloudWatch Logs. LoggingConfiguration *LoggingConfiguration + // The maximum number of web servers that you want to run in your environment. + // Amazon MWAA scales the number of Apache Airflow web servers up to the number you + // specify for MaxWebservers when you interact with your Apache Airflow + // environment using Apache Airflow REST API, or the Apache Airflow CLI. For + // example, in scenarios where your workload requires network calls to the Apache + // Airflow REST API with a high transaction-per-second (TPS) rate, Amazon MWAA will + // increase the number of web servers up to the number set in MaxWebserers . As TPS + // rates decrease Amazon MWAA disposes of the additional web servers, and scales + // down to the number set in MinxWebserers . + // + // Valid values: Accepts between 2 and 5 . Defaults to 2 . + MaxWebservers *int32 + // The maximum number of workers that run in your environment. For example, 20 . MaxWorkers *int32 + // The minimum number of web servers that you want to run in your environment. + // Amazon MWAA scales the number of Apache Airflow web servers up to the number you + // specify for MaxWebservers when you interact with your Apache Airflow + // environment using Apache Airflow REST API, or the Apache Airflow CLI. As the + // transaction-per-second rate, and the network load, decrease, Amazon MWAA + // disposes of the additional web servers, and scales down to the number set in + // MinxWebserers . + // + // Valid values: Accepts between 2 and 5 . Defaults to 2 . + MinWebservers *int32 + // The minimum number of workers that run in your environment. For example, 2 . MinWorkers *int32 diff --git a/service/quicksight/api_op_DescribeKeyRegistration.go b/service/quicksight/api_op_DescribeKeyRegistration.go new file mode 100644 index 00000000000..39f4cb92bd3 --- /dev/null +++ b/service/quicksight/api_op_DescribeKeyRegistration.go @@ -0,0 +1,150 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package quicksight + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/quicksight/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Describes all customer managed key registrations in a Amazon QuickSight account. +func (c *Client) DescribeKeyRegistration(ctx context.Context, params *DescribeKeyRegistrationInput, optFns ...func(*Options)) (*DescribeKeyRegistrationOutput, error) { + if params == nil { + params = &DescribeKeyRegistrationInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeKeyRegistration", params, optFns, c.addOperationDescribeKeyRegistrationMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeKeyRegistrationOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeKeyRegistrationInput struct { + + // The ID of the Amazon Web Services account that contains the customer managed + // key registration that you want to describe. + // + // This member is required. + AwsAccountId *string + + // Determines whether the request returns the default key only. + DefaultKeyOnly bool + + noSmithyDocumentSerde +} + +type DescribeKeyRegistrationOutput struct { + + // The ID of the Amazon Web Services account that contains the customer managed + // key registration specified in the request. + AwsAccountId *string + + // A list of RegisteredCustomerManagedKey objects in a Amazon QuickSight account. + KeyRegistration []types.RegisteredCustomerManagedKey + + // The Amazon Web Services request ID for this operation. + RequestId *string + + // The HTTP status of the request. + Status int32 + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeKeyRegistrationMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsRestjson1_serializeOpDescribeKeyRegistration{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpDescribeKeyRegistration{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DescribeKeyRegistration"); 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 = 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 = addOpDescribeKeyRegistrationValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeKeyRegistration(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 + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeKeyRegistration(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DescribeKeyRegistration", + } +} diff --git a/service/quicksight/api_op_RegisterUser.go b/service/quicksight/api_op_RegisterUser.go index 2a61b5a638a..f1fdb497101 100644 --- a/service/quicksight/api_op_RegisterUser.go +++ b/service/quicksight/api_op_RegisterUser.go @@ -73,6 +73,18 @@ type RegisterUserInput struct { // - ADMIN : A user who is an author, who can also manage Amazon QuickSight // settings. // + // - READER_PRO : Reader Pro adds Generative BI capabilities to the Reader role. + // Reader Pros have access to Amazon Q in Amazon QuickSight, can build stories with + // Amazon Q, and can generate executive summaries from dashboards. + // + // - AUTHOR_PRO : Author Pro adds Generative BI capabilities to the Author role. + // Author Pros can author dashboards with natural language with Amazon Q, build + // stories with Amazon Q, create Topics for Q&A, and generate executive summaries + // from dashboards. + // + // - ADMIN_PRO : Admin Pros are Author Pros who can also manage Amazon QuickSight + // administrative settings. Admin Pro users are billed at Author Pro pricing. + // // - RESTRICTED_READER : This role isn't currently available for use. // // - RESTRICTED_AUTHOR : This role isn't currently available for use. diff --git a/service/quicksight/api_op_UpdateKeyRegistration.go b/service/quicksight/api_op_UpdateKeyRegistration.go new file mode 100644 index 00000000000..46708271048 --- /dev/null +++ b/service/quicksight/api_op_UpdateKeyRegistration.go @@ -0,0 +1,149 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package quicksight + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/quicksight/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Updates a customer managed key in a Amazon QuickSight account. +func (c *Client) UpdateKeyRegistration(ctx context.Context, params *UpdateKeyRegistrationInput, optFns ...func(*Options)) (*UpdateKeyRegistrationOutput, error) { + if params == nil { + params = &UpdateKeyRegistrationInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateKeyRegistration", params, optFns, c.addOperationUpdateKeyRegistrationMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateKeyRegistrationOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateKeyRegistrationInput struct { + + // The ID of the Amazon Web Services account that contains the customer managed + // key registration that you want to update. + // + // This member is required. + AwsAccountId *string + + // A list of RegisteredCustomerManagedKey objects to be updated to the Amazon + // QuickSight account. + // + // This member is required. + KeyRegistration []types.RegisteredCustomerManagedKey + + noSmithyDocumentSerde +} + +type UpdateKeyRegistrationOutput struct { + + // A list of all customer managed key registrations that failed to update. + FailedKeyRegistration []types.FailedKeyRegistrationEntry + + // The Amazon Web Services request ID for this operation. + RequestId *string + + // A list of all customer managed key registrations that were successfully updated. + SuccessfulKeyRegistration []types.SuccessfulKeyRegistrationEntry + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateKeyRegistrationMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsRestjson1_serializeOpUpdateKeyRegistration{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsRestjson1_deserializeOpUpdateKeyRegistration{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "UpdateKeyRegistration"); 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 = 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 = addOpUpdateKeyRegistrationValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateKeyRegistration(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 + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateKeyRegistration(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "UpdateKeyRegistration", + } +} diff --git a/service/quicksight/api_op_UpdateUser.go b/service/quicksight/api_op_UpdateUser.go index 1c20867d9b4..9d757178360 100644 --- a/service/quicksight/api_op_UpdateUser.go +++ b/service/quicksight/api_op_UpdateUser.go @@ -58,8 +58,8 @@ type UpdateUserInput struct { // settings. // // - READER_PRO : Reader Pro adds Generative BI capabilities to the Reader role. - // Reader Pros have access to Amazon Q Business, can build stories with Amazon Q, - // and can generate executive summaries from dashboards. + // Reader Pros have access to Amazon Q in Amazon QuickSight, can build stories with + // Amazon Q, and can generate executive summaries from dashboards. // // - AUTHOR_PRO : Author Pro adds Generative BI capabilities to the Author role. // Author Pros can author dashboards with natural language with Amazon Q, build diff --git a/service/quicksight/deserializers.go b/service/quicksight/deserializers.go index 53641efdcc3..e4e09b953bc 100644 --- a/service/quicksight/deserializers.go +++ b/service/quicksight/deserializers.go @@ -15265,6 +15265,193 @@ func awsRestjson1_deserializeOpDocumentDescribeIpRestrictionOutput(v **DescribeI return nil } +type awsRestjson1_deserializeOpDescribeKeyRegistration struct { +} + +func (*awsRestjson1_deserializeOpDescribeKeyRegistration) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpDescribeKeyRegistration) 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 + } + + 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_deserializeOpErrorDescribeKeyRegistration(response, &metadata) + } + output := &DescribeKeyRegistrationOutput{} + 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_deserializeOpDocumentDescribeKeyRegistrationOutput(&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(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorDescribeKeyRegistration(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("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalFailureException", errorCode): + return awsRestjson1_deserializeErrorInternalFailureException(response, errorBody) + + case strings.EqualFold("InvalidParameterValueException", errorCode): + return awsRestjson1_deserializeErrorInvalidParameterValueException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpDocumentDescribeKeyRegistrationOutput(v **DescribeKeyRegistrationOutput, 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 *DescribeKeyRegistrationOutput + if *v == nil { + sv = &DescribeKeyRegistrationOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "AwsAccountId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AwsAccountId to be of type string, got %T instead", value) + } + sv.AwsAccountId = ptr.String(jtv) + } + + case "KeyRegistration": + if err := awsRestjson1_deserializeDocumentKeyRegistration(&sv.KeyRegistration, value); err != nil { + return err + } + + case "RequestId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NonEmptyString to be of type string, got %T instead", value) + } + sv.RequestId = ptr.String(jtv) + } + + case "Status": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected StatusCode to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Status = int32(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + type awsRestjson1_deserializeOpDescribeNamespace struct { } @@ -31332,12 +31519,190 @@ func awsRestjson1_deserializeOpErrorUpdateIpRestriction(response *smithyhttp.Res case strings.EqualFold("InvalidParameterValueException", errorCode): return awsRestjson1_deserializeErrorInvalidParameterValueException(response, errorBody) - case strings.EqualFold("LimitExceededException", errorCode): - return awsRestjson1_deserializeErrorLimitExceededException(response, errorBody) - - case strings.EqualFold("ResourceNotFoundException", errorCode): - return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) - + case strings.EqualFold("LimitExceededException", errorCode): + return awsRestjson1_deserializeErrorLimitExceededException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsRestjson1_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ThrottlingException", errorCode): + return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsRestjson1_deserializeOpHttpBindingsUpdateIpRestrictionOutput(v *UpdateIpRestrictionOutput, response *smithyhttp.Response) error { + if v == nil { + return fmt.Errorf("unsupported deserialization for nil %T", v) + } + + v.Status = int32(response.StatusCode) + + return nil +} +func awsRestjson1_deserializeOpDocumentUpdateIpRestrictionOutput(v **UpdateIpRestrictionOutput, 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 *UpdateIpRestrictionOutput + if *v == nil { + sv = &UpdateIpRestrictionOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "AwsAccountId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AwsAccountId to be of type string, got %T instead", value) + } + sv.AwsAccountId = ptr.String(jtv) + } + + case "RequestId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RequestId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type awsRestjson1_deserializeOpUpdateKeyRegistration struct { +} + +func (*awsRestjson1_deserializeOpUpdateKeyRegistration) ID() string { + return "OperationDeserializer" +} + +func (m *awsRestjson1_deserializeOpUpdateKeyRegistration) 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 + } + + 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_deserializeOpErrorUpdateKeyRegistration(response, &metadata) + } + output := &UpdateKeyRegistrationOutput{} + 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_deserializeOpDocumentUpdateKeyRegistrationOutput(&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(), + } + } + + return out, metadata, err +} + +func awsRestjson1_deserializeOpErrorUpdateKeyRegistration(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("AccessDeniedException", errorCode): + return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("InternalFailureException", errorCode): + return awsRestjson1_deserializeErrorInternalFailureException(response, errorBody) + + case strings.EqualFold("InvalidParameterValueException", errorCode): + return awsRestjson1_deserializeErrorInvalidParameterValueException(response, errorBody) + case strings.EqualFold("ThrottlingException", errorCode): return awsRestjson1_deserializeErrorThrottlingException(response, errorBody) @@ -31351,16 +31716,7 @@ func awsRestjson1_deserializeOpErrorUpdateIpRestriction(response *smithyhttp.Res } } -func awsRestjson1_deserializeOpHttpBindingsUpdateIpRestrictionOutput(v *UpdateIpRestrictionOutput, response *smithyhttp.Response) error { - if v == nil { - return fmt.Errorf("unsupported deserialization for nil %T", v) - } - - v.Status = int32(response.StatusCode) - - return nil -} -func awsRestjson1_deserializeOpDocumentUpdateIpRestrictionOutput(v **UpdateIpRestrictionOutput, value interface{}) error { +func awsRestjson1_deserializeOpDocumentUpdateKeyRegistrationOutput(v **UpdateKeyRegistrationOutput, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) } @@ -31373,33 +31729,34 @@ func awsRestjson1_deserializeOpDocumentUpdateIpRestrictionOutput(v **UpdateIpRes return fmt.Errorf("unexpected JSON type %v", value) } - var sv *UpdateIpRestrictionOutput + var sv *UpdateKeyRegistrationOutput if *v == nil { - sv = &UpdateIpRestrictionOutput{} + sv = &UpdateKeyRegistrationOutput{} } else { sv = *v } for key, value := range shape { switch key { - case "AwsAccountId": - if value != nil { - jtv, ok := value.(string) - if !ok { - return fmt.Errorf("expected AwsAccountId to be of type string, got %T instead", value) - } - sv.AwsAccountId = ptr.String(jtv) + case "FailedKeyRegistration": + if err := awsRestjson1_deserializeDocumentFailedKeyRegistrationEntries(&sv.FailedKeyRegistration, value); err != nil { + return err } case "RequestId": 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 NonEmptyString to be of type string, got %T instead", value) } sv.RequestId = ptr.String(jtv) } + case "SuccessfulKeyRegistration": + if err := awsRestjson1_deserializeDocumentSuccessfulKeyRegistrationEntries(&sv.SuccessfulKeyRegistration, value); err != nil { + return err + } + default: _, _ = key, value @@ -53228,6 +53585,111 @@ func awsRestjson1_deserializeDocumentExportWithHiddenFieldsOption(v **types.Expo return nil } +func awsRestjson1_deserializeDocumentFailedKeyRegistrationEntries(v *[]types.FailedKeyRegistrationEntry, 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.FailedKeyRegistrationEntry + if *v == nil { + cv = []types.FailedKeyRegistrationEntry{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.FailedKeyRegistrationEntry + destAddr := &col + if err := awsRestjson1_deserializeDocumentFailedKeyRegistrationEntry(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentFailedKeyRegistrationEntry(v **types.FailedKeyRegistrationEntry, 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.FailedKeyRegistrationEntry + if *v == nil { + sv = &types.FailedKeyRegistrationEntry{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "KeyArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.KeyArn = ptr.String(jtv) + } + + case "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NonEmptyString to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "SenderFault": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.SenderFault = jtv + } + + case "StatusCode": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected StatusCode to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.StatusCode = int32(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentFieldBasedTooltip(v **types.FieldBasedTooltip, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -61537,6 +61999,40 @@ func awsRestjson1_deserializeDocumentJoinKeyProperties(v **types.JoinKeyProperti return nil } +func awsRestjson1_deserializeDocumentKeyRegistration(v *[]types.RegisteredCustomerManagedKey, 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.RegisteredCustomerManagedKey + if *v == nil { + cv = []types.RegisteredCustomerManagedKey{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.RegisteredCustomerManagedKey + destAddr := &col + if err := awsRestjson1_deserializeDocumentRegisteredCustomerManagedKey(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocumentKPIActualValueConditionalFormatting(v **types.KPIActualValueConditionalFormatting, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -71287,6 +71783,55 @@ func awsRestjson1_deserializeDocumentRefreshSchedules(v *[]types.RefreshSchedule return nil } +func awsRestjson1_deserializeDocumentRegisteredCustomerManagedKey(v **types.RegisteredCustomerManagedKey, 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.RegisteredCustomerManagedKey + if *v == nil { + sv = &types.RegisteredCustomerManagedKey{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "DefaultKey": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.DefaultKey = jtv + } + + case "KeyArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.KeyArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentRelationalTable(v **types.RelationalTable, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -77301,6 +77846,93 @@ func awsRestjson1_deserializeDocumentSubtotalOptions(v **types.SubtotalOptions, return nil } +func awsRestjson1_deserializeDocumentSuccessfulKeyRegistrationEntries(v *[]types.SuccessfulKeyRegistrationEntry, 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.SuccessfulKeyRegistrationEntry + if *v == nil { + cv = []types.SuccessfulKeyRegistrationEntry{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.SuccessfulKeyRegistrationEntry + destAddr := &col + if err := awsRestjson1_deserializeDocumentSuccessfulKeyRegistrationEntry(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsRestjson1_deserializeDocumentSuccessfulKeyRegistrationEntry(v **types.SuccessfulKeyRegistrationEntry, 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.SuccessfulKeyRegistrationEntry + if *v == nil { + sv = &types.SuccessfulKeyRegistrationEntry{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "KeyArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.KeyArn = ptr.String(jtv) + } + + case "StatusCode": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected StatusCode to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.StatusCode = int32(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentSynonyms(v *[]string, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) diff --git a/service/quicksight/generated.json b/service/quicksight/generated.json index a7e5da2c364..3f5dfb84aae 100644 --- a/service/quicksight/generated.json +++ b/service/quicksight/generated.json @@ -83,6 +83,7 @@ "api_op_DescribeIAMPolicyAssignment.go", "api_op_DescribeIngestion.go", "api_op_DescribeIpRestriction.go", + "api_op_DescribeKeyRegistration.go", "api_op_DescribeNamespace.go", "api_op_DescribeRefreshSchedule.go", "api_op_DescribeRoleCustomPermission.go", @@ -165,6 +166,7 @@ "api_op_UpdateIAMPolicyAssignment.go", "api_op_UpdateIdentityPropagationConfig.go", "api_op_UpdateIpRestriction.go", + "api_op_UpdateKeyRegistration.go", "api_op_UpdatePublicSharingSettings.go", "api_op_UpdateRefreshSchedule.go", "api_op_UpdateRoleCustomPermission.go", diff --git a/service/quicksight/serializers.go b/service/quicksight/serializers.go index fa934de6467..067e693a247 100644 --- a/service/quicksight/serializers.go +++ b/service/quicksight/serializers.go @@ -6844,6 +6844,75 @@ func awsRestjson1_serializeOpHttpBindingsDescribeIpRestrictionInput(v *DescribeI return nil } +type awsRestjson1_serializeOpDescribeKeyRegistration struct { +} + +func (*awsRestjson1_serializeOpDescribeKeyRegistration) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpDescribeKeyRegistration) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + 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.(*DescribeKeyRegistrationInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/accounts/{AwsAccountId}/key-registration") + 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 err := awsRestjson1_serializeOpHttpBindingsDescribeKeyRegistrationInput(input, restEncoder); 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 + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsDescribeKeyRegistrationInput(v *DescribeKeyRegistrationInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.AwsAccountId == nil || len(*v.AwsAccountId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member AwsAccountId must not be empty")} + } + if v.AwsAccountId != nil { + if err := encoder.SetURI("AwsAccountId").String(*v.AwsAccountId); err != nil { + return err + } + } + + if v.DefaultKeyOnly { + encoder.SetQuery("default-key-only").Boolean(v.DefaultKeyOnly) + } + + return nil +} + type awsRestjson1_serializeOpDescribeNamespace struct { } @@ -14349,6 +14418,96 @@ func awsRestjson1_serializeOpDocumentUpdateIpRestrictionInput(v *UpdateIpRestric return nil } +type awsRestjson1_serializeOpUpdateKeyRegistration struct { +} + +func (*awsRestjson1_serializeOpUpdateKeyRegistration) ID() string { + return "OperationSerializer" +} + +func (m *awsRestjson1_serializeOpUpdateKeyRegistration) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + 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.(*UpdateKeyRegistrationInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + opPath, opQuery := httpbinding.SplitURI("/accounts/{AwsAccountId}/key-registration") + request.URL.Path = smithyhttp.JoinPath(request.URL.Path, opPath) + request.URL.RawQuery = smithyhttp.JoinRawQuery(request.URL.RawQuery, opQuery) + request.Method = "POST" + 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 err := awsRestjson1_serializeOpHttpBindingsUpdateKeyRegistrationInput(input, restEncoder); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + restEncoder.SetHeader("Content-Type").String("application/json") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsRestjson1_serializeOpDocumentUpdateKeyRegistrationInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); 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 + + return next.HandleSerialize(ctx, in) +} +func awsRestjson1_serializeOpHttpBindingsUpdateKeyRegistrationInput(v *UpdateKeyRegistrationInput, encoder *httpbinding.Encoder) error { + if v == nil { + return fmt.Errorf("unsupported serialization of nil %T", v) + } + + if v.AwsAccountId == nil || len(*v.AwsAccountId) == 0 { + return &smithy.SerializationError{Err: fmt.Errorf("input member AwsAccountId must not be empty")} + } + if v.AwsAccountId != nil { + if err := encoder.SetURI("AwsAccountId").String(*v.AwsAccountId); err != nil { + return err + } + } + + return nil +} + +func awsRestjson1_serializeOpDocumentUpdateKeyRegistrationInput(v *UpdateKeyRegistrationInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.KeyRegistration != nil { + ok := object.Key("KeyRegistration") + if err := awsRestjson1_serializeDocumentKeyRegistration(v.KeyRegistration, ok); err != nil { + return err + } + } + + return nil +} + type awsRestjson1_serializeOpUpdatePublicSharingSettings struct { } @@ -27074,6 +27233,19 @@ func awsRestjson1_serializeDocumentJoinKeyProperties(v *types.JoinKeyProperties, return nil } +func awsRestjson1_serializeDocumentKeyRegistration(v []types.RegisteredCustomerManagedKey, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsRestjson1_serializeDocumentRegisteredCustomerManagedKey(&v[i], av); err != nil { + return err + } + } + return nil +} + func awsRestjson1_serializeDocumentKPIActualValueConditionalFormatting(v *types.KPIActualValueConditionalFormatting, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -31639,6 +31811,23 @@ func awsRestjson1_serializeDocumentRefreshSchedule(v *types.RefreshSchedule, val return nil } +func awsRestjson1_serializeDocumentRegisteredCustomerManagedKey(v *types.RegisteredCustomerManagedKey, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.DefaultKey { + ok := object.Key("DefaultKey") + ok.Boolean(v.DefaultKey) + } + + if v.KeyArn != nil { + ok := object.Key("KeyArn") + ok.String(*v.KeyArn) + } + + return nil +} + func awsRestjson1_serializeDocumentRegisteredUserConsoleFeatureConfigurations(v *types.RegisteredUserConsoleFeatureConfigurations, value smithyjson.Value) error { object := value.Object() defer object.Close() diff --git a/service/quicksight/snapshot/api_op_DescribeKeyRegistration.go.snap b/service/quicksight/snapshot/api_op_DescribeKeyRegistration.go.snap new file mode 100644 index 00000000000..1a61e21c263 --- /dev/null +++ b/service/quicksight/snapshot/api_op_DescribeKeyRegistration.go.snap @@ -0,0 +1,34 @@ +DescribeKeyRegistration + Initialize stack step + RegisterServiceMetadata + legacyEndpointContextSetter + SetLogger + OperationInputValidation + Serialize stack step + setOperationInput + ResolveEndpoint + OperationSerializer + Build stack step + ClientRequestID + ComputeContentLength + UserAgent + RecursionDetection + Finalize stack step + ResolveAuthScheme + GetIdentity + ResolveEndpointV2 + disableHTTPS + ComputePayloadHash + Retry + RetryMetricsHeader + setLegacyContextSigningOptions + Signing + Deserialize stack step + AddRawResponseToMetadata + ErrorCloseResponseBody + CloseResponseBody + ResponseErrorWrapper + RequestIDRetriever + OperationDeserializer + RecordResponseTiming + RequestResponseLogger diff --git a/service/quicksight/snapshot/api_op_UpdateKeyRegistration.go.snap b/service/quicksight/snapshot/api_op_UpdateKeyRegistration.go.snap new file mode 100644 index 00000000000..4e67259f72a --- /dev/null +++ b/service/quicksight/snapshot/api_op_UpdateKeyRegistration.go.snap @@ -0,0 +1,34 @@ +UpdateKeyRegistration + Initialize stack step + RegisterServiceMetadata + legacyEndpointContextSetter + SetLogger + OperationInputValidation + Serialize stack step + setOperationInput + ResolveEndpoint + OperationSerializer + Build stack step + ClientRequestID + ComputeContentLength + UserAgent + RecursionDetection + Finalize stack step + ResolveAuthScheme + GetIdentity + ResolveEndpointV2 + disableHTTPS + ComputePayloadHash + Retry + RetryMetricsHeader + setLegacyContextSigningOptions + Signing + Deserialize stack step + AddRawResponseToMetadata + ErrorCloseResponseBody + CloseResponseBody + ResponseErrorWrapper + RequestIDRetriever + OperationDeserializer + RecordResponseTiming + RequestResponseLogger diff --git a/service/quicksight/snapshot_test.go b/service/quicksight/snapshot_test.go index f9dad090428..e2fb583912e 100644 --- a/service/quicksight/snapshot_test.go +++ b/service/quicksight/snapshot_test.go @@ -962,6 +962,18 @@ func TestCheckSnapshot_DescribeIpRestriction(t *testing.T) { } } +func TestCheckSnapshot_DescribeKeyRegistration(t *testing.T) { + svc := New(Options{}) + _, err := svc.DescribeKeyRegistration(context.Background(), nil, func(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + return testSnapshot(stack, "DescribeKeyRegistration") + }) + }) + if _, ok := err.(snapshotOK); !ok && err != nil { + t.Fatal(err) + } +} + func TestCheckSnapshot_DescribeNamespace(t *testing.T) { svc := New(Options{}) _, err := svc.DescribeNamespace(context.Background(), nil, func(o *Options) { @@ -1946,6 +1958,18 @@ func TestCheckSnapshot_UpdateIpRestriction(t *testing.T) { } } +func TestCheckSnapshot_UpdateKeyRegistration(t *testing.T) { + svc := New(Options{}) + _, err := svc.UpdateKeyRegistration(context.Background(), nil, func(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + return testSnapshot(stack, "UpdateKeyRegistration") + }) + }) + if _, ok := err.(snapshotOK); !ok && err != nil { + t.Fatal(err) + } +} + func TestCheckSnapshot_UpdatePublicSharingSettings(t *testing.T) { svc := New(Options{}) _, err := svc.UpdatePublicSharingSettings(context.Background(), nil, func(o *Options) { @@ -3025,6 +3049,18 @@ func TestUpdateSnapshot_DescribeIpRestriction(t *testing.T) { } } +func TestUpdateSnapshot_DescribeKeyRegistration(t *testing.T) { + svc := New(Options{}) + _, err := svc.DescribeKeyRegistration(context.Background(), nil, func(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + return updateSnapshot(stack, "DescribeKeyRegistration") + }) + }) + if _, ok := err.(snapshotOK); !ok && err != nil { + t.Fatal(err) + } +} + func TestUpdateSnapshot_DescribeNamespace(t *testing.T) { svc := New(Options{}) _, err := svc.DescribeNamespace(context.Background(), nil, func(o *Options) { @@ -4009,6 +4045,18 @@ func TestUpdateSnapshot_UpdateIpRestriction(t *testing.T) { } } +func TestUpdateSnapshot_UpdateKeyRegistration(t *testing.T) { + svc := New(Options{}) + _, err := svc.UpdateKeyRegistration(context.Background(), nil, func(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + return updateSnapshot(stack, "UpdateKeyRegistration") + }) + }) + if _, ok := err.(snapshotOK); !ok && err != nil { + t.Fatal(err) + } +} + func TestUpdateSnapshot_UpdatePublicSharingSettings(t *testing.T) { svc := New(Options{}) _, err := svc.UpdatePublicSharingSettings(context.Background(), nil, func(o *Options) { diff --git a/service/quicksight/types/types.go b/service/quicksight/types/types.go index 0fb695b456b..280ca0c9ed3 100644 --- a/service/quicksight/types/types.go +++ b/service/quicksight/types/types.go @@ -5608,6 +5608,35 @@ type ExportWithHiddenFieldsOption struct { noSmithyDocumentSerde } +// An entry that appears when a KeyRegistration update to Amazon QuickSight fails. +type FailedKeyRegistrationEntry struct { + + // A message that provides information about why a FailedKeyRegistrationEntry + // error occurred. + // + // This member is required. + Message *string + + // A boolean that indicates whether a FailedKeyRegistrationEntry resulted from + // user error. If the value of this property is True , the error was caused by user + // error. If the value of this property is False , the error occurred on the + // backend. If your job continues fail and with a False SenderFault value, contact + // Amazon Web Services Support. + // + // This member is required. + SenderFault bool + + // The HTTP status of a FailedKeyRegistrationEntry error. + // + // This member is required. + StatusCode int32 + + // The ARN of the KMS key that failed to update. + KeyArn *string + + noSmithyDocumentSerde +} + // The setup for the detailed tooltip. type FieldBasedTooltip struct { @@ -10659,15 +10688,6 @@ type RdsParameters struct { // [GetClusterCredentials]: https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetClusterCredentials.html type RedshiftIAMParameters struct { - // The user whose permissions and group memberships will be used by Amazon - // QuickSight to access the cluster. If this user already exists in your database, - // Amazon QuickSight is granted the same permissions that the user has. If the user - // doesn't exist, set the value of AutoCreateDatabaseUser to True to create a new - // user with PUBLIC permissions. - // - // This member is required. - DatabaseUser *string - // Use the RoleArn structure to allow Amazon QuickSight to call // redshift:GetClusterCredentials on your cluster. The calling principal must have // iam:PassRole access to pass the role to Amazon QuickSight. The role's trust @@ -10689,6 +10709,13 @@ type RedshiftIAMParameters struct { // parameter, the RoleArn must grant access to redshift:JoinGroup . DatabaseGroups []string + // The user whose permissions and group memberships will be used by Amazon + // QuickSight to access the cluster. If this user already exists in your database, + // Amazon QuickSight is granted the same permissions that the user has. If the user + // doesn't exist, set the value of AutoCreateDatabaseUser to True to create a new + // user with PUBLIC permissions. + DatabaseUser *string + noSmithyDocumentSerde } @@ -10979,6 +11006,26 @@ type RefreshSchedule struct { noSmithyDocumentSerde } +// A customer managed key structure that contains the information listed below: +// +// - KeyArn - The ARN of a KMS key that is registered to a Amazon QuickSight +// account for encryption and decryption use. +// +// - DefaultKey - Indicates whether the current key is set as the default key for +// encryption and decryption use. +type RegisteredCustomerManagedKey struct { + + // Indicates whether a RegisteredCustomerManagedKey is set as the default key for + // encryption and decryption use. + DefaultKey bool + + // The ARN of the KMS key that is registered to a Amazon QuickSight account for + // encryption and decryption use. + KeyArn *string + + noSmithyDocumentSerde +} + // The feature configurations of an embedded Amazon QuickSight console. type RegisteredUserConsoleFeatureConfigurations struct { @@ -12866,6 +12913,24 @@ type SubtotalOptions struct { noSmithyDocumentSerde } +// A success entry that occurs when a KeyRegistration job is successfully applied +// to the Amazon QuickSight account. +type SuccessfulKeyRegistrationEntry struct { + + // The ARN of the KMS key that is associated with the + // SuccessfulKeyRegistrationEntry entry. + // + // This member is required. + KeyArn *string + + // The HTTP status of a SuccessfulKeyRegistrationEntry entry. + // + // This member is required. + StatusCode int32 + + noSmithyDocumentSerde +} + // The aggregated field well for the table. type TableAggregatedFieldWells struct { @@ -15089,8 +15154,8 @@ type User struct { // QuickSight settings. // // - READER_PRO : Reader Pro adds Generative BI capabilities to the Reader role. - // Reader Pros have access to Amazon Q Business, can build stories with Amazon Q, - // and can generate executive summaries from dashboards. + // Reader Pros have access to Amazon Q in Amazon QuickSight, can build stories with + // Amazon Q, and can generate executive summaries from dashboards. // // - AUTHOR_PRO : Author Pro adds Generative BI capabilities to the Author role. // Author Pros can author dashboards with natural language with Amazon Q, build diff --git a/service/quicksight/validators.go b/service/quicksight/validators.go index 1d4e07accfa..5f26a331edb 100644 --- a/service/quicksight/validators.go +++ b/service/quicksight/validators.go @@ -1510,6 +1510,26 @@ func (m *validateOpDescribeIpRestriction) HandleInitialize(ctx context.Context, return next.HandleInitialize(ctx, in) } +type validateOpDescribeKeyRegistration struct { +} + +func (*validateOpDescribeKeyRegistration) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeKeyRegistration) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeKeyRegistrationInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeKeyRegistrationInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpDescribeNamespace struct { } @@ -3150,6 +3170,26 @@ func (m *validateOpUpdateIpRestriction) HandleInitialize(ctx context.Context, in return next.HandleInitialize(ctx, in) } +type validateOpUpdateKeyRegistration struct { +} + +func (*validateOpUpdateKeyRegistration) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateKeyRegistration) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateKeyRegistrationInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateKeyRegistrationInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + type validateOpUpdatePublicSharingSettings struct { } @@ -3750,6 +3790,10 @@ func addOpDescribeIpRestrictionValidationMiddleware(stack *middleware.Stack) err return stack.Initialize.Add(&validateOpDescribeIpRestriction{}, middleware.After) } +func addOpDescribeKeyRegistrationValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeKeyRegistration{}, middleware.After) +} + func addOpDescribeNamespaceValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpDescribeNamespace{}, middleware.After) } @@ -4078,6 +4122,10 @@ func addOpUpdateIpRestrictionValidationMiddleware(stack *middleware.Stack) error return stack.Initialize.Add(&validateOpUpdateIpRestriction{}, middleware.After) } +func addOpUpdateKeyRegistrationValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateKeyRegistration{}, middleware.After) +} + func addOpUpdatePublicSharingSettingsValidationMiddleware(stack *middleware.Stack) error { return stack.Initialize.Add(&validateOpUpdatePublicSharingSettings{}, middleware.After) } @@ -13706,9 +13754,6 @@ func validateRedshiftIAMParameters(v *types.RedshiftIAMParameters) error { if v.RoleArn == nil { invalidParams.Add(smithy.NewErrParamRequired("RoleArn")) } - if v.DatabaseUser == nil { - invalidParams.Add(smithy.NewErrParamRequired("DatabaseUser")) - } if invalidParams.Len() > 0 { return invalidParams } else { @@ -19444,6 +19489,21 @@ func validateOpDescribeIpRestrictionInput(v *DescribeIpRestrictionInput) error { } } +func validateOpDescribeKeyRegistrationInput(v *DescribeKeyRegistrationInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeKeyRegistrationInput"} + if v.AwsAccountId == nil { + invalidParams.Add(smithy.NewErrParamRequired("AwsAccountId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpDescribeNamespaceInput(v *DescribeNamespaceInput) error { if v == nil { return nil @@ -21197,6 +21257,24 @@ func validateOpUpdateIpRestrictionInput(v *UpdateIpRestrictionInput) error { } } +func validateOpUpdateKeyRegistrationInput(v *UpdateKeyRegistrationInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateKeyRegistrationInput"} + if v.AwsAccountId == nil { + invalidParams.Add(smithy.NewErrParamRequired("AwsAccountId")) + } + if v.KeyRegistration == nil { + invalidParams.Add(smithy.NewErrParamRequired("KeyRegistration")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + func validateOpUpdatePublicSharingSettingsInput(v *UpdatePublicSharingSettingsInput) error { if v == nil { return nil diff --git a/service/sagemaker/api_op_CreateSpace.go b/service/sagemaker/api_op_CreateSpace.go index d46ae894406..dca99d02dea 100644 --- a/service/sagemaker/api_op_CreateSpace.go +++ b/service/sagemaker/api_op_CreateSpace.go @@ -11,7 +11,7 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Creates a space used for real time collaboration in a domain. +// Creates a private space or a space used for real time collaboration in a domain. func (c *Client) CreateSpace(ctx context.Context, params *CreateSpaceInput, optFns ...func(*Options)) (*CreateSpaceOutput, error) { if params == nil { params = &CreateSpaceInput{} diff --git a/service/sagemaker/api_op_CreateWorkteam.go b/service/sagemaker/api_op_CreateWorkteam.go index d1c36d080fa..300e50144ed 100644 --- a/service/sagemaker/api_op_CreateWorkteam.go +++ b/service/sagemaker/api_op_CreateWorkteam.go @@ -79,6 +79,11 @@ type CreateWorkteamInput struct { // [Using Cost Allocation Tags]: https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what Tags []types.Tag + // Use this optional parameter to constrain access to an Amazon S3 resource based + // on the IP address using supported IAM global condition keys. The Amazon S3 + // resource is accessed in the worker portal using a Amazon S3 presigned URL. + WorkerAccessConfiguration *types.WorkerAccessConfiguration + // The name of the workforce. WorkforceName *string diff --git a/service/sagemaker/api_op_ListApps.go b/service/sagemaker/api_op_ListApps.go index e7bedf3c1cd..843a1ec23b2 100644 --- a/service/sagemaker/api_op_ListApps.go +++ b/service/sagemaker/api_op_ListApps.go @@ -32,10 +32,12 @@ type ListAppsInput struct { // A parameter to search for the domain ID. DomainIdEquals *string - // The total number of items to return in the response. If the total number of - // items available is more than the value specified, a NextToken is provided in - // the response. To resume pagination, provide the NextToken value in the as part - // of a subsequent call. The default value is 10. + // This parameter defines the maximum number of results that can be returned in a + // single response. The MaxResults parameter is an upper bound, not a target. If + // there are more results available than the value specified, a NextToken is + // provided in the response. The NextToken indicates that the user should get the + // next set of results by providing this token as a part of a subsequent call. The + // default value for MaxResults is 10. MaxResults *int32 // If the previous response was truncated, you will receive this token. Use it in @@ -159,10 +161,12 @@ var _ ListAppsAPIClient = (*Client)(nil) // ListAppsPaginatorOptions is the paginator options for ListApps type ListAppsPaginatorOptions struct { - // The total number of items to return in the response. If the total number of - // items available is more than the value specified, a NextToken is provided in - // the response. To resume pagination, provide the NextToken value in the as part - // of a subsequent call. The default value is 10. + // This parameter defines the maximum number of results that can be returned in a + // single response. The MaxResults parameter is an upper bound, not a target. If + // there are more results available than the value specified, a NextToken is + // provided in the response. The NextToken indicates that the user should get the + // next set of results by providing this token as a part of a subsequent call. The + // default value for MaxResults is 10. Limit int32 // Set to true if pagination should stop if the service returns a pagination token diff --git a/service/sagemaker/api_op_ListDomains.go b/service/sagemaker/api_op_ListDomains.go index bc6de67103b..89f47ef3f83 100644 --- a/service/sagemaker/api_op_ListDomains.go +++ b/service/sagemaker/api_op_ListDomains.go @@ -29,10 +29,12 @@ func (c *Client) ListDomains(ctx context.Context, params *ListDomainsInput, optF type ListDomainsInput struct { - // The total number of items to return in the response. If the total number of - // items available is more than the value specified, a NextToken is provided in - // the response. To resume pagination, provide the NextToken value in the as part - // of a subsequent call. The default value is 10. + // This parameter defines the maximum number of results that can be returned in a + // single response. The MaxResults parameter is an upper bound, not a target. If + // there are more results available than the value specified, a NextToken is + // provided in the response. The NextToken indicates that the user should get the + // next set of results by providing this token as a part of a subsequent call. The + // default value for MaxResults is 10. MaxResults *int32 // If the previous response was truncated, you will receive this token. Use it in @@ -142,10 +144,12 @@ var _ ListDomainsAPIClient = (*Client)(nil) // ListDomainsPaginatorOptions is the paginator options for ListDomains type ListDomainsPaginatorOptions struct { - // The total number of items to return in the response. If the total number of - // items available is more than the value specified, a NextToken is provided in - // the response. To resume pagination, provide the NextToken value in the as part - // of a subsequent call. The default value is 10. + // This parameter defines the maximum number of results that can be returned in a + // single response. The MaxResults parameter is an upper bound, not a target. If + // there are more results available than the value specified, a NextToken is + // provided in the response. The NextToken indicates that the user should get the + // next set of results by providing this token as a part of a subsequent call. The + // default value for MaxResults is 10. Limit int32 // Set to true if pagination should stop if the service returns a pagination token diff --git a/service/sagemaker/api_op_ListSpaces.go b/service/sagemaker/api_op_ListSpaces.go index 8d4bf7a072e..14cbf258668 100644 --- a/service/sagemaker/api_op_ListSpaces.go +++ b/service/sagemaker/api_op_ListSpaces.go @@ -32,10 +32,12 @@ type ListSpacesInput struct { // A parameter to search for the domain ID. DomainIdEquals *string - // The total number of items to return in the response. If the total number of - // items available is more than the value specified, a NextToken is provided in - // the response. To resume pagination, provide the NextToken value in the as part - // of a subsequent call. The default value is 10. + // This parameter defines the maximum number of results that can be returned in a + // single response. The MaxResults parameter is an upper bound, not a target. If + // there are more results available than the value specified, a NextToken is + // provided in the response. The NextToken indicates that the user should get the + // next set of results by providing this token as a part of a subsequent call. The + // default value for MaxResults is 10. MaxResults *int32 // If the previous response was truncated, you will receive this token. Use it in @@ -154,10 +156,12 @@ var _ ListSpacesAPIClient = (*Client)(nil) // ListSpacesPaginatorOptions is the paginator options for ListSpaces type ListSpacesPaginatorOptions struct { - // The total number of items to return in the response. If the total number of - // items available is more than the value specified, a NextToken is provided in - // the response. To resume pagination, provide the NextToken value in the as part - // of a subsequent call. The default value is 10. + // This parameter defines the maximum number of results that can be returned in a + // single response. The MaxResults parameter is an upper bound, not a target. If + // there are more results available than the value specified, a NextToken is + // provided in the response. The NextToken indicates that the user should get the + // next set of results by providing this token as a part of a subsequent call. The + // default value for MaxResults is 10. Limit int32 // Set to true if pagination should stop if the service returns a pagination token diff --git a/service/sagemaker/api_op_ListUserProfiles.go b/service/sagemaker/api_op_ListUserProfiles.go index 56a8b95e941..104ffdf2a45 100644 --- a/service/sagemaker/api_op_ListUserProfiles.go +++ b/service/sagemaker/api_op_ListUserProfiles.go @@ -32,10 +32,12 @@ type ListUserProfilesInput struct { // A parameter by which to filter the results. DomainIdEquals *string - // The total number of items to return in the response. If the total number of - // items available is more than the value specified, a NextToken is provided in - // the response. To resume pagination, provide the NextToken value in the as part - // of a subsequent call. The default value is 10. + // This parameter defines the maximum number of results that can be returned in a + // single response. The MaxResults parameter is an upper bound, not a target. If + // there are more results available than the value specified, a NextToken is + // provided in the response. The NextToken indicates that the user should get the + // next set of results by providing this token as a part of a subsequent call. The + // default value for MaxResults is 10. MaxResults *int32 // If the previous response was truncated, you will receive this token. Use it in @@ -155,10 +157,12 @@ var _ ListUserProfilesAPIClient = (*Client)(nil) // ListUserProfilesPaginatorOptions is the paginator options for ListUserProfiles type ListUserProfilesPaginatorOptions struct { - // The total number of items to return in the response. If the total number of - // items available is more than the value specified, a NextToken is provided in - // the response. To resume pagination, provide the NextToken value in the as part - // of a subsequent call. The default value is 10. + // This parameter defines the maximum number of results that can be returned in a + // single response. The MaxResults parameter is an upper bound, not a target. If + // there are more results available than the value specified, a NextToken is + // provided in the response. The NextToken indicates that the user should get the + // next set of results by providing this token as a part of a subsequent call. The + // default value for MaxResults is 10. Limit int32 // Set to true if pagination should stop if the service returns a pagination token diff --git a/service/sagemaker/api_op_UpdateWorkteam.go b/service/sagemaker/api_op_UpdateWorkteam.go index f9b0b7503e0..a4b4cf1faa5 100644 --- a/service/sagemaker/api_op_UpdateWorkteam.go +++ b/service/sagemaker/api_op_UpdateWorkteam.go @@ -65,6 +65,11 @@ type UpdateWorkteamInput struct { // Configures SNS topic notifications for available or expiring work items NotificationConfiguration *types.NotificationConfiguration + // Use this optional parameter to constrain access to an Amazon S3 resource based + // on the IP address using supported IAM global condition keys. The Amazon S3 + // resource is accessed in the worker portal using a Amazon S3 presigned URL. + WorkerAccessConfiguration *types.WorkerAccessConfiguration + noSmithyDocumentSerde } diff --git a/service/sagemaker/deserializers.go b/service/sagemaker/deserializers.go index de5872bda1f..45b0a3a04b7 100644 --- a/service/sagemaker/deserializers.go +++ b/service/sagemaker/deserializers.go @@ -51528,6 +51528,55 @@ func awsAwsjson11_deserializeDocumentIamIdentity(v **types.IamIdentity, value in return nil } +func awsAwsjson11_deserializeDocumentIamPolicyConstraints(v **types.IamPolicyConstraints, 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.IamPolicyConstraints + if *v == nil { + sv = &types.IamPolicyConstraints{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "SourceIp": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EnabledOrDisabled to be of type string, got %T instead", value) + } + sv.SourceIp = types.EnabledOrDisabled(jtv) + } + + case "VpcSourceIp": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EnabledOrDisabled to be of type string, got %T instead", value) + } + sv.VpcSourceIp = types.EnabledOrDisabled(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsAwsjson11_deserializeDocumentIdentityProviderOAuthSetting(v **types.IdentityProviderOAuthSetting, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -70033,6 +70082,42 @@ func awsAwsjson11_deserializeDocumentS3ModelDataSource(v **types.S3ModelDataSour return nil } +func awsAwsjson11_deserializeDocumentS3Presign(v **types.S3Presign, 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.S3Presign + if *v == nil { + sv = &types.S3Presign{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "IamPolicyConstraints": + if err := awsAwsjson11_deserializeDocumentIamPolicyConstraints(&sv.IamPolicyConstraints, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsAwsjson11_deserializeDocumentS3StorageConfig(v **types.S3StorageConfig, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -77517,6 +77602,42 @@ func awsAwsjson11_deserializeDocumentWarmPoolStatus(v **types.WarmPoolStatus, va return nil } +func awsAwsjson11_deserializeDocumentWorkerAccessConfiguration(v **types.WorkerAccessConfiguration, 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.WorkerAccessConfiguration + if *v == nil { + sv = &types.WorkerAccessConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "S3Presign": + if err := awsAwsjson11_deserializeDocumentS3Presign(&sv.S3Presign, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsAwsjson11_deserializeDocumentWorkforce(v **types.Workforce, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -77946,6 +78067,11 @@ func awsAwsjson11_deserializeDocumentWorkteam(v **types.Workteam, value interfac sv.SubDomain = ptr.String(jtv) } + case "WorkerAccessConfiguration": + if err := awsAwsjson11_deserializeDocumentWorkerAccessConfiguration(&sv.WorkerAccessConfiguration, value); err != nil { + return err + } + case "WorkforceArn": if value != nil { jtv, ok := value.(string) diff --git a/service/sagemaker/serializers.go b/service/sagemaker/serializers.go index 1ca154d7e9e..97c4e9528fe 100644 --- a/service/sagemaker/serializers.go +++ b/service/sagemaker/serializers.go @@ -22168,6 +22168,23 @@ func awsAwsjson11_serializeDocumentHyperParameterTuningResourceConfig(v *types.H return nil } +func awsAwsjson11_serializeDocumentIamPolicyConstraints(v *types.IamPolicyConstraints, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.SourceIp) > 0 { + ok := object.Key("SourceIp") + ok.String(string(v.SourceIp)) + } + + if len(v.VpcSourceIp) > 0 { + ok := object.Key("VpcSourceIp") + ok.String(string(v.VpcSourceIp)) + } + + return nil +} + func awsAwsjson11_serializeDocumentIdentityProviderOAuthSetting(v *types.IdentityProviderOAuthSetting, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -26423,6 +26440,20 @@ func awsAwsjson11_serializeDocumentS3ModelDataSource(v *types.S3ModelDataSource, return nil } +func awsAwsjson11_serializeDocumentS3Presign(v *types.S3Presign, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.IamPolicyConstraints != nil { + ok := object.Key("IamPolicyConstraints") + if err := awsAwsjson11_serializeDocumentIamPolicyConstraints(v.IamPolicyConstraints, ok); err != nil { + return err + } + } + + return nil +} + func awsAwsjson11_serializeDocumentS3StorageConfig(v *types.S3StorageConfig, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -28231,6 +28262,20 @@ func awsAwsjson11_serializeDocumentVpcSecurityGroupIds(v []string, value smithyj return nil } +func awsAwsjson11_serializeDocumentWorkerAccessConfiguration(v *types.WorkerAccessConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.S3Presign != nil { + ok := object.Key("S3Presign") + if err := awsAwsjson11_serializeDocumentS3Presign(v.S3Presign, ok); err != nil { + return err + } + } + + return nil +} + func awsAwsjson11_serializeDocumentWorkforceSecurityGroupIds(v []string, value smithyjson.Value) error { array := value.Array() defer array.Close() @@ -31350,6 +31395,13 @@ func awsAwsjson11_serializeOpDocumentCreateWorkteamInput(v *CreateWorkteamInput, } } + if v.WorkerAccessConfiguration != nil { + ok := object.Key("WorkerAccessConfiguration") + if err := awsAwsjson11_serializeDocumentWorkerAccessConfiguration(v.WorkerAccessConfiguration, ok); err != nil { + return err + } + } + if v.WorkforceName != nil { ok := object.Key("WorkforceName") ok.String(*v.WorkforceName) @@ -38361,6 +38413,13 @@ func awsAwsjson11_serializeOpDocumentUpdateWorkteamInput(v *UpdateWorkteamInput, } } + if v.WorkerAccessConfiguration != nil { + ok := object.Key("WorkerAccessConfiguration") + if err := awsAwsjson11_serializeDocumentWorkerAccessConfiguration(v.WorkerAccessConfiguration, ok); err != nil { + return err + } + } + if v.WorkteamName != nil { ok := object.Key("WorkteamName") ok.String(*v.WorkteamName) diff --git a/service/sagemaker/types/enums.go b/service/sagemaker/types/enums.go index 998d49f4b1c..ac3b847e8f9 100644 --- a/service/sagemaker/types/enums.go +++ b/service/sagemaker/types/enums.go @@ -2124,6 +2124,25 @@ func (EdgePresetDeploymentType) Values() []EdgePresetDeploymentType { } } +type EnabledOrDisabled string + +// Enum values for EnabledOrDisabled +const ( + EnabledOrDisabledEnabled EnabledOrDisabled = "Enabled" + EnabledOrDisabledDisabled EnabledOrDisabled = "Disabled" +) + +// Values returns all known values for EnabledOrDisabled. 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 (EnabledOrDisabled) Values() []EnabledOrDisabled { + return []EnabledOrDisabled{ + "Enabled", + "Disabled", + } +} + type EndpointConfigSortKey string // Enum values for EndpointConfigSortKey diff --git a/service/sagemaker/types/types.go b/service/sagemaker/types/types.go index 6bf9f1b6a95..1294bea0de7 100644 --- a/service/sagemaker/types/types.go +++ b/service/sagemaker/types/types.go @@ -8273,6 +8273,29 @@ type IamIdentity struct { noSmithyDocumentSerde } +// Use this parameter to specify a supported global condition key that is added to +// the IAM policy. +type IamPolicyConstraints struct { + + // When SourceIp is Enabled the worker's IP address when a task is rendered in the + // worker portal is added to the IAM policy as a Condition used to generate the + // Amazon S3 presigned URL. This IP address is checked by Amazon S3 and must match + // in order for the Amazon S3 resource to be rendered in the worker portal. + SourceIp EnabledOrDisabled + + // When VpcSourceIp is Enabled the worker's IP address when a task is rendered in + // private worker portal inside the VPC is added to the IAM policy as a Condition + // used to generate the Amazon S3 presigned URL. To render the task successfully + // Amazon S3 checks that the presigned URL is being accessed over an Amazon S3 VPC + // Endpoint, and that the worker's IP address matches the IP address in the IAM + // policy. To learn more about configuring private worker portal, see [Use Amazon VPC mode from a private worker portal]. + // + // [Use Amazon VPC mode from a private worker portal]: https://docs.aws.amazon.com/sagemaker/latest/dg/samurai-vpc-worker-portal.html + VpcSourceIp EnabledOrDisabled + + noSmithyDocumentSerde +} + // The Amazon SageMaker Canvas application setting where you configure OAuth for // connecting to an external data source, such as Snowflake. type IdentityProviderOAuthSetting struct { @@ -15271,6 +15294,22 @@ type S3ModelDataSource struct { noSmithyDocumentSerde } +// This object defines the access restrictions to Amazon S3 resources that are +// included in custom worker task templates using the Liquid filter, +// grant_read_access . +// +// To learn more about how custom templates are created, see [Create custom worker task templates]. +// +// [Create custom worker task templates]: https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-custom-templates.html +type S3Presign struct { + + // Use this parameter to specify the allowed request source. Possible sources are + // either SourceIp or VpcSourceIp . + IamPolicyConstraints *IamPolicyConstraints + + noSmithyDocumentSerde +} + // The Amazon Simple Storage (Amazon S3) location and security configuration for // OfflineStore . type S3StorageConfig struct { @@ -18524,6 +18563,17 @@ type WarmPoolStatus struct { noSmithyDocumentSerde } +// Use this optional parameter to constrain access to an Amazon S3 resource based +// on the IP address using supported IAM global condition keys. The Amazon S3 +// resource is accessed in the worker portal using a Amazon S3 presigned URL. +type WorkerAccessConfiguration struct { + + // Defines any Amazon S3 resource constraints. + S3Presign *S3Presign + + noSmithyDocumentSerde +} + // A single private workforce, which is automatically created when you create your // first private work team. You can create one private work force in each Amazon // Web Services Region. By default, any workforce-related API operation used in a @@ -18687,6 +18737,9 @@ type Workteam struct { // labeling your data objects. SubDomain *string + // Describes any access constraints that have been defined for Amazon S3 resources. + WorkerAccessConfiguration *WorkerAccessConfiguration + // The Amazon Resource Name (ARN) of the workforce. WorkforceArn *string diff --git a/service/secretsmanager/api_op_DescribeSecret.go b/service/secretsmanager/api_op_DescribeSecret.go index be73019d444..6455cb7e84d 100644 --- a/service/secretsmanager/api_op_DescribeSecret.go +++ b/service/secretsmanager/api_op_DescribeSecret.go @@ -129,7 +129,8 @@ type DescribeSecretOutput struct { // - InSync , which indicates that the replica was created. ReplicationStatus []types.ReplicationStatusType - // Specifies whether automatic rotation is turned on for this secret. + // Specifies whether automatic rotation is turned on for this secret. If the + // secret has never been configured for rotation, Secrets Manager returns null. // // To turn on rotation, use RotateSecret. To turn off rotation, use CancelRotateSecret. RotationEnabled *bool diff --git a/service/secretsmanager/api_op_GetSecretValue.go b/service/secretsmanager/api_op_GetSecretValue.go index 16a7f98dea0..8e96a54b5c2 100644 --- a/service/secretsmanager/api_op_GetSecretValue.go +++ b/service/secretsmanager/api_op_GetSecretValue.go @@ -54,7 +54,8 @@ func (c *Client) GetSecretValue(ctx context.Context, params *GetSecretValueInput type GetSecretValueInput struct { - // The ARN or name of the secret to retrieve. + // The ARN or name of the secret to retrieve. To retrieve a secret from another + // account, you must use an ARN. // // For an ARN, we recommend that you specify a complete ARN rather than a partial // ARN. See [Finding a secret from a partial ARN]. diff --git a/service/secretsmanager/api_op_RotateSecret.go b/service/secretsmanager/api_op_RotateSecret.go index 7d11126c945..be1941ed9af 100644 --- a/service/secretsmanager/api_op_RotateSecret.go +++ b/service/secretsmanager/api_op_RotateSecret.go @@ -98,7 +98,7 @@ type RotateSecretInput struct { // // By default, Secrets Manager rotates the secret immediately. // - // [testSecret step]: https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotate-secrets_how.html + // [testSecret step]: https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotate-secrets_lambda-functions.html#rotate-secrets_lambda-functions-code RotateImmediately *bool // For secrets that use a Lambda rotation function to rotate, the ARN of the diff --git a/service/secretsmanager/api_op_ValidateResourcePolicy.go b/service/secretsmanager/api_op_ValidateResourcePolicy.go index eef801a098c..7ae9549d01c 100644 --- a/service/secretsmanager/api_op_ValidateResourcePolicy.go +++ b/service/secretsmanager/api_op_ValidateResourcePolicy.go @@ -61,7 +61,8 @@ type ValidateResourcePolicyInput struct { // This member is required. ResourcePolicy *string - // This field is reserved for internal use. + // The ARN or name of the secret with the resource-based policy you want to + // validate. SecretId *string noSmithyDocumentSerde diff --git a/service/vpclattice/internal/endpoints/endpoints.go b/service/vpclattice/internal/endpoints/endpoints.go index e2e15796f36..83b3bee1939 100644 --- a/service/vpclattice/internal/endpoints/endpoints.go +++ b/service/vpclattice/internal/endpoints/endpoints.go @@ -142,6 +142,12 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "ap-northeast-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-northeast-2", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-south-1", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "ap-southeast-1", }: endpoints.Endpoint{},