aws-sdk-securityhub 1.173.0 → 1.174.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: c96a2972b1649b853df51a68858b14128c69b17514ff5ce52da48f20400829a3
4
- data.tar.gz: af5aca0c0f70da36b16ed0ac713e34b164d04627d1dba3e458594268677b7ff1
3
+ metadata.gz: 0ad419a0e02f48ea102bc6e8d0677769d3705a7328610bece86517148c2f928c
4
+ data.tar.gz: 93c9c20a0352cf528f9e5c1c2bb392e97eeb5f6eaff87dbbc25e84e464b6b7e7
5
5
  SHA512:
6
- metadata.gz: 418573fc10b90c9b0c62c88d80b3ae115355600eaf166bbe3e7b471af0b84408a3082567b1b43e4bb8fee8f84429e198ba2714f1bde8dbc343a9cf10d7b09bfc
7
- data.tar.gz: 114447205178c6ba9f84b38d5f34e1e9941f745f51b7e2a87e6480006a44818f152bfde1b926f1d5a28d67ca5d249ae7462dd652555e2ae77bff503a88a936b0
6
+ metadata.gz: 757f469925c106fc166ab3d87e9d9f1694ad3af1c1537f4463fd7bf283a5d5002da6cfd38da996654e34edd2a274f26aa16da4f4e4e22602bf420d1926553425
7
+ data.tar.gz: 278d4d115e1ce6f56c81590b393d334f2cc05ebb09acdefb31cde4531767ef9c87a426ef6a7ceea757be24738a56e089fd6b1496f35202d3c27b9d7bacb9fced
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.174.0 (2026-11-04)
5
+ ------------------
6
+
7
+ * Feature - Release Software APIs- GetSoftwareV2, GetSoftwareStatisticsV2 and GetSoftwareResourcesV2 to list software packages with aggregated resource count, get aggregated software statistics, and find the resources that contain a specific software package.
8
+
4
9
  1.173.0 (2026-10-29)
5
10
  ------------------
6
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.173.0
1
+ 1.174.0
@@ -10022,6 +10022,373 @@ module Aws::SecurityHub
10022
10022
  req.send_request(options)
10023
10023
  end
10024
10024
 
10025
+ # Returns a list of resources that contain a specific software package.
10026
+ # You identify the package with `PackageName` and `PackageType`. To
10027
+ # narrow the results to one version of the package, include
10028
+ # `PackageVersion`.
10029
+ #
10030
+ # You can use the `Scopes` parameter to define the data boundary for the
10031
+ # query. Currently, `Scopes` supports `AwsOrganizations`, which lets you
10032
+ # retrieve resources from your entire organization or from specific
10033
+ # organizational units. Only the delegated administrator account can use
10034
+ # `Scopes`.
10035
+ #
10036
+ # You can use the `Filters` parameter to further refine results based on
10037
+ # resource attributes, such as `ResourceType` or `Region`.
10038
+ #
10039
+ # @option params [required, String] :package_name
10040
+ # The name of the software package, for example `openssl`. This value
10041
+ # must match the `PackageName` returned by `GetSoftwareV2`.
10042
+ #
10043
+ # @option params [required, String] :package_type
10044
+ # The type of the software package, for example `operating-system`,
10045
+ # `application`, or `library`. This value must match the `PackageType`
10046
+ # returned by `GetSoftwareV2`.
10047
+ #
10048
+ # @option params [String] :package_version
10049
+ # The version of the software package, for example `3.0.8`. If you omit
10050
+ # this value, the response includes resources that contain any version
10051
+ # of the package.
10052
+ #
10053
+ # @option params [Types::SoftwareFilters] :filters
10054
+ # Filters the returned resources based on a set of criteria. You can
10055
+ # nest composite filters up to three levels deep.
10056
+ #
10057
+ # @option params [Types::SoftwareScopes] :scopes
10058
+ # Limits the results to resources from specific organizational units or
10059
+ # from the delegated administrator's organization. Only the delegated
10060
+ # administrator account can use this parameter. Other accounts receive
10061
+ # an `AccessDeniedException`.
10062
+ #
10063
+ # This parameter is optional. If you omit it, the delegated
10064
+ # administrator sees resources from all accounts across the entire
10065
+ # organization. Other accounts see only their own resources.
10066
+ #
10067
+ # You can specify up to 10 entries in `Scopes.AwsOrganizations`. If
10068
+ # multiple entries are specified, the entries are combined using OR
10069
+ # logic.
10070
+ #
10071
+ # @option params [Array<Types::SortCriterion>] :sort_criteria
10072
+ # The resource attribute used to sort the list of returned resources,
10073
+ # for example `Region` or `ResourceType`. You can specify one sort
10074
+ # criterion.
10075
+ #
10076
+ # @option params [String] :next_token
10077
+ # The token required for pagination. On your first call, set the value
10078
+ # of this parameter to `NULL`. For subsequent calls, to continue listing
10079
+ # data, set the value of this parameter to the value returned in the
10080
+ # previous response.
10081
+ #
10082
+ # A token expires one hour after it's issued. If you change the request
10083
+ # parameters between calls, the token is no longer valid and the request
10084
+ # fails with a `ValidationException`.
10085
+ #
10086
+ # @option params [Integer] :max_results
10087
+ # The maximum number of results to return. Valid values are 1–100. The
10088
+ # default is 100.
10089
+ #
10090
+ # @return [Types::GetSoftwareResourcesV2Response] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
10091
+ #
10092
+ # * {Types::GetSoftwareResourcesV2Response#software_resources #software_resources} => Array&lt;Types::SoftwareResourceResult&gt;
10093
+ # * {Types::GetSoftwareResourcesV2Response#next_token #next_token} => String
10094
+ #
10095
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
10096
+ #
10097
+ # @example Request syntax with placeholder values
10098
+ #
10099
+ # resp = client.get_software_resources_v2({
10100
+ # package_name: "NonEmptyString", # required
10101
+ # package_type: "NonEmptyString", # required
10102
+ # package_version: "NonEmptyString",
10103
+ # filters: {
10104
+ # composite_filters: [
10105
+ # {
10106
+ # string_filters: [
10107
+ # {
10108
+ # field_name: "AccountId", # accepts AccountId, PackageName, PackageVersion, PackageType, Region, ResourceRegion, ResourceType, ResourceId, ResourceProvider, ResourceOwnerAccountId, ResourceOwnerOrgId, ResourceCloudPartition
10109
+ # filter: {
10110
+ # value: "NonEmptyString",
10111
+ # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS, CONTAINS_WORD
10112
+ # },
10113
+ # },
10114
+ # ],
10115
+ # nested_composite_filters: {
10116
+ # # recursive SoftwareCompositeFilterList
10117
+ # },
10118
+ # operator: "AND", # accepts AND, OR
10119
+ # },
10120
+ # ],
10121
+ # composite_operator: "AND", # accepts AND, OR
10122
+ # },
10123
+ # scopes: {
10124
+ # aws_organizations: [
10125
+ # {
10126
+ # organization_id: "NonEmptyString",
10127
+ # organizational_unit_id: "NonEmptyString",
10128
+ # },
10129
+ # ],
10130
+ # },
10131
+ # sort_criteria: [
10132
+ # {
10133
+ # field: "NonEmptyString",
10134
+ # sort_order: "asc", # accepts asc, desc
10135
+ # },
10136
+ # ],
10137
+ # next_token: "NextToken",
10138
+ # max_results: 1,
10139
+ # })
10140
+ #
10141
+ # @example Response structure
10142
+ #
10143
+ # resp.software_resources #=> Array
10144
+ # resp.software_resources[0].account_id #=> String
10145
+ # resp.software_resources[0].resource_type #=> String
10146
+ # resp.software_resources[0].region #=> String
10147
+ # resp.software_resources[0].resource_id #=> String
10148
+ # resp.software_resources[0].resource_provider #=> String
10149
+ # resp.software_resources[0].resource_owner_org_id #=> String
10150
+ # resp.software_resources[0].resource_owner_account_id #=> String
10151
+ # resp.software_resources[0].resource_cloud_partition #=> String
10152
+ # resp.software_resources[0].resource_region #=> String
10153
+ # resp.next_token #=> String
10154
+ #
10155
+ # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetSoftwareResourcesV2 AWS API Documentation
10156
+ #
10157
+ # @overload get_software_resources_v2(params = {})
10158
+ # @param [Hash] params ({})
10159
+ def get_software_resources_v2(params = {}, options = {})
10160
+ req = build_request(:get_software_resources_v2, params)
10161
+ req.send_request(options)
10162
+ end
10163
+
10164
+ # Retrieves aggregated counts of software packages installed on your
10165
+ # resources, grouped by a field that you specify. For example, you can
10166
+ # return the most common package types or the accounts with the most
10167
+ # installed packages.
10168
+ #
10169
+ # Each count is the number of package-to-resource pairs that match the
10170
+ # grouping value. A package installed on three resources contributes
10171
+ # three to the count.
10172
+ #
10173
+ # You can use the `Scopes` parameter to define the data boundary for the
10174
+ # query. Currently, `Scopes` supports `AwsOrganizations`, which lets you
10175
+ # aggregate software from your entire organization or from specific
10176
+ # organizational units. Only the delegated administrator account can use
10177
+ # `Scopes`.
10178
+ #
10179
+ # This operation doesn't paginate. Use `MaxStatisticResults` to control
10180
+ # how many grouping values are returned.
10181
+ #
10182
+ # @option params [required, Array<Types::SoftwareGroupByRule>] :group_by_rules
10183
+ # How software statistics should be aggregated and organized in the
10184
+ # response.
10185
+ #
10186
+ # @option params [Types::SoftwareScopes] :scopes
10187
+ # Limits the results to software on resources from specific
10188
+ # organizational units or from the delegated administrator's
10189
+ # organization. Only the delegated administrator account can use this
10190
+ # parameter. Other accounts receive an `AccessDeniedException`.
10191
+ #
10192
+ # This parameter is optional. If you omit it, the delegated
10193
+ # administrator sees statistics from all accounts across the entire
10194
+ # organization. Other accounts see only statistics for software on their
10195
+ # own resources.
10196
+ #
10197
+ # You can specify up to 10 entries in `Scopes.AwsOrganizations`. If
10198
+ # multiple entries are specified, the entries are combined using OR
10199
+ # logic.
10200
+ #
10201
+ # @option params [String] :sort_order
10202
+ # Sorts aggregated statistics by count. The default is descending, which
10203
+ # returns the values with the highest counts first.
10204
+ #
10205
+ # @option params [Integer] :max_statistic_results
10206
+ # The maximum number of grouping values to return. Valid values are
10207
+ # 1–400. The default is 400.
10208
+ #
10209
+ # @return [Types::GetSoftwareStatisticsV2Response] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
10210
+ #
10211
+ # * {Types::GetSoftwareStatisticsV2Response#group_by_results #group_by_results} => Array&lt;Types::GroupByResult&gt;
10212
+ #
10213
+ # @example Request syntax with placeholder values
10214
+ #
10215
+ # resp = client.get_software_statistics_v2({
10216
+ # group_by_rules: [ # required
10217
+ # {
10218
+ # group_by_field: "AccountId", # required, accepts AccountId, PackageName, PackageVersion, PackageType, Region, ResourceRegion, ResourceType, ResourceId, ResourceProvider, ResourceOwnerAccountId, ResourceOwnerOrgId, ResourceCloudPartition
10219
+ # filters: {
10220
+ # composite_filters: [
10221
+ # {
10222
+ # string_filters: [
10223
+ # {
10224
+ # field_name: "AccountId", # accepts AccountId, PackageName, PackageVersion, PackageType, Region, ResourceRegion, ResourceType, ResourceId, ResourceProvider, ResourceOwnerAccountId, ResourceOwnerOrgId, ResourceCloudPartition
10225
+ # filter: {
10226
+ # value: "NonEmptyString",
10227
+ # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS, CONTAINS_WORD
10228
+ # },
10229
+ # },
10230
+ # ],
10231
+ # nested_composite_filters: {
10232
+ # # recursive SoftwareCompositeFilterList
10233
+ # },
10234
+ # operator: "AND", # accepts AND, OR
10235
+ # },
10236
+ # ],
10237
+ # composite_operator: "AND", # accepts AND, OR
10238
+ # },
10239
+ # },
10240
+ # ],
10241
+ # scopes: {
10242
+ # aws_organizations: [
10243
+ # {
10244
+ # organization_id: "NonEmptyString",
10245
+ # organizational_unit_id: "NonEmptyString",
10246
+ # },
10247
+ # ],
10248
+ # },
10249
+ # sort_order: "asc", # accepts asc, desc
10250
+ # max_statistic_results: 1,
10251
+ # })
10252
+ #
10253
+ # @example Response structure
10254
+ #
10255
+ # resp.group_by_results #=> Array
10256
+ # resp.group_by_results[0].group_by_field #=> String
10257
+ # resp.group_by_results[0].group_by_values #=> Array
10258
+ # resp.group_by_results[0].group_by_values[0].field_value #=> String
10259
+ # resp.group_by_results[0].group_by_values[0].count #=> Integer
10260
+ #
10261
+ # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetSoftwareStatisticsV2 AWS API Documentation
10262
+ #
10263
+ # @overload get_software_statistics_v2(params = {})
10264
+ # @param [Hash] params ({})
10265
+ def get_software_statistics_v2(params = {}, options = {})
10266
+ req = build_request(:get_software_statistics_v2, params)
10267
+ req.send_request(options)
10268
+ end
10269
+
10270
+ # Returns a list of software packages installed on your resources. Each
10271
+ # result identifies a package by name, version, and type, and includes
10272
+ # the number of resources that contain that package.
10273
+ #
10274
+ # You can use the `Scopes` parameter to define the data boundary for the
10275
+ # query. Currently, `Scopes` supports `AwsOrganizations`, which lets you
10276
+ # retrieve software from your entire organization or from specific
10277
+ # organizational units. Only the delegated administrator account can use
10278
+ # `Scopes`.
10279
+ #
10280
+ # You can use the `Filters` parameter to refine results based on package
10281
+ # and resource attributes. You can use `Scopes` and `Filters`
10282
+ # independently or together. When both are provided, `Scopes` narrows
10283
+ # the data set first, and then `Filters` refines results within that
10284
+ # scoped data set.
10285
+ #
10286
+ # To list the resources that contain a specific package, use
10287
+ # `GetSoftwareResourcesV2`. To get counts of software grouped by a
10288
+ # field, use `GetSoftwareStatisticsV2`.
10289
+ #
10290
+ # @option params [Types::SoftwareFilters] :filters
10291
+ # Filters software packages based on a set of criteria. You can nest
10292
+ # composite filters up to three levels deep.
10293
+ #
10294
+ # @option params [Types::SoftwareScopes] :scopes
10295
+ # Limits the results to software on resources from specific
10296
+ # organizational units or from the delegated administrator's
10297
+ # organization. Only the delegated administrator account can use this
10298
+ # parameter. Other accounts receive an `AccessDeniedException`.
10299
+ #
10300
+ # This parameter is optional. If you omit it, the delegated
10301
+ # administrator sees software from all accounts across the entire
10302
+ # organization. Other accounts see only software on their own resources.
10303
+ #
10304
+ # You can specify up to 10 entries in `Scopes.AwsOrganizations`. If
10305
+ # multiple entries are specified, the entries are combined using OR
10306
+ # logic.
10307
+ #
10308
+ # @option params [Array<Types::SortCriterion>] :sort_criteria
10309
+ # The software attributes used to sort the list of returned software
10310
+ # packages. You can't sort by `ResourceCount`.
10311
+ #
10312
+ # @option params [String] :next_token
10313
+ # The token required for pagination. On your first call, set the value
10314
+ # of this parameter to `NULL`. For subsequent calls, to continue listing
10315
+ # data, set the value of this parameter to the value returned in the
10316
+ # previous response.
10317
+ #
10318
+ # A token expires one hour after it's issued. If you change `Filters`
10319
+ # or `SortCriteria` between calls, the token is no longer valid and the
10320
+ # request fails with a `ValidationException`.
10321
+ #
10322
+ # @option params [Integer] :max_results
10323
+ # The maximum number of results to return. Valid values are 1–100. The
10324
+ # default is 100.
10325
+ #
10326
+ # @return [Types::GetSoftwareV2Response] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
10327
+ #
10328
+ # * {Types::GetSoftwareV2Response#software #software} => Array&lt;Types::SoftwareResult&gt;
10329
+ # * {Types::GetSoftwareV2Response#next_token #next_token} => String
10330
+ #
10331
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
10332
+ #
10333
+ # @example Request syntax with placeholder values
10334
+ #
10335
+ # resp = client.get_software_v2({
10336
+ # filters: {
10337
+ # composite_filters: [
10338
+ # {
10339
+ # string_filters: [
10340
+ # {
10341
+ # field_name: "AccountId", # accepts AccountId, PackageName, PackageVersion, PackageType, Region, ResourceRegion, ResourceType, ResourceId, ResourceProvider, ResourceOwnerAccountId, ResourceOwnerOrgId, ResourceCloudPartition
10342
+ # filter: {
10343
+ # value: "NonEmptyString",
10344
+ # comparison: "EQUALS", # accepts EQUALS, PREFIX, NOT_EQUALS, PREFIX_NOT_EQUALS, CONTAINS, NOT_CONTAINS, CONTAINS_WORD
10345
+ # },
10346
+ # },
10347
+ # ],
10348
+ # nested_composite_filters: {
10349
+ # # recursive SoftwareCompositeFilterList
10350
+ # },
10351
+ # operator: "AND", # accepts AND, OR
10352
+ # },
10353
+ # ],
10354
+ # composite_operator: "AND", # accepts AND, OR
10355
+ # },
10356
+ # scopes: {
10357
+ # aws_organizations: [
10358
+ # {
10359
+ # organization_id: "NonEmptyString",
10360
+ # organizational_unit_id: "NonEmptyString",
10361
+ # },
10362
+ # ],
10363
+ # },
10364
+ # sort_criteria: [
10365
+ # {
10366
+ # field: "NonEmptyString",
10367
+ # sort_order: "asc", # accepts asc, desc
10368
+ # },
10369
+ # ],
10370
+ # next_token: "NextToken",
10371
+ # max_results: 1,
10372
+ # })
10373
+ #
10374
+ # @example Response structure
10375
+ #
10376
+ # resp.software #=> Array
10377
+ # resp.software[0].package_name #=> String
10378
+ # resp.software[0].package_version #=> String
10379
+ # resp.software[0].package_type #=> String
10380
+ # resp.software[0].resource_count #=> Integer
10381
+ # resp.next_token #=> String
10382
+ #
10383
+ # @see http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/GetSoftwareV2 AWS API Documentation
10384
+ #
10385
+ # @overload get_software_v2(params = {})
10386
+ # @param [Hash] params ({})
10387
+ def get_software_v2(params = {}, options = {})
10388
+ req = build_request(:get_software_v2, params)
10389
+ req.send_request(options)
10390
+ end
10391
+
10025
10392
  # <note markdown="1"> We recommend using Organizations instead of Security Hub CSPM
10026
10393
  # invitations to manage your member accounts. For information, see
10027
10394
  # [Managing Security Hub CSPM administrator and member accounts with
@@ -14687,7 +15054,7 @@ module Aws::SecurityHub
14687
15054
  tracer: tracer
14688
15055
  )
14689
15056
  context[:gem_name] = 'aws-sdk-securityhub'
14690
- context[:gem_version] = '1.173.0'
15057
+ context[:gem_version] = '1.174.0'
14691
15058
  Seahorse::Client::Request.new(handlers, context)
14692
15059
  end
14693
15060
 
@@ -1052,6 +1052,12 @@ module Aws::SecurityHub
1052
1052
  GetResourcesV2Response = Shapes::StructureShape.new(name: 'GetResourcesV2Response')
1053
1053
  GetSecurityControlDefinitionRequest = Shapes::StructureShape.new(name: 'GetSecurityControlDefinitionRequest')
1054
1054
  GetSecurityControlDefinitionResponse = Shapes::StructureShape.new(name: 'GetSecurityControlDefinitionResponse')
1055
+ GetSoftwareResourcesV2Request = Shapes::StructureShape.new(name: 'GetSoftwareResourcesV2Request')
1056
+ GetSoftwareResourcesV2Response = Shapes::StructureShape.new(name: 'GetSoftwareResourcesV2Response')
1057
+ GetSoftwareStatisticsV2Request = Shapes::StructureShape.new(name: 'GetSoftwareStatisticsV2Request')
1058
+ GetSoftwareStatisticsV2Response = Shapes::StructureShape.new(name: 'GetSoftwareStatisticsV2Response')
1059
+ GetSoftwareV2Request = Shapes::StructureShape.new(name: 'GetSoftwareV2Request')
1060
+ GetSoftwareV2Response = Shapes::StructureShape.new(name: 'GetSoftwareV2Response')
1055
1061
  GranularityField = Shapes::StringShape.new(name: 'GranularityField')
1056
1062
  GroupByField = Shapes::StringShape.new(name: 'GroupByField')
1057
1063
  GroupByResult = Shapes::StructureShape.new(name: 'GroupByResult')
@@ -1402,8 +1408,22 @@ module Aws::SecurityHub
1402
1408
  Signal = Shapes::StructureShape.new(name: 'Signal')
1403
1409
  SignalsList = Shapes::ListShape.new(name: 'SignalsList')
1404
1410
  SizeBytes = Shapes::IntegerShape.new(name: 'SizeBytes')
1411
+ SoftwareCompositeFilter = Shapes::StructureShape.new(name: 'SoftwareCompositeFilter')
1412
+ SoftwareCompositeFilterList = Shapes::ListShape.new(name: 'SoftwareCompositeFilterList')
1413
+ SoftwareFilters = Shapes::StructureShape.new(name: 'SoftwareFilters')
1414
+ SoftwareGroupByField = Shapes::StringShape.new(name: 'SoftwareGroupByField')
1415
+ SoftwareGroupByRule = Shapes::StructureShape.new(name: 'SoftwareGroupByRule')
1416
+ SoftwareGroupByRules = Shapes::ListShape.new(name: 'SoftwareGroupByRules')
1417
+ SoftwareList = Shapes::ListShape.new(name: 'SoftwareList')
1405
1418
  SoftwarePackage = Shapes::StructureShape.new(name: 'SoftwarePackage')
1406
1419
  SoftwarePackageList = Shapes::ListShape.new(name: 'SoftwarePackageList')
1420
+ SoftwareResourceResult = Shapes::StructureShape.new(name: 'SoftwareResourceResult')
1421
+ SoftwareResourceResultList = Shapes::ListShape.new(name: 'SoftwareResourceResultList')
1422
+ SoftwareResult = Shapes::StructureShape.new(name: 'SoftwareResult')
1423
+ SoftwareScopes = Shapes::StructureShape.new(name: 'SoftwareScopes')
1424
+ SoftwareStringField = Shapes::StringShape.new(name: 'SoftwareStringField')
1425
+ SoftwareStringFilter = Shapes::StructureShape.new(name: 'SoftwareStringFilter')
1426
+ SoftwareStringFilterList = Shapes::ListShape.new(name: 'SoftwareStringFilterList')
1407
1427
  SortCriteria = Shapes::ListShape.new(name: 'SortCriteria')
1408
1428
  SortCriterion = Shapes::StructureShape.new(name: 'SortCriterion')
1409
1429
  SortOrder = Shapes::StringShape.new(name: 'SortOrder')
@@ -6727,6 +6747,40 @@ module Aws::SecurityHub
6727
6747
  GetSecurityControlDefinitionResponse.add_member(:security_control_definition, Shapes::ShapeRef.new(shape: SecurityControlDefinition, required: true, location_name: "SecurityControlDefinition"))
6728
6748
  GetSecurityControlDefinitionResponse.struct_class = Types::GetSecurityControlDefinitionResponse
6729
6749
 
6750
+ GetSoftwareResourcesV2Request.add_member(:package_name, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "PackageName"))
6751
+ GetSoftwareResourcesV2Request.add_member(:package_type, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "PackageType"))
6752
+ GetSoftwareResourcesV2Request.add_member(:package_version, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "PackageVersion"))
6753
+ GetSoftwareResourcesV2Request.add_member(:filters, Shapes::ShapeRef.new(shape: SoftwareFilters, location_name: "Filters"))
6754
+ GetSoftwareResourcesV2Request.add_member(:scopes, Shapes::ShapeRef.new(shape: SoftwareScopes, location_name: "Scopes"))
6755
+ GetSoftwareResourcesV2Request.add_member(:sort_criteria, Shapes::ShapeRef.new(shape: SortCriteria, location_name: "SortCriteria"))
6756
+ GetSoftwareResourcesV2Request.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
6757
+ GetSoftwareResourcesV2Request.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults"))
6758
+ GetSoftwareResourcesV2Request.struct_class = Types::GetSoftwareResourcesV2Request
6759
+
6760
+ GetSoftwareResourcesV2Response.add_member(:software_resources, Shapes::ShapeRef.new(shape: SoftwareResourceResultList, required: true, location_name: "SoftwareResources"))
6761
+ GetSoftwareResourcesV2Response.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
6762
+ GetSoftwareResourcesV2Response.struct_class = Types::GetSoftwareResourcesV2Response
6763
+
6764
+ GetSoftwareStatisticsV2Request.add_member(:group_by_rules, Shapes::ShapeRef.new(shape: SoftwareGroupByRules, required: true, location_name: "GroupByRules"))
6765
+ GetSoftwareStatisticsV2Request.add_member(:scopes, Shapes::ShapeRef.new(shape: SoftwareScopes, location_name: "Scopes"))
6766
+ GetSoftwareStatisticsV2Request.add_member(:sort_order, Shapes::ShapeRef.new(shape: SortOrder, location_name: "SortOrder"))
6767
+ GetSoftwareStatisticsV2Request.add_member(:max_statistic_results, Shapes::ShapeRef.new(shape: MaxStatisticResults, location_name: "MaxStatisticResults"))
6768
+ GetSoftwareStatisticsV2Request.struct_class = Types::GetSoftwareStatisticsV2Request
6769
+
6770
+ GetSoftwareStatisticsV2Response.add_member(:group_by_results, Shapes::ShapeRef.new(shape: GroupByResults, required: true, location_name: "GroupByResults"))
6771
+ GetSoftwareStatisticsV2Response.struct_class = Types::GetSoftwareStatisticsV2Response
6772
+
6773
+ GetSoftwareV2Request.add_member(:filters, Shapes::ShapeRef.new(shape: SoftwareFilters, location_name: "Filters"))
6774
+ GetSoftwareV2Request.add_member(:scopes, Shapes::ShapeRef.new(shape: SoftwareScopes, location_name: "Scopes"))
6775
+ GetSoftwareV2Request.add_member(:sort_criteria, Shapes::ShapeRef.new(shape: SortCriteria, location_name: "SortCriteria"))
6776
+ GetSoftwareV2Request.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
6777
+ GetSoftwareV2Request.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults"))
6778
+ GetSoftwareV2Request.struct_class = Types::GetSoftwareV2Request
6779
+
6780
+ GetSoftwareV2Response.add_member(:software, Shapes::ShapeRef.new(shape: SoftwareList, required: true, location_name: "Software"))
6781
+ GetSoftwareV2Response.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
6782
+ GetSoftwareV2Response.struct_class = Types::GetSoftwareV2Response
6783
+
6730
6784
  GroupByResult.add_member(:group_by_field, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "GroupByField"))
6731
6785
  GroupByResult.add_member(:group_by_values, Shapes::ShapeRef.new(shape: GroupByValues, location_name: "GroupByValues"))
6732
6786
  GroupByResult.struct_class = Types::GroupByResult
@@ -8103,6 +8157,25 @@ module Aws::SecurityHub
8103
8157
 
8104
8158
  SignalsList.member = Shapes::ShapeRef.new(shape: Signal)
8105
8159
 
8160
+ SoftwareCompositeFilter.add_member(:string_filters, Shapes::ShapeRef.new(shape: SoftwareStringFilterList, location_name: "StringFilters"))
8161
+ SoftwareCompositeFilter.add_member(:nested_composite_filters, Shapes::ShapeRef.new(shape: SoftwareCompositeFilterList, location_name: "NestedCompositeFilters"))
8162
+ SoftwareCompositeFilter.add_member(:operator, Shapes::ShapeRef.new(shape: AllowedOperators, location_name: "Operator"))
8163
+ SoftwareCompositeFilter.struct_class = Types::SoftwareCompositeFilter
8164
+
8165
+ SoftwareCompositeFilterList.member = Shapes::ShapeRef.new(shape: SoftwareCompositeFilter)
8166
+
8167
+ SoftwareFilters.add_member(:composite_filters, Shapes::ShapeRef.new(shape: SoftwareCompositeFilterList, location_name: "CompositeFilters"))
8168
+ SoftwareFilters.add_member(:composite_operator, Shapes::ShapeRef.new(shape: AllowedOperators, location_name: "CompositeOperator"))
8169
+ SoftwareFilters.struct_class = Types::SoftwareFilters
8170
+
8171
+ SoftwareGroupByRule.add_member(:group_by_field, Shapes::ShapeRef.new(shape: SoftwareGroupByField, required: true, location_name: "GroupByField"))
8172
+ SoftwareGroupByRule.add_member(:filters, Shapes::ShapeRef.new(shape: SoftwareFilters, location_name: "Filters"))
8173
+ SoftwareGroupByRule.struct_class = Types::SoftwareGroupByRule
8174
+
8175
+ SoftwareGroupByRules.member = Shapes::ShapeRef.new(shape: SoftwareGroupByRule)
8176
+
8177
+ SoftwareList.member = Shapes::ShapeRef.new(shape: SoftwareResult)
8178
+
8106
8179
  SoftwarePackage.add_member(:name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Name"))
8107
8180
  SoftwarePackage.add_member(:version, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Version"))
8108
8181
  SoftwarePackage.add_member(:epoch, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Epoch"))
@@ -8118,6 +8191,34 @@ module Aws::SecurityHub
8118
8191
 
8119
8192
  SoftwarePackageList.member = Shapes::ShapeRef.new(shape: SoftwarePackage)
8120
8193
 
8194
+ SoftwareResourceResult.add_member(:account_id, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "AccountId"))
8195
+ SoftwareResourceResult.add_member(:resource_type, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "ResourceType"))
8196
+ SoftwareResourceResult.add_member(:region, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "Region"))
8197
+ SoftwareResourceResult.add_member(:resource_id, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "ResourceId"))
8198
+ SoftwareResourceResult.add_member(:resource_provider, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ResourceProvider"))
8199
+ SoftwareResourceResult.add_member(:resource_owner_org_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ResourceOwnerOrgId"))
8200
+ SoftwareResourceResult.add_member(:resource_owner_account_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ResourceOwnerAccountId"))
8201
+ SoftwareResourceResult.add_member(:resource_cloud_partition, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ResourceCloudPartition"))
8202
+ SoftwareResourceResult.add_member(:resource_region, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ResourceRegion"))
8203
+ SoftwareResourceResult.struct_class = Types::SoftwareResourceResult
8204
+
8205
+ SoftwareResourceResultList.member = Shapes::ShapeRef.new(shape: SoftwareResourceResult)
8206
+
8207
+ SoftwareResult.add_member(:package_name, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "PackageName"))
8208
+ SoftwareResult.add_member(:package_version, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "PackageVersion"))
8209
+ SoftwareResult.add_member(:package_type, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "PackageType"))
8210
+ SoftwareResult.add_member(:resource_count, Shapes::ShapeRef.new(shape: Integer, required: true, location_name: "ResourceCount"))
8211
+ SoftwareResult.struct_class = Types::SoftwareResult
8212
+
8213
+ SoftwareScopes.add_member(:aws_organizations, Shapes::ShapeRef.new(shape: AwsOrganizationScopeList, location_name: "AwsOrganizations"))
8214
+ SoftwareScopes.struct_class = Types::SoftwareScopes
8215
+
8216
+ SoftwareStringFilter.add_member(:field_name, Shapes::ShapeRef.new(shape: SoftwareStringField, location_name: "FieldName"))
8217
+ SoftwareStringFilter.add_member(:filter, Shapes::ShapeRef.new(shape: StringFilter, location_name: "Filter"))
8218
+ SoftwareStringFilter.struct_class = Types::SoftwareStringFilter
8219
+
8220
+ SoftwareStringFilterList.member = Shapes::ShapeRef.new(shape: SoftwareStringFilter)
8221
+
8121
8222
  SortCriteria.member = Shapes::ShapeRef.new(shape: SortCriterion)
8122
8223
 
8123
8224
  SortCriterion.add_member(:field, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Field"))
@@ -9832,6 +9933,66 @@ module Aws::SecurityHub
9832
9933
  o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
9833
9934
  end)
9834
9935
 
9936
+ api.add_operation(:get_software_resources_v2, Seahorse::Model::Operation.new.tap do |o|
9937
+ o.name = "GetSoftwareResourcesV2"
9938
+ o.http_method = "POST"
9939
+ o.http_request_uri = "/softwarev2/resources"
9940
+ o.input = Shapes::ShapeRef.new(shape: GetSoftwareResourcesV2Request)
9941
+ o.output = Shapes::ShapeRef.new(shape: GetSoftwareResourcesV2Response)
9942
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
9943
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
9944
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
9945
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
9946
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
9947
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
9948
+ o.errors << Shapes::ShapeRef.new(shape: OrganizationalUnitNotFoundException)
9949
+ o.errors << Shapes::ShapeRef.new(shape: OrganizationNotFoundException)
9950
+ o[:pager] = Aws::Pager.new(
9951
+ limit_key: "max_results",
9952
+ tokens: {
9953
+ "next_token" => "next_token"
9954
+ }
9955
+ )
9956
+ end)
9957
+
9958
+ api.add_operation(:get_software_statistics_v2, Seahorse::Model::Operation.new.tap do |o|
9959
+ o.name = "GetSoftwareStatisticsV2"
9960
+ o.http_method = "POST"
9961
+ o.http_request_uri = "/softwarev2/statistics"
9962
+ o.input = Shapes::ShapeRef.new(shape: GetSoftwareStatisticsV2Request)
9963
+ o.output = Shapes::ShapeRef.new(shape: GetSoftwareStatisticsV2Response)
9964
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
9965
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
9966
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
9967
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
9968
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
9969
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
9970
+ o.errors << Shapes::ShapeRef.new(shape: OrganizationalUnitNotFoundException)
9971
+ o.errors << Shapes::ShapeRef.new(shape: OrganizationNotFoundException)
9972
+ end)
9973
+
9974
+ api.add_operation(:get_software_v2, Seahorse::Model::Operation.new.tap do |o|
9975
+ o.name = "GetSoftwareV2"
9976
+ o.http_method = "POST"
9977
+ o.http_request_uri = "/softwarev2"
9978
+ o.input = Shapes::ShapeRef.new(shape: GetSoftwareV2Request)
9979
+ o.output = Shapes::ShapeRef.new(shape: GetSoftwareV2Response)
9980
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
9981
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
9982
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
9983
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
9984
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
9985
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
9986
+ o.errors << Shapes::ShapeRef.new(shape: OrganizationalUnitNotFoundException)
9987
+ o.errors << Shapes::ShapeRef.new(shape: OrganizationNotFoundException)
9988
+ o[:pager] = Aws::Pager.new(
9989
+ limit_key: "max_results",
9990
+ tokens: {
9991
+ "next_token" => "next_token"
9992
+ }
9993
+ )
9994
+ end)
9995
+
9835
9996
  api.add_operation(:invite_members, Seahorse::Model::Operation.new.tap do |o|
9836
9997
  o.name = "InviteMembers"
9837
9998
  o.http_method = "POST"