aws-sdk-securityhub 1.165.0 → 1.166.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 21b02a0398f7cc6dfb637a9fa5e134a9d2f83044ef9a4c1f9f39c819e4102667
4
- data.tar.gz: 89a11ff89597d1f327b4bb2b44e3b3621858ce45d15ca582246aa8277f4cd790
3
+ metadata.gz: f2b99343f8468f691eb06034c7068b319ac150851570109cf7f0810a667a1075
4
+ data.tar.gz: 06264f6d2aee3cf62ba6b98c5bbf8cd69765fb4661ab96da23c2311feb3cd4b2
5
5
  SHA512:
6
- metadata.gz: d168ee0a8d583820a744a215448943ae49544e6f2d759832163984e37da23fa859c9b423cefa38d76f159853ff54b1bc2c7fd3c00626054e0e70f4052c2018ac
7
- data.tar.gz: 760894b787243bbf22efab26278869305b9055be3c4820f0ec2daa80124e3de5a60300c239214bfbd7cb19275d563caaf6543d5db4b8d7c85dd48ecadb46ae2d
6
+ metadata.gz: b3ff04e68d59da71c955fe84dbd9da2ff08a5fa2b57c6e6e1311945a690745a0511a4bb49b1c5331311ec270b89fe1c6cf32c78c8bb6ab397841161cce70c646
7
+ data.tar.gz: bb0ef190c0ba627089543c22ad7633610dada0313933600356ea2b4a62e6dc3735ca77cc952ea1cf7341c665f60db3b3ecc1f43bf1ba530cde4ecea6bb93c22b
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.166.0 (2026-10-01)
5
+ ------------------
6
+
7
+ * Feature - Adds GetRemediationsV2 and ListExposuresByRemediationV2 APIs. This feature allows customers to see their highest priority remediations for their Exposure findings. Remediations target key changes customers can make to resources to drive finding resolution.
8
+
4
9
  1.165.0 (2026-09-11)
5
10
  ------------------
6
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.165.0
1
+ 1.166.0
@@ -8975,6 +8975,162 @@ module Aws::SecurityHub
8975
8975
  req.send_request(options)
8976
8976
  end
8977
8977
 
8978
+ # Retrieves remediation targets for the account, or for all member
8979
+ # accounts if the caller is the delegated administrator. Results are
8980
+ # sorted by priority, highest first, and are paginated. Use `TargetUid`
8981
+ # or `MetadataUid` to scope the request to a single target or finding.
8982
+ #
8983
+ # @option params [String] :target_uid
8984
+ # The unique identifier (ID) of an existing remediation target to
8985
+ # return. Returns the single matching target. You can't use `TargetUid`
8986
+ # together with `MetadataUid` or `Filters`.
8987
+ #
8988
+ # @option params [String] :metadata_uid
8989
+ # The unique identifier (ID) of the Security Hub exposure finding, found
8990
+ # under the `metadata.uid` field of the finding. Returns the remediation
8991
+ # targets associated with that finding. You can't use `MetadataUid`
8992
+ # together with `TargetUid` or `Filters`.
8993
+ #
8994
+ # @option params [Types::RemediationFilters] :filters
8995
+ # Filters remediation targets based on a set of criteria. You can't use
8996
+ # `Filters` together with `TargetUid` or `MetadataUid`.
8997
+ #
8998
+ # @option params [Boolean] :show_guidance
8999
+ # Specifies whether to show remediation target guidance.
9000
+ #
9001
+ # @option params [String] :guidance_format
9002
+ # The format of the remediation guidance examples to return. Valid
9003
+ # values are `All`, `AwsCli`, `Cli`, `Python`, `Terraform`, `Cdk`,
9004
+ # `CloudFormation`, `IaC`, and `Template`. If you don't specify a
9005
+ # value, all formats are returned. Applies only when `ShowGuidance` is
9006
+ # `true`.
9007
+ #
9008
+ # @option params [Integer] :max_results
9009
+ # The maximum number of results to return. Valid range is 1-100. If you
9010
+ # don't specify a value, the operation returns up to 25 results.
9011
+ #
9012
+ # @option params [String] :next_token
9013
+ # The token used to paginate the remediations target list returned. On
9014
+ # your first call to `GetRemediationsV2`, omit this parameter or set it
9015
+ # to `NULL`. For subsequent calls, use the `NextToken` value returned in
9016
+ # the previous response to retrieve the next page of results.
9017
+ #
9018
+ # @return [Types::GetRemediationsV2Response] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
9019
+ #
9020
+ # * {Types::GetRemediationsV2Response#items #items} => Array<Types::RemediationV2Item>
9021
+ # * {Types::GetRemediationsV2Response#next_token #next_token} => String
9022
+ #
9023
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
9024
+ #
9025
+ # @example Request syntax with placeholder values
9026
+ #
9027
+ # resp = client.get_remediations_v2({
9028
+ # target_uid: "RemediationStringUid",
9029
+ # metadata_uid: "RemediationStringUid",
9030
+ # filters: {
9031
+ # composite_filters: [
9032
+ # {
9033
+ # string_filters: [
9034
+ # {
9035
+ # field_name: "Resource.Type", # required, accepts Resource.Type, Priority, Status, Resource.Id, Resource.ResourceOwnerAccountId, Resource.CloudProvider
9036
+ # filter: { # required
9037
+ # value: "NonEmptyString", # required
9038
+ # },
9039
+ # },
9040
+ # ],
9041
+ # },
9042
+ # ],
9043
+ # },
9044
+ # show_guidance: false,
9045
+ # guidance_format: "All", # accepts All, AwsCli, Cli, Python, Terraform, Cdk, CloudFormation, IaC, Template
9046
+ # max_results: 1,
9047
+ # next_token: "NextToken",
9048
+ # })
9049
+ #
9050
+ # @example Response structure
9051
+ #
9052
+ # resp.items #=> Array
9053
+ # resp.items[0].target_uid #=> String
9054
+ # resp.items[0].outcome.resolved_findings_count #=> Integer
9055
+ # resp.items[0].outcome.severity_reduction_findings_count #=> Integer
9056
+ # resp.items[0].outcome.severity_unchanged_count #=> Integer
9057
+ # resp.items[0].priority #=> String, one of "Critical", "High", "Medium", "Low"
9058
+ # resp.items[0].remediation_summary.action #=> String
9059
+ # resp.items[0].remediation_summary.description #=> String
9060
+ # resp.items[0].remediation_summary.is_immediate #=> Boolean
9061
+ # resp.items[0].remediation_summary.post_remediation_steps #=> Array
9062
+ # resp.items[0].remediation_summary.post_remediation_steps[0] #=> String
9063
+ # resp.items[0].remediation_summary.kb_articles #=> Array
9064
+ # resp.items[0].remediation_summary.kb_articles[0].title #=> String
9065
+ # resp.items[0].remediation_summary.kb_articles[0].url #=> String
9066
+ # resp.items[0].resource.account_id #=> String
9067
+ # resp.items[0].resource.region #=> String
9068
+ # resp.items[0].resource.resource_owner_account_id #=> String
9069
+ # resp.items[0].resource.resource_owner_org_id #=> String
9070
+ # resp.items[0].resource.type #=> String
9071
+ # resp.items[0].resource.name #=> String
9072
+ # resp.items[0].resource.id #=> String
9073
+ # resp.items[0].resource.resource_guid #=> String
9074
+ # resp.items[0].resource.resource_region #=> String
9075
+ # resp.items[0].resource.cloud_provider #=> String, one of "Azure", "AWS"
9076
+ # resp.items[0].status #=> String, one of "New", "Updated", "Resolved"
9077
+ # resp.items[0].trait.type #=> String
9078
+ # resp.items[0].trait.title #=> String
9079
+ # resp.items[0].guidance.target_type_name #=> String
9080
+ # resp.items[0].guidance.pattern #=> String
9081
+ # resp.items[0].guidance.version #=> String
9082
+ # resp.items[0].guidance.context.problem_statement #=> String
9083
+ # resp.items[0].guidance.context.risk_assessment #=> String
9084
+ # resp.items[0].guidance.context.affected_scope #=> String
9085
+ # resp.items[0].guidance.context.prerequisites #=> Array
9086
+ # resp.items[0].guidance.context.prerequisites[0] #=> String
9087
+ # resp.items[0].guidance.specification.parameters #=> Array
9088
+ # resp.items[0].guidance.specification.parameters[0].name #=> String
9089
+ # resp.items[0].guidance.specification.parameters[0].type #=> String
9090
+ # resp.items[0].guidance.specification.parameters[0].description #=> String
9091
+ # resp.items[0].guidance.specification.parameters[0].required #=> Boolean
9092
+ # resp.items[0].guidance.specification.steps #=> Array
9093
+ # resp.items[0].guidance.specification.steps[0].phase #=> String
9094
+ # resp.items[0].guidance.specification.steps[0].description #=> String
9095
+ # resp.items[0].guidance.specification.steps[0].service #=> String
9096
+ # resp.items[0].guidance.specification.steps[0].action #=> String
9097
+ # resp.items[0].guidance.specification.steps[0].logic #=> String
9098
+ # resp.items[0].guidance.specification.steps[0].inverse #=> String
9099
+ # resp.items[0].guidance.specification.steps[0].verify_after #=> String
9100
+ # resp.items[0].guidance.specification.expected_end_state #=> String
9101
+ # resp.items[0].guidance.specification.required_permissions #=> Array
9102
+ # resp.items[0].guidance.specification.required_permissions[0] #=> String
9103
+ # resp.items[0].guidance.examples.aws_cli #=> String
9104
+ # resp.items[0].guidance.examples.cli #=> String
9105
+ # resp.items[0].guidance.examples.python #=> String
9106
+ # resp.items[0].guidance.examples.terraform #=> String
9107
+ # resp.items[0].guidance.examples.cdk #=> String
9108
+ # resp.items[0].guidance.examples.cloud_formation #=> String
9109
+ # resp.items[0].guidance.examples.ia_c #=> String
9110
+ # resp.items[0].guidance.examples.template #=> String
9111
+ # resp.items[0].guidance.metadata.resource_type #=> String
9112
+ # resp.items[0].guidance.metadata.exposure_type #=> String
9113
+ # resp.items[0].guidance.metadata.trait_titles #=> Array
9114
+ # resp.items[0].guidance.metadata.trait_titles[0] #=> String
9115
+ # resp.items[0].guidance.metadata.reversibility #=> String
9116
+ # resp.items[0].guidance.metadata.fix_effect #=> String
9117
+ # resp.items[0].guidance.metadata.risk_level #=> String
9118
+ # resp.items[0].guidance.metadata.automation_level #=> String
9119
+ # resp.items[0].guidance.metadata.human_review_required #=> Boolean
9120
+ # resp.items[0].guidance.metadata.generated_at #=> Time
9121
+ # resp.items[0].guidance.metadata.verification_status #=> String
9122
+ # resp.items[0].updated_at #=> Time
9123
+ # resp.next_token #=> String
9124
+ #
9125
+ # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetRemediationsV2 AWS API Documentation
9126
+ #
9127
+ # @overload get_remediations_v2(params = {})
9128
+ # @param [Hash] params ({})
9129
+ def get_remediations_v2(params = {}, options = {})
9130
+ req = build_request(:get_remediations_v2, params)
9131
+ req.send_request(options)
9132
+ end
9133
+
8978
9134
  # Retrieves statistical information about Amazon Web Services resources
8979
9135
  # and their associated security findings.
8980
9136
  #
@@ -10132,6 +10288,76 @@ module Aws::SecurityHub
10132
10288
  req.send_request(options)
10133
10289
  end
10134
10290
 
10291
+ # Retrieves the exposure findings tied to a specific remediation target.
10292
+ # Results are sorted by previous severity, highest first, and are
10293
+ # paginated.
10294
+ #
10295
+ # @option params [required, String] :target_uid
10296
+ # The unique identifier (ID) of an existing remediation target to list
10297
+ # exposure findings for.
10298
+ #
10299
+ # @option params [Integer] :max_results
10300
+ # The maximum number of results to return. Valid range is 1-100. If you
10301
+ # don't specify a value, the operation returns up to 25 results.
10302
+ #
10303
+ # @option params [String] :next_token
10304
+ # The token used to paginate the exposures list returned. On your first
10305
+ # call to `ListExposuresByRemediationV2`, omit this parameter or set it
10306
+ # to `NULL`. For subsequent calls, use the `NextToken` value returned in
10307
+ # the previous response to retrieve the next page of results.
10308
+ #
10309
+ # @return [Types::ListExposuresByRemediationV2Response] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
10310
+ #
10311
+ # * {Types::ListExposuresByRemediationV2Response#items #items} => Array<Types::ExposureFinding>
10312
+ # * {Types::ListExposuresByRemediationV2Response#target_uid #target_uid} => String
10313
+ # * {Types::ListExposuresByRemediationV2Response#resource #resource} => Types::RemediationResource
10314
+ # * {Types::ListExposuresByRemediationV2Response#total_count #total_count} => Integer
10315
+ # * {Types::ListExposuresByRemediationV2Response#trait #trait} => Types::RemediationTrait
10316
+ # * {Types::ListExposuresByRemediationV2Response#next_token #next_token} => String
10317
+ #
10318
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
10319
+ #
10320
+ # @example Request syntax with placeholder values
10321
+ #
10322
+ # resp = client.list_exposures_by_remediation_v2({
10323
+ # target_uid: "RemediationStringUid", # required
10324
+ # max_results: 1,
10325
+ # next_token: "NextToken",
10326
+ # })
10327
+ #
10328
+ # @example Response structure
10329
+ #
10330
+ # resp.items #=> Array
10331
+ # resp.items[0].metadata_uid #=> String
10332
+ # resp.items[0].title #=> String
10333
+ # resp.items[0].previous_severity #=> String, one of "Informational", "Low", "Medium", "High", "Critical"
10334
+ # resp.items[0].projected_severity #=> String, one of "Informational", "Low", "Medium", "High", "Critical"
10335
+ # resp.items[0].impact #=> String, one of "Reduces", "Resolves", "Unchanged"
10336
+ # resp.target_uid #=> String
10337
+ # resp.resource.account_id #=> String
10338
+ # resp.resource.region #=> String
10339
+ # resp.resource.resource_owner_account_id #=> String
10340
+ # resp.resource.resource_owner_org_id #=> String
10341
+ # resp.resource.type #=> String
10342
+ # resp.resource.name #=> String
10343
+ # resp.resource.id #=> String
10344
+ # resp.resource.resource_guid #=> String
10345
+ # resp.resource.resource_region #=> String
10346
+ # resp.resource.cloud_provider #=> String, one of "Azure", "AWS"
10347
+ # resp.total_count #=> Integer
10348
+ # resp.trait.type #=> String
10349
+ # resp.trait.title #=> String
10350
+ # resp.next_token #=> String
10351
+ #
10352
+ # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/ListExposuresByRemediationV2 AWS API Documentation
10353
+ #
10354
+ # @overload list_exposures_by_remediation_v2(params = {})
10355
+ # @param [Hash] params ({})
10356
+ def list_exposures_by_remediation_v2(params = {}, options = {})
10357
+ req = build_request(:list_exposures_by_remediation_v2, params)
10358
+ req.send_request(options)
10359
+ end
10360
+
10135
10361
  # If cross-Region aggregation is enabled, then `ListFindingAggregators`
10136
10362
  # returns the Amazon Resource Name (ARN) of the finding aggregator. You
10137
10363
  # can run this operation from any Amazon Web Services Region.
@@ -13609,7 +13835,7 @@ module Aws::SecurityHub
13609
13835
  tracer: tracer
13610
13836
  )
13611
13837
  context[:gem_name] = 'aws-sdk-securityhub'
13612
- context[:gem_version] = '1.165.0'
13838
+ context[:gem_version] = '1.166.0'
13613
13839
  Seahorse::Client::Request.new(handlers, context)
13614
13840
  end
13615
13841
 
@@ -929,6 +929,10 @@ module Aws::SecurityHub
929
929
  EnablementStatus = Shapes::StringShape.new(name: 'EnablementStatus')
930
930
  EnumConfigurationOptions = Shapes::StructureShape.new(name: 'EnumConfigurationOptions')
931
931
  EnumListConfigurationOptions = Shapes::StructureShape.new(name: 'EnumListConfigurationOptions')
932
+ ExposureFinding = Shapes::StructureShape.new(name: 'ExposureFinding')
933
+ ExposureFindingItemsList = Shapes::ListShape.new(name: 'ExposureFindingItemsList')
934
+ ExposureImpact = Shapes::StringShape.new(name: 'ExposureImpact')
935
+ ExposureSeverity = Shapes::StringShape.new(name: 'ExposureSeverity')
932
936
  ExternalIntegrationConfiguration = Shapes::StructureShape.new(name: 'ExternalIntegrationConfiguration')
933
937
  FeatureDetail = Shapes::StructureShape.new(name: 'FeatureDetail')
934
938
  FeatureName = Shapes::StringShape.new(name: 'FeatureName')
@@ -1013,6 +1017,8 @@ module Aws::SecurityHub
1013
1017
  GetMembersResponse = Shapes::StructureShape.new(name: 'GetMembersResponse')
1014
1018
  GetRecommendedPolicyV2Request = Shapes::StructureShape.new(name: 'GetRecommendedPolicyV2Request')
1015
1019
  GetRecommendedPolicyV2Response = Shapes::StructureShape.new(name: 'GetRecommendedPolicyV2Response')
1020
+ GetRemediationsV2Request = Shapes::StructureShape.new(name: 'GetRemediationsV2Request')
1021
+ GetRemediationsV2Response = Shapes::StructureShape.new(name: 'GetRemediationsV2Response')
1016
1022
  GetResourcesStatisticsV2Request = Shapes::StructureShape.new(name: 'GetResourcesStatisticsV2Request')
1017
1023
  GetResourcesStatisticsV2Response = Shapes::StructureShape.new(name: 'GetResourcesStatisticsV2Response')
1018
1024
  GetResourcesTrendsV2Request = Shapes::StructureShape.new(name: 'GetResourcesTrendsV2Request')
@@ -1029,6 +1035,7 @@ module Aws::SecurityHub
1029
1035
  GroupByRules = Shapes::ListShape.new(name: 'GroupByRules')
1030
1036
  GroupByValue = Shapes::StructureShape.new(name: 'GroupByValue')
1031
1037
  GroupByValues = Shapes::ListShape.new(name: 'GroupByValues')
1038
+ GuidanceFormat = Shapes::StringShape.new(name: 'GuidanceFormat')
1032
1039
  HealthCheck = Shapes::StructureShape.new(name: 'HealthCheck')
1033
1040
  HealthIssue = Shapes::StructureShape.new(name: 'HealthIssue')
1034
1041
  HealthIssueCode = Shapes::StringShape.new(name: 'HealthIssueCode')
@@ -1068,6 +1075,8 @@ module Aws::SecurityHub
1068
1075
  JiraCloudDetail = Shapes::StructureShape.new(name: 'JiraCloudDetail')
1069
1076
  JiraCloudProviderConfiguration = Shapes::StructureShape.new(name: 'JiraCloudProviderConfiguration')
1070
1077
  JiraCloudUpdateConfiguration = Shapes::StructureShape.new(name: 'JiraCloudUpdateConfiguration')
1078
+ KbArticle = Shapes::StructureShape.new(name: 'KbArticle')
1079
+ KbArticleList = Shapes::ListShape.new(name: 'KbArticleList')
1071
1080
  KeywordFilter = Shapes::StructureShape.new(name: 'KeywordFilter')
1072
1081
  KeywordFilterList = Shapes::ListShape.new(name: 'KeywordFilterList')
1073
1082
  LimitExceededException = Shapes::StructureShape.new(name: 'LimitExceededException')
@@ -1087,6 +1096,8 @@ module Aws::SecurityHub
1087
1096
  ListConnectorsV2Response = Shapes::StructureShape.new(name: 'ListConnectorsV2Response')
1088
1097
  ListEnabledProductsForImportRequest = Shapes::StructureShape.new(name: 'ListEnabledProductsForImportRequest')
1089
1098
  ListEnabledProductsForImportResponse = Shapes::StructureShape.new(name: 'ListEnabledProductsForImportResponse')
1099
+ ListExposuresByRemediationV2Request = Shapes::StructureShape.new(name: 'ListExposuresByRemediationV2Request')
1100
+ ListExposuresByRemediationV2Response = Shapes::StructureShape.new(name: 'ListExposuresByRemediationV2Response')
1090
1101
  ListFindingAggregatorsRequest = Shapes::StructureShape.new(name: 'ListFindingAggregatorsRequest')
1091
1102
  ListFindingAggregatorsResponse = Shapes::StructureShape.new(name: 'ListFindingAggregatorsResponse')
1092
1103
  ListFreeTrialStatusesV2Request = Shapes::StructureShape.new(name: 'ListFreeTrialStatusesV2Request')
@@ -1213,6 +1224,32 @@ module Aws::SecurityHub
1213
1224
  RelatedFindingList = Shapes::ListShape.new(name: 'RelatedFindingList')
1214
1225
  RelatedRequirementsList = Shapes::ListShape.new(name: 'RelatedRequirementsList')
1215
1226
  Remediation = Shapes::StructureShape.new(name: 'Remediation')
1227
+ RemediationCompositeFilter = Shapes::StructureShape.new(name: 'RemediationCompositeFilter')
1228
+ RemediationCompositeFilterList = Shapes::ListShape.new(name: 'RemediationCompositeFilterList')
1229
+ RemediationFilters = Shapes::StructureShape.new(name: 'RemediationFilters')
1230
+ RemediationGuidance = Shapes::StructureShape.new(name: 'RemediationGuidance')
1231
+ RemediationGuidanceContext = Shapes::StructureShape.new(name: 'RemediationGuidanceContext')
1232
+ RemediationGuidanceExamples = Shapes::StructureShape.new(name: 'RemediationGuidanceExamples')
1233
+ RemediationGuidanceMetadata = Shapes::StructureShape.new(name: 'RemediationGuidanceMetadata')
1234
+ RemediationGuidanceSpecification = Shapes::StructureShape.new(name: 'RemediationGuidanceSpecification')
1235
+ RemediationOutcome = Shapes::StructureShape.new(name: 'RemediationOutcome')
1236
+ RemediationParameter = Shapes::StructureShape.new(name: 'RemediationParameter')
1237
+ RemediationParameterList = Shapes::ListShape.new(name: 'RemediationParameterList')
1238
+ RemediationPriority = Shapes::StringShape.new(name: 'RemediationPriority')
1239
+ RemediationResource = Shapes::StructureShape.new(name: 'RemediationResource')
1240
+ RemediationStatus = Shapes::StringShape.new(name: 'RemediationStatus')
1241
+ RemediationStep = Shapes::StructureShape.new(name: 'RemediationStep')
1242
+ RemediationStepList = Shapes::ListShape.new(name: 'RemediationStepList')
1243
+ RemediationStringField = Shapes::StringShape.new(name: 'RemediationStringField')
1244
+ RemediationStringFilter = Shapes::StructureShape.new(name: 'RemediationStringFilter')
1245
+ RemediationStringFilterCondition = Shapes::StructureShape.new(name: 'RemediationStringFilterCondition')
1246
+ RemediationStringFilterList = Shapes::ListShape.new(name: 'RemediationStringFilterList')
1247
+ RemediationStringList = Shapes::ListShape.new(name: 'RemediationStringList')
1248
+ RemediationStringUid = Shapes::StringShape.new(name: 'RemediationStringUid')
1249
+ RemediationSummaryDetail = Shapes::StructureShape.new(name: 'RemediationSummaryDetail')
1250
+ RemediationTrait = Shapes::StructureShape.new(name: 'RemediationTrait')
1251
+ RemediationV2Item = Shapes::StructureShape.new(name: 'RemediationV2Item')
1252
+ RemediationV2ItemList = Shapes::ListShape.new(name: 'RemediationV2ItemList')
1216
1253
  Resource = Shapes::StructureShape.new(name: 'Resource')
1217
1254
  ResourceArn = Shapes::StringShape.new(name: 'ResourceArn')
1218
1255
  ResourceCategory = Shapes::StringShape.new(name: 'ResourceCategory')
@@ -6188,6 +6225,15 @@ module Aws::SecurityHub
6188
6225
  EnumListConfigurationOptions.add_member(:allowed_values, Shapes::ShapeRef.new(shape: StringList, location_name: "AllowedValues"))
6189
6226
  EnumListConfigurationOptions.struct_class = Types::EnumListConfigurationOptions
6190
6227
 
6228
+ ExposureFinding.add_member(:metadata_uid, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "MetadataUid"))
6229
+ ExposureFinding.add_member(:title, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Title"))
6230
+ ExposureFinding.add_member(:previous_severity, Shapes::ShapeRef.new(shape: ExposureSeverity, required: true, location_name: "PreviousSeverity"))
6231
+ ExposureFinding.add_member(:projected_severity, Shapes::ShapeRef.new(shape: ExposureSeverity, required: true, location_name: "ProjectedSeverity"))
6232
+ ExposureFinding.add_member(:impact, Shapes::ShapeRef.new(shape: ExposureImpact, required: true, location_name: "Impact"))
6233
+ ExposureFinding.struct_class = Types::ExposureFinding
6234
+
6235
+ ExposureFindingItemsList.member = Shapes::ShapeRef.new(shape: ExposureFinding)
6236
+
6191
6237
  ExternalIntegrationConfiguration.add_member(:connector_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ConnectorArn"))
6192
6238
  ExternalIntegrationConfiguration.struct_class = Types::ExternalIntegrationConfiguration
6193
6239
 
@@ -6517,6 +6563,19 @@ module Aws::SecurityHub
6517
6563
  GetRecommendedPolicyV2Response.add_member(:resource_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ResourceArn"))
6518
6564
  GetRecommendedPolicyV2Response.struct_class = Types::GetRecommendedPolicyV2Response
6519
6565
 
6566
+ GetRemediationsV2Request.add_member(:target_uid, Shapes::ShapeRef.new(shape: RemediationStringUid, location_name: "TargetUid"))
6567
+ GetRemediationsV2Request.add_member(:metadata_uid, Shapes::ShapeRef.new(shape: RemediationStringUid, location_name: "MetadataUid"))
6568
+ GetRemediationsV2Request.add_member(:filters, Shapes::ShapeRef.new(shape: RemediationFilters, location_name: "Filters"))
6569
+ GetRemediationsV2Request.add_member(:show_guidance, Shapes::ShapeRef.new(shape: Boolean, location_name: "ShowGuidance"))
6570
+ GetRemediationsV2Request.add_member(:guidance_format, Shapes::ShapeRef.new(shape: GuidanceFormat, location_name: "GuidanceFormat"))
6571
+ GetRemediationsV2Request.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults"))
6572
+ GetRemediationsV2Request.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
6573
+ GetRemediationsV2Request.struct_class = Types::GetRemediationsV2Request
6574
+
6575
+ GetRemediationsV2Response.add_member(:items, Shapes::ShapeRef.new(shape: RemediationV2ItemList, required: true, location_name: "Items"))
6576
+ GetRemediationsV2Response.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
6577
+ GetRemediationsV2Response.struct_class = Types::GetRemediationsV2Response
6578
+
6520
6579
  GetResourcesStatisticsV2Request.add_member(:group_by_rules, Shapes::ShapeRef.new(shape: ResourceGroupByRules, required: true, location_name: "GroupByRules"))
6521
6580
  GetResourcesStatisticsV2Request.add_member(:scopes, Shapes::ShapeRef.new(shape: ResourceScopes, location_name: "Scopes"))
6522
6581
  GetResourcesStatisticsV2Request.add_member(:sort_order, Shapes::ShapeRef.new(shape: SortOrder, location_name: "SortOrder"))
@@ -6701,6 +6760,12 @@ module Aws::SecurityHub
6701
6760
  JiraCloudUpdateConfiguration.add_member(:project_key, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ProjectKey"))
6702
6761
  JiraCloudUpdateConfiguration.struct_class = Types::JiraCloudUpdateConfiguration
6703
6762
 
6763
+ KbArticle.add_member(:title, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Title"))
6764
+ KbArticle.add_member(:url, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Url"))
6765
+ KbArticle.struct_class = Types::KbArticle
6766
+
6767
+ KbArticleList.member = Shapes::ShapeRef.new(shape: KbArticle)
6768
+
6704
6769
  KeywordFilter.add_member(:value, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Value"))
6705
6770
  KeywordFilter.struct_class = Types::KeywordFilter
6706
6771
 
@@ -6781,6 +6846,19 @@ module Aws::SecurityHub
6781
6846
  ListEnabledProductsForImportResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
6782
6847
  ListEnabledProductsForImportResponse.struct_class = Types::ListEnabledProductsForImportResponse
6783
6848
 
6849
+ ListExposuresByRemediationV2Request.add_member(:target_uid, Shapes::ShapeRef.new(shape: RemediationStringUid, required: true, location_name: "TargetUid"))
6850
+ ListExposuresByRemediationV2Request.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults"))
6851
+ ListExposuresByRemediationV2Request.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
6852
+ ListExposuresByRemediationV2Request.struct_class = Types::ListExposuresByRemediationV2Request
6853
+
6854
+ ListExposuresByRemediationV2Response.add_member(:items, Shapes::ShapeRef.new(shape: ExposureFindingItemsList, required: true, location_name: "Items"))
6855
+ ListExposuresByRemediationV2Response.add_member(:target_uid, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "TargetUid"))
6856
+ ListExposuresByRemediationV2Response.add_member(:resource, Shapes::ShapeRef.new(shape: RemediationResource, required: true, location_name: "Resource"))
6857
+ ListExposuresByRemediationV2Response.add_member(:total_count, Shapes::ShapeRef.new(shape: Integer, required: true, location_name: "TotalCount"))
6858
+ ListExposuresByRemediationV2Response.add_member(:trait, Shapes::ShapeRef.new(shape: RemediationTrait, required: true, location_name: "Trait"))
6859
+ ListExposuresByRemediationV2Response.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
6860
+ ListExposuresByRemediationV2Response.struct_class = Types::ListExposuresByRemediationV2Response
6861
+
6784
6862
  ListFindingAggregatorsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location: "querystring", location_name: "NextToken"))
6785
6863
  ListFindingAggregatorsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "MaxResults"))
6786
6864
  ListFindingAggregatorsRequest.struct_class = Types::ListFindingAggregatorsRequest
@@ -7239,6 +7317,128 @@ module Aws::SecurityHub
7239
7317
  Remediation.add_member(:recommendation, Shapes::ShapeRef.new(shape: Recommendation, location_name: "Recommendation"))
7240
7318
  Remediation.struct_class = Types::Remediation
7241
7319
 
7320
+ RemediationCompositeFilter.add_member(:string_filters, Shapes::ShapeRef.new(shape: RemediationStringFilterList, location_name: "StringFilters"))
7321
+ RemediationCompositeFilter.struct_class = Types::RemediationCompositeFilter
7322
+
7323
+ RemediationCompositeFilterList.member = Shapes::ShapeRef.new(shape: RemediationCompositeFilter)
7324
+
7325
+ RemediationFilters.add_member(:composite_filters, Shapes::ShapeRef.new(shape: RemediationCompositeFilterList, location_name: "CompositeFilters"))
7326
+ RemediationFilters.struct_class = Types::RemediationFilters
7327
+
7328
+ RemediationGuidance.add_member(:target_type_name, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "TargetTypeName"))
7329
+ RemediationGuidance.add_member(:pattern, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Pattern"))
7330
+ RemediationGuidance.add_member(:version, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Version"))
7331
+ RemediationGuidance.add_member(:context, Shapes::ShapeRef.new(shape: RemediationGuidanceContext, required: true, location_name: "Context"))
7332
+ RemediationGuidance.add_member(:specification, Shapes::ShapeRef.new(shape: RemediationGuidanceSpecification, required: true, location_name: "Specification"))
7333
+ RemediationGuidance.add_member(:examples, Shapes::ShapeRef.new(shape: RemediationGuidanceExamples, required: true, location_name: "Examples"))
7334
+ RemediationGuidance.add_member(:metadata, Shapes::ShapeRef.new(shape: RemediationGuidanceMetadata, required: true, location_name: "Metadata"))
7335
+ RemediationGuidance.struct_class = Types::RemediationGuidance
7336
+
7337
+ RemediationGuidanceContext.add_member(:problem_statement, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ProblemStatement"))
7338
+ RemediationGuidanceContext.add_member(:risk_assessment, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "RiskAssessment"))
7339
+ RemediationGuidanceContext.add_member(:affected_scope, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "AffectedScope"))
7340
+ RemediationGuidanceContext.add_member(:prerequisites, Shapes::ShapeRef.new(shape: RemediationStringList, location_name: "Prerequisites"))
7341
+ RemediationGuidanceContext.struct_class = Types::RemediationGuidanceContext
7342
+
7343
+ RemediationGuidanceExamples.add_member(:aws_cli, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "AwsCli"))
7344
+ RemediationGuidanceExamples.add_member(:cli, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Cli"))
7345
+ RemediationGuidanceExamples.add_member(:python, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Python"))
7346
+ RemediationGuidanceExamples.add_member(:terraform, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Terraform"))
7347
+ RemediationGuidanceExamples.add_member(:cdk, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Cdk"))
7348
+ RemediationGuidanceExamples.add_member(:cloud_formation, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "CloudFormation"))
7349
+ RemediationGuidanceExamples.add_member(:ia_c, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "IaC"))
7350
+ RemediationGuidanceExamples.add_member(:template, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Template"))
7351
+ RemediationGuidanceExamples.struct_class = Types::RemediationGuidanceExamples
7352
+
7353
+ RemediationGuidanceMetadata.add_member(:resource_type, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "ResourceType"))
7354
+ RemediationGuidanceMetadata.add_member(:exposure_type, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "ExposureType"))
7355
+ RemediationGuidanceMetadata.add_member(:trait_titles, Shapes::ShapeRef.new(shape: RemediationStringList, required: true, location_name: "TraitTitles"))
7356
+ RemediationGuidanceMetadata.add_member(:reversibility, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Reversibility"))
7357
+ RemediationGuidanceMetadata.add_member(:fix_effect, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "FixEffect"))
7358
+ RemediationGuidanceMetadata.add_member(:risk_level, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "RiskLevel"))
7359
+ RemediationGuidanceMetadata.add_member(:automation_level, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "AutomationLevel"))
7360
+ RemediationGuidanceMetadata.add_member(:human_review_required, Shapes::ShapeRef.new(shape: Boolean, location_name: "HumanReviewRequired"))
7361
+ RemediationGuidanceMetadata.add_member(:generated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "GeneratedAt"))
7362
+ RemediationGuidanceMetadata.add_member(:verification_status, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "VerificationStatus"))
7363
+ RemediationGuidanceMetadata.struct_class = Types::RemediationGuidanceMetadata
7364
+
7365
+ RemediationGuidanceSpecification.add_member(:parameters, Shapes::ShapeRef.new(shape: RemediationParameterList, location_name: "Parameters"))
7366
+ RemediationGuidanceSpecification.add_member(:steps, Shapes::ShapeRef.new(shape: RemediationStepList, location_name: "Steps"))
7367
+ RemediationGuidanceSpecification.add_member(:expected_end_state, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ExpectedEndState"))
7368
+ RemediationGuidanceSpecification.add_member(:required_permissions, Shapes::ShapeRef.new(shape: RemediationStringList, location_name: "RequiredPermissions"))
7369
+ RemediationGuidanceSpecification.struct_class = Types::RemediationGuidanceSpecification
7370
+
7371
+ RemediationOutcome.add_member(:resolved_findings_count, Shapes::ShapeRef.new(shape: Integer, required: true, location_name: "ResolvedFindingsCount"))
7372
+ RemediationOutcome.add_member(:severity_reduction_findings_count, Shapes::ShapeRef.new(shape: Integer, required: true, location_name: "SeverityReductionFindingsCount"))
7373
+ RemediationOutcome.add_member(:severity_unchanged_count, Shapes::ShapeRef.new(shape: Integer, required: true, location_name: "SeverityUnchangedCount"))
7374
+ RemediationOutcome.struct_class = Types::RemediationOutcome
7375
+
7376
+ RemediationParameter.add_member(:name, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Name"))
7377
+ RemediationParameter.add_member(:type, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Type"))
7378
+ RemediationParameter.add_member(:description, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Description"))
7379
+ RemediationParameter.add_member(:required, Shapes::ShapeRef.new(shape: Boolean, location_name: "Required"))
7380
+ RemediationParameter.struct_class = Types::RemediationParameter
7381
+
7382
+ RemediationParameterList.member = Shapes::ShapeRef.new(shape: RemediationParameter)
7383
+
7384
+ RemediationResource.add_member(:account_id, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "AccountId"))
7385
+ RemediationResource.add_member(:region, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Region"))
7386
+ RemediationResource.add_member(:resource_owner_account_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ResourceOwnerAccountId"))
7387
+ RemediationResource.add_member(:resource_owner_org_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ResourceOwnerOrgId"))
7388
+ RemediationResource.add_member(:type, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Type"))
7389
+ RemediationResource.add_member(:name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Name"))
7390
+ RemediationResource.add_member(:id, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Id"))
7391
+ RemediationResource.add_member(:resource_guid, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ResourceGuid"))
7392
+ RemediationResource.add_member(:resource_region, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "ResourceRegion"))
7393
+ RemediationResource.add_member(:cloud_provider, Shapes::ShapeRef.new(shape: CloudProviderName, required: true, location_name: "CloudProvider"))
7394
+ RemediationResource.struct_class = Types::RemediationResource
7395
+
7396
+ RemediationStep.add_member(:phase, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Phase"))
7397
+ RemediationStep.add_member(:description, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Description"))
7398
+ RemediationStep.add_member(:service, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Service"))
7399
+ RemediationStep.add_member(:action, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Action"))
7400
+ RemediationStep.add_member(:logic, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Logic"))
7401
+ RemediationStep.add_member(:inverse, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Inverse"))
7402
+ RemediationStep.add_member(:verify_after, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "VerifyAfter"))
7403
+ RemediationStep.struct_class = Types::RemediationStep
7404
+
7405
+ RemediationStepList.member = Shapes::ShapeRef.new(shape: RemediationStep)
7406
+
7407
+ RemediationStringFilter.add_member(:field_name, Shapes::ShapeRef.new(shape: RemediationStringField, required: true, location_name: "FieldName"))
7408
+ RemediationStringFilter.add_member(:filter, Shapes::ShapeRef.new(shape: RemediationStringFilterCondition, required: true, location_name: "Filter"))
7409
+ RemediationStringFilter.struct_class = Types::RemediationStringFilter
7410
+
7411
+ RemediationStringFilterCondition.add_member(:value, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Value"))
7412
+ RemediationStringFilterCondition.struct_class = Types::RemediationStringFilterCondition
7413
+
7414
+ RemediationStringFilterList.member = Shapes::ShapeRef.new(shape: RemediationStringFilter)
7415
+
7416
+ RemediationStringList.member = Shapes::ShapeRef.new(shape: NonEmptyString)
7417
+
7418
+ RemediationSummaryDetail.add_member(:action, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Action"))
7419
+ RemediationSummaryDetail.add_member(:description, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Description"))
7420
+ RemediationSummaryDetail.add_member(:is_immediate, Shapes::ShapeRef.new(shape: Boolean, required: true, location_name: "IsImmediate"))
7421
+ RemediationSummaryDetail.add_member(:post_remediation_steps, Shapes::ShapeRef.new(shape: RemediationStringList, location_name: "PostRemediationSteps"))
7422
+ RemediationSummaryDetail.add_member(:kb_articles, Shapes::ShapeRef.new(shape: KbArticleList, location_name: "KbArticles"))
7423
+ RemediationSummaryDetail.struct_class = Types::RemediationSummaryDetail
7424
+
7425
+ RemediationTrait.add_member(:type, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Type"))
7426
+ RemediationTrait.add_member(:title, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Title"))
7427
+ RemediationTrait.struct_class = Types::RemediationTrait
7428
+
7429
+ RemediationV2Item.add_member(:target_uid, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "TargetUid"))
7430
+ RemediationV2Item.add_member(:outcome, Shapes::ShapeRef.new(shape: RemediationOutcome, required: true, location_name: "Outcome"))
7431
+ RemediationV2Item.add_member(:priority, Shapes::ShapeRef.new(shape: RemediationPriority, required: true, location_name: "Priority"))
7432
+ RemediationV2Item.add_member(:remediation_summary, Shapes::ShapeRef.new(shape: RemediationSummaryDetail, required: true, location_name: "RemediationSummary"))
7433
+ RemediationV2Item.add_member(:resource, Shapes::ShapeRef.new(shape: RemediationResource, required: true, location_name: "Resource"))
7434
+ RemediationV2Item.add_member(:status, Shapes::ShapeRef.new(shape: RemediationStatus, required: true, location_name: "Status"))
7435
+ RemediationV2Item.add_member(:trait, Shapes::ShapeRef.new(shape: RemediationTrait, required: true, location_name: "Trait"))
7436
+ RemediationV2Item.add_member(:guidance, Shapes::ShapeRef.new(shape: RemediationGuidance, location_name: "Guidance"))
7437
+ RemediationV2Item.add_member(:updated_at, Shapes::ShapeRef.new(shape: Timestamp, location_name: "UpdatedAt"))
7438
+ RemediationV2Item.struct_class = Types::RemediationV2Item
7439
+
7440
+ RemediationV2ItemList.member = Shapes::ShapeRef.new(shape: RemediationV2Item)
7441
+
7242
7442
  Resource.add_member(:type, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Type"))
7243
7443
  Resource.add_member(:id, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Id"))
7244
7444
  Resource.add_member(:partition, Shapes::ShapeRef.new(shape: Partition, location_name: "Partition"))
@@ -9377,6 +9577,25 @@ module Aws::SecurityHub
9377
9577
  )
9378
9578
  end)
9379
9579
 
9580
+ api.add_operation(:get_remediations_v2, Seahorse::Model::Operation.new.tap do |o|
9581
+ o.name = "GetRemediationsV2"
9582
+ o.http_method = "POST"
9583
+ o.http_request_uri = "/GetRemediationsV2"
9584
+ o.input = Shapes::ShapeRef.new(shape: GetRemediationsV2Request)
9585
+ o.output = Shapes::ShapeRef.new(shape: GetRemediationsV2Response)
9586
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
9587
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
9588
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
9589
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
9590
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
9591
+ o[:pager] = Aws::Pager.new(
9592
+ limit_key: "max_results",
9593
+ tokens: {
9594
+ "next_token" => "next_token"
9595
+ }
9596
+ )
9597
+ end)
9598
+
9380
9599
  api.add_operation(:get_resources_statistics_v2, Seahorse::Model::Operation.new.tap do |o|
9381
9600
  o.name = "GetResourcesStatisticsV2"
9382
9601
  o.http_method = "POST"
@@ -9590,6 +9809,25 @@ module Aws::SecurityHub
9590
9809
  )
9591
9810
  end)
9592
9811
 
9812
+ api.add_operation(:list_exposures_by_remediation_v2, Seahorse::Model::Operation.new.tap do |o|
9813
+ o.name = "ListExposuresByRemediationV2"
9814
+ o.http_method = "POST"
9815
+ o.http_request_uri = "/ListExposuresByRemediationV2"
9816
+ o.input = Shapes::ShapeRef.new(shape: ListExposuresByRemediationV2Request)
9817
+ o.output = Shapes::ShapeRef.new(shape: ListExposuresByRemediationV2Response)
9818
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
9819
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
9820
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
9821
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
9822
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
9823
+ o[:pager] = Aws::Pager.new(
9824
+ limit_key: "max_results",
9825
+ tokens: {
9826
+ "next_token" => "next_token"
9827
+ }
9828
+ )
9829
+ end)
9830
+
9593
9831
  api.add_operation(:list_finding_aggregators, Seahorse::Model::Operation.new.tap do |o|
9594
9832
  o.name = "ListFindingAggregators"
9595
9833
  o.http_method = "GET"