diff --git a/clients/client-pi/src/commands/DescribeDimensionKeysCommand.ts b/clients/client-pi/src/commands/DescribeDimensionKeysCommand.ts index b6a2d37c7083..0142b0e5c63d 100644 --- a/clients/client-pi/src/commands/DescribeDimensionKeysCommand.ts +++ b/clients/client-pi/src/commands/DescribeDimensionKeysCommand.ts @@ -48,7 +48,7 @@ export interface DescribeDimensionKeysCommandOutput extends DescribeDimensionKey * PeriodInSeconds: Number("int"), * GroupBy: { // DimensionGroup * Group: "STRING_VALUE", // required - * Dimensions: [ // RequestStringList + * Dimensions: [ // SanitizedStringList * "STRING_VALUE", * ], * Limit: Number("int"), diff --git a/clients/client-pi/src/commands/GetResourceMetricsCommand.ts b/clients/client-pi/src/commands/GetResourceMetricsCommand.ts index 3cb928b83c43..fd15b2003753 100644 --- a/clients/client-pi/src/commands/GetResourceMetricsCommand.ts +++ b/clients/client-pi/src/commands/GetResourceMetricsCommand.ts @@ -48,7 +48,7 @@ export interface GetResourceMetricsCommandOutput extends GetResourceMetricsRespo * Metric: "STRING_VALUE", // required * GroupBy: { // DimensionGroup * Group: "STRING_VALUE", // required - * Dimensions: [ // RequestStringList + * Dimensions: [ // SanitizedStringList * "STRING_VALUE", * ], * Limit: Number("int"), diff --git a/clients/client-pi/src/commands/ListAvailableResourceDimensionsCommand.ts b/clients/client-pi/src/commands/ListAvailableResourceDimensionsCommand.ts index b9ba6cefb71f..135b4da515a8 100644 --- a/clients/client-pi/src/commands/ListAvailableResourceDimensionsCommand.ts +++ b/clients/client-pi/src/commands/ListAvailableResourceDimensionsCommand.ts @@ -47,6 +47,9 @@ export interface ListAvailableResourceDimensionsCommandOutput * ], * MaxResults: Number("int"), * NextToken: "STRING_VALUE", + * AuthorizedActions: [ // AuthorizedActionsList + * "DescribeDimensionKeys" || "GetDimensionKeyDetails" || "GetResourceMetrics", + * ], * }; * const command = new ListAvailableResourceDimensionsCommand(input); * const response = await client.send(command); diff --git a/clients/client-pi/src/models/models_0.ts b/clients/client-pi/src/models/models_0.ts index 0f6091c7ee3c..8154c3060d3a 100644 --- a/clients/client-pi/src/models/models_0.ts +++ b/clients/client-pi/src/models/models_0.ts @@ -208,6 +208,21 @@ export interface AnalysisReportSummary { Tags?: Tag[]; } +/** + * @public + * @enum + */ +export const FineGrainedAction = { + DESCRIBE_DIMENSION_KEYS: "DescribeDimensionKeys", + GET_DIMENSION_KEY_DETAILS: "GetDimensionKeyDetails", + GET_RESOURCE_METRICS: "GetResourceMetrics", +} as const; + +/** + * @public + */ +export type FineGrainedAction = (typeof FineGrainedAction)[keyof typeof FineGrainedAction]; + /** * @public */ @@ -1578,6 +1593,15 @@ export interface ListAvailableResourceDimensionsRequest { * @public */ NextToken?: string; + + /** + *

The actions to discover the dimensions you are authorized to access. If you specify multiple actions, then the response will + * contain the dimensions common for all the actions.

+ *

When you don't specify this request parameter or provide an empty list, the response contains all the + * available dimensions for the target database engine whether or not you are authorized to access them.

+ * @public + */ + AuthorizedActions?: FineGrainedAction[]; } /** diff --git a/clients/client-pi/src/protocols/Aws_json1_1.ts b/clients/client-pi/src/protocols/Aws_json1_1.ts index de8b30bef6df..f512f01a7c47 100644 --- a/clients/client-pi/src/protocols/Aws_json1_1.ts +++ b/clients/client-pi/src/protocols/Aws_json1_1.ts @@ -74,6 +74,7 @@ import { DescribeDimensionKeysResponse, DimensionGroup, DimensionKeyDescription, + FineGrainedAction, GetDimensionKeyDetailsRequest, GetPerformanceAnalysisReportRequest, GetPerformanceAnalysisReportResponse, @@ -606,6 +607,8 @@ const de_NotAuthorizedExceptionRes = async ( // se_AdditionalMetricsList omitted. +// se_AuthorizedActionsList omitted. + /** * serializeAws_json1_1CreatePerformanceAnalysisReportRequest */ @@ -689,7 +692,7 @@ const se_GetResourceMetricsRequest = (input: GetResourceMetricsRequest, context: // se_RequestedDimensionList omitted. -// se_RequestStringList omitted. +// se_SanitizedStringList omitted. // se_Tag omitted. diff --git a/codegen/sdk-codegen/aws-models/pi.json b/codegen/sdk-codegen/aws-models/pi.json index 26f4fa20a566..de3a37059fae 100644 --- a/codegen/sdk-codegen/aws-models/pi.json +++ b/codegen/sdk-codegen/aws-models/pi.json @@ -43,7 +43,7 @@ "com.amazonaws.pi#AdditionalMetricsList": { "type": "list", "member": { - "target": "com.amazonaws.pi#RequestString" + "target": "com.amazonaws.pi#SanitizedString" }, "traits": { "smithy.api#length": { @@ -211,6 +211,18 @@ } } }, + "com.amazonaws.pi#AuthorizedActionsList": { + "type": "list", + "member": { + "target": "com.amazonaws.pi#FineGrainedAction" + }, + "traits": { + "smithy.api#length": { + "min": 0, + "max": 3 + } + } + }, "com.amazonaws.pi#Boolean": { "type": "boolean" }, @@ -644,14 +656,14 @@ "type": "structure", "members": { "Group": { - "target": "com.amazonaws.pi#RequestString", + "target": "com.amazonaws.pi#SanitizedString", "traits": { "smithy.api#documentation": "

The name of the dimension group. Valid values are as follows:

\n ", "smithy.api#required": {} } }, "Dimensions": { - "target": "com.amazonaws.pi#RequestStringList", + "target": "com.amazonaws.pi#SanitizedStringList", "traits": { "smithy.api#documentation": "

A list of specific dimensions from a dimension group. If this parameter is not present,\n then it signifies that all of the dimensions in the group were requested, or are present in\n the response.

\n

Valid values for elements in the Dimensions array are:

\n " } @@ -775,7 +787,7 @@ "com.amazonaws.pi#DimensionsMetricList": { "type": "list", "member": { - "target": "com.amazonaws.pi#RequestString" + "target": "com.amazonaws.pi#SanitizedString" }, "traits": { "smithy.api#length": { @@ -854,6 +866,29 @@ } } }, + "com.amazonaws.pi#FineGrainedAction": { + "type": "enum", + "members": { + "DESCRIBE_DIMENSION_KEYS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DescribeDimensionKeys" + } + }, + "GET_DIMENSION_KEY_DETAILS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GetDimensionKeyDetails" + } + }, + "GET_RESOURCE_METRICS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GetResourceMetrics" + } + } + } + }, "com.amazonaws.pi#GetDimensionKeyDetails": { "type": "operation", "input": { @@ -1402,6 +1437,12 @@ "traits": { "smithy.api#documentation": "

An optional pagination token provided by a previous request. If this parameter is specified, \n the response includes only records beyond the token, up to the value specified by MaxRecords.\n

" } + }, + "AuthorizedActions": { + "target": "com.amazonaws.pi#AuthorizedActionsList", + "traits": { + "smithy.api#documentation": "

The actions to discover the dimensions you are authorized to access. If you specify multiple actions, then the response will\n contain the dimensions common for all the actions.

\n

When you don't specify this request parameter or provide an empty list, the response contains all the \n available dimensions for the target database engine whether or not you are authorized to access them.

" + } } }, "traits": { @@ -1740,7 +1781,7 @@ "type": "structure", "members": { "Metric": { - "target": "com.amazonaws.pi#RequestString", + "target": "com.amazonaws.pi#SanitizedString", "traits": { "smithy.api#documentation": "

The name of a Performance Insights metric to be measured.

\n

Valid values for Metric are:

\n \n

If the number of active sessions is less than an internal Performance Insights threshold, db.load.avg and db.sampledload.avg are the same\n value. If the number of active sessions is greater than the internal threshold, Performance Insights samples the active sessions, with db.load.avg showing the\n scaled values, db.sampledload.avg showing the raw values, and db.sampledload.avg less than\n db.load.avg. For most use cases, you can query db.load.avg only.

", "smithy.api#required": {} @@ -1766,7 +1807,7 @@ "com.amazonaws.pi#MetricQueryFilterMap": { "type": "map", "key": { - "target": "com.amazonaws.pi#RequestString" + "target": "com.amazonaws.pi#SanitizedString" }, "value": { "target": "com.amazonaws.pi#RequestString" @@ -1787,7 +1828,7 @@ "com.amazonaws.pi#MetricTypeList": { "type": "list", "member": { - "target": "com.amazonaws.pi#RequestString" + "target": "com.amazonaws.pi#SanitizedString" } }, "com.amazonaws.pi#MetricValuesList": { @@ -2867,22 +2908,10 @@ "smithy.api#pattern": "\\S" } }, - "com.amazonaws.pi#RequestStringList": { - "type": "list", - "member": { - "target": "com.amazonaws.pi#RequestString" - }, - "traits": { - "smithy.api#length": { - "min": 1, - "max": 10 - } - } - }, "com.amazonaws.pi#RequestedDimensionList": { "type": "list", "member": { - "target": "com.amazonaws.pi#RequestString" + "target": "com.amazonaws.pi#SanitizedString" }, "traits": { "smithy.api#length": { @@ -2965,6 +2994,29 @@ "target": "com.amazonaws.pi#ResponseResourceMetric" } }, + "com.amazonaws.pi#SanitizedString": { + "type": "string", + "traits": { + "smithy.api#documentation": "A generic string type that forbids characters that could expose our service (or services downstream)\n to security risks around injections.", + "smithy.api#length": { + "min": 0, + "max": 256 + }, + "smithy.api#pattern": "^[a-zA-Z0-9-_\\.:/*)( ]+$" + } + }, + "com.amazonaws.pi#SanitizedStringList": { + "type": "list", + "member": { + "target": "com.amazonaws.pi#SanitizedString" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 10 + } + } + }, "com.amazonaws.pi#ServiceType": { "type": "enum", "members": {