aws-sdk-inspector2 1.51.0 → 1.53.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: 10bb9f48780463c706838b027eee83cdd1ba1dbcba97e98fa49574ee72bd9bce
4
- data.tar.gz: d1f969ff8a9423721092e2591fde2af1598c4ad9c06db3ade4183cc1682e2a95
3
+ metadata.gz: 26bd4d60a5f69c10db422d01d8f89f1c57599525c3eda471ff0e0571bb3a7e46
4
+ data.tar.gz: 7df6658710882e838539366a3d2132ae72f1f615cdd679cb38bf4797c73dc00f
5
5
  SHA512:
6
- metadata.gz: a9c7656e2ea721db0861b215fb0776b00466d04524530ee36042eae51007e8fc2dd18ce509e10c92295d4d1f70686a636b68a244889b72247cfbc23a57f83405
7
- data.tar.gz: 2b0aabf3cf95caecb86446a52e4b170848649ead55fbf598b20ff99236d91d393c0d31081abc193dbc10629d82e3281f8b33541d55af3ad999faf26bdd0aaa2c
6
+ metadata.gz: f25041da7c118412a5ac7e399492385a4a73b5fd0684939b2ee145b4c67c8b88a12a40b3ebd9d1ad963d494f74c269d17721ca3a92563ce747fcd33ec494fc77
7
+ data.tar.gz: ada3fca0fc98cd08b809577255e6d183214d9bee9224dc06469a719a32f21a33b9d8e29b7e7c54de029567c7c578daa00a68cb10cc615081cf780c2cf85e253a
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.53.0 (2025-06-02)
5
+ ------------------
6
+
7
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
8
+
9
+ 1.52.0 (2025-05-20)
10
+ ------------------
11
+
12
+ * Feature - This release adds GetClustersForImage API and filter updates as part of the mapping of container images to running containers feature.
13
+
4
14
  1.51.0 (2025-05-12)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.51.0
1
+ 1.53.0
@@ -1018,6 +1018,18 @@ module Aws::Inspector2
1018
1018
  # value: "StringInput", # required
1019
1019
  # },
1020
1020
  # ],
1021
+ # ecr_image_in_use_count: [
1022
+ # {
1023
+ # lower_inclusive: 1.0,
1024
+ # upper_inclusive: 1.0,
1025
+ # },
1026
+ # ],
1027
+ # ecr_image_last_in_use_at: [
1028
+ # {
1029
+ # end_inclusive: Time.now,
1030
+ # start_inclusive: Time.now,
1031
+ # },
1032
+ # ],
1021
1033
  # ecr_image_pushed_at: [
1022
1034
  # {
1023
1035
  # end_inclusive: Time.now,
@@ -1343,6 +1355,18 @@ module Aws::Inspector2
1343
1355
  # value: "StringInput", # required
1344
1356
  # },
1345
1357
  # ],
1358
+ # ecr_image_in_use_count: [
1359
+ # {
1360
+ # lower_inclusive: 1.0,
1361
+ # upper_inclusive: 1.0,
1362
+ # },
1363
+ # ],
1364
+ # ecr_image_last_in_use_at: [
1365
+ # {
1366
+ # end_inclusive: Time.now,
1367
+ # start_inclusive: Time.now,
1368
+ # },
1369
+ # ],
1346
1370
  # ecr_image_pushed_at: [
1347
1371
  # {
1348
1372
  # end_inclusive: Time.now,
@@ -2104,6 +2128,61 @@ module Aws::Inspector2
2104
2128
  req.send_request(options)
2105
2129
  end
2106
2130
 
2131
+ # Returns a list of clusters and metadata associated with an image.
2132
+ #
2133
+ # @option params [required, Types::ClusterForImageFilterCriteria] :filter
2134
+ # The resource Id for the Amazon ECR image.
2135
+ #
2136
+ # @option params [Integer] :max_results
2137
+ # The maximum number of results to be returned in a single page of
2138
+ # results.
2139
+ #
2140
+ # @option params [String] :next_token
2141
+ # The pagination token from a previous request used to retrieve the next
2142
+ # page of results.
2143
+ #
2144
+ # @return [Types::GetClustersForImageResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2145
+ #
2146
+ # * {Types::GetClustersForImageResponse#cluster #cluster} => Array<Types::ClusterInformation>
2147
+ # * {Types::GetClustersForImageResponse#next_token #next_token} => String
2148
+ #
2149
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
2150
+ #
2151
+ # @example Request syntax with placeholder values
2152
+ #
2153
+ # resp = client.get_clusters_for_image({
2154
+ # filter: { # required
2155
+ # resource_id: "ClusterForImageFilterCriteriaResourceIdString", # required
2156
+ # },
2157
+ # max_results: 1,
2158
+ # next_token: "GetClustersForImageNextToken",
2159
+ # })
2160
+ #
2161
+ # @example Response structure
2162
+ #
2163
+ # resp.cluster #=> Array
2164
+ # resp.cluster[0].cluster_arn #=> String
2165
+ # resp.cluster[0].cluster_details #=> Array
2166
+ # resp.cluster[0].cluster_details[0].cluster_metadata.aws_ecs_metadata_details.details_group #=> String
2167
+ # resp.cluster[0].cluster_details[0].cluster_metadata.aws_ecs_metadata_details.task_definition_arn #=> String
2168
+ # resp.cluster[0].cluster_details[0].cluster_metadata.aws_eks_metadata_details.namespace #=> String
2169
+ # resp.cluster[0].cluster_details[0].cluster_metadata.aws_eks_metadata_details.workload_info_list #=> Array
2170
+ # resp.cluster[0].cluster_details[0].cluster_metadata.aws_eks_metadata_details.workload_info_list[0].name #=> String
2171
+ # resp.cluster[0].cluster_details[0].cluster_metadata.aws_eks_metadata_details.workload_info_list[0].type #=> String
2172
+ # resp.cluster[0].cluster_details[0].last_in_use #=> Time
2173
+ # resp.cluster[0].cluster_details[0].running_unit_count #=> Integer
2174
+ # resp.cluster[0].cluster_details[0].stopped_unit_count #=> Integer
2175
+ # resp.next_token #=> String
2176
+ #
2177
+ # @see http://docs.aws.amazon.com/goto/WebAPI/inspector2-2020-06-08/GetClustersForImage AWS API Documentation
2178
+ #
2179
+ # @overload get_clusters_for_image(params = {})
2180
+ # @param [Hash] params ({})
2181
+ def get_clusters_for_image(params = {}, options = {})
2182
+ req = build_request(:get_clusters_for_image, params)
2183
+ req.send_request(options)
2184
+ end
2185
+
2107
2186
  # Retrieves setting configurations for Inspector scans.
2108
2187
  #
2109
2188
  # @return [Types::GetConfigurationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
@@ -2116,6 +2195,7 @@ module Aws::Inspector2
2116
2195
  # resp.ec2_configuration.scan_mode_state.scan_mode #=> String, one of "EC2_SSM_AGENT_BASED", "EC2_HYBRID"
2117
2196
  # resp.ec2_configuration.scan_mode_state.scan_mode_status #=> String, one of "SUCCESS", "PENDING"
2118
2197
  # resp.ecr_configuration.rescan_duration_state.pull_date_rescan_duration #=> String, one of "DAYS_14", "DAYS_30", "DAYS_60", "DAYS_90", "DAYS_180"
2198
+ # resp.ecr_configuration.rescan_duration_state.pull_date_rescan_mode #=> String, one of "LAST_PULL_DATE", "LAST_IN_USE_AT"
2119
2199
  # resp.ecr_configuration.rescan_duration_state.rescan_duration #=> String, one of "LIFETIME", "DAYS_30", "DAYS_180", "DAYS_14", "DAYS_60", "DAYS_90"
2120
2200
  # resp.ecr_configuration.rescan_duration_state.status #=> String, one of "SUCCESS", "PENDING", "FAILED"
2121
2201
  # resp.ecr_configuration.rescan_duration_state.updated_at #=> Time
@@ -2270,6 +2350,12 @@ module Aws::Inspector2
2270
2350
  # resp.filter_criteria.ecr_image_hash #=> Array
2271
2351
  # resp.filter_criteria.ecr_image_hash[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS"
2272
2352
  # resp.filter_criteria.ecr_image_hash[0].value #=> String
2353
+ # resp.filter_criteria.ecr_image_in_use_count #=> Array
2354
+ # resp.filter_criteria.ecr_image_in_use_count[0].lower_inclusive #=> Float
2355
+ # resp.filter_criteria.ecr_image_in_use_count[0].upper_inclusive #=> Float
2356
+ # resp.filter_criteria.ecr_image_last_in_use_at #=> Array
2357
+ # resp.filter_criteria.ecr_image_last_in_use_at[0].end_inclusive #=> Time
2358
+ # resp.filter_criteria.ecr_image_last_in_use_at[0].start_inclusive #=> Time
2273
2359
  # resp.filter_criteria.ecr_image_pushed_at #=> Array
2274
2360
  # resp.filter_criteria.ecr_image_pushed_at[0].end_inclusive #=> Time
2275
2361
  # resp.filter_criteria.ecr_image_pushed_at[0].start_inclusive #=> Time
@@ -3025,6 +3111,18 @@ module Aws::Inspector2
3025
3111
  # value: "NonEmptyString",
3026
3112
  # },
3027
3113
  # ],
3114
+ # ecr_image_in_use_count: [
3115
+ # {
3116
+ # lower_inclusive: 1,
3117
+ # upper_inclusive: 1,
3118
+ # },
3119
+ # ],
3120
+ # ecr_image_last_in_use_at: [
3121
+ # {
3122
+ # end_inclusive: Time.now,
3123
+ # start_inclusive: Time.now,
3124
+ # },
3125
+ # ],
3028
3126
  # ecr_image_tags: [
3029
3127
  # {
3030
3128
  # comparison: "EQUALS", # required, accepts EQUALS, NOT_EQUALS
@@ -3120,6 +3218,8 @@ module Aws::Inspector2
3120
3218
  # resp.covered_resources[0].resource_metadata.ec2.tags #=> Hash
3121
3219
  # resp.covered_resources[0].resource_metadata.ec2.tags["MapKey"] #=> String
3122
3220
  # resp.covered_resources[0].resource_metadata.ecr_image.image_pulled_at #=> Time
3221
+ # resp.covered_resources[0].resource_metadata.ecr_image.in_use_count #=> Integer
3222
+ # resp.covered_resources[0].resource_metadata.ecr_image.last_in_use_at #=> Time
3123
3223
  # resp.covered_resources[0].resource_metadata.ecr_image.tags #=> Array
3124
3224
  # resp.covered_resources[0].resource_metadata.ecr_image.tags[0] #=> String
3125
3225
  # resp.covered_resources[0].resource_metadata.ecr_repository.name #=> String
@@ -3132,7 +3232,7 @@ module Aws::Inspector2
3132
3232
  # resp.covered_resources[0].resource_metadata.lambda_function.runtime #=> String, one of "NODEJS", "NODEJS_12_X", "NODEJS_14_X", "NODEJS_16_X", "JAVA_8", "JAVA_8_AL2", "JAVA_11", "PYTHON_3_7", "PYTHON_3_8", "PYTHON_3_9", "UNSUPPORTED", "NODEJS_18_X", "GO_1_X", "JAVA_17", "PYTHON_3_10", "PYTHON_3_11", "DOTNETCORE_3_1", "DOTNET_6", "DOTNET_7", "RUBY_2_7", "RUBY_3_2"
3133
3233
  # resp.covered_resources[0].resource_type #=> String, one of "AWS_EC2_INSTANCE", "AWS_ECR_CONTAINER_IMAGE", "AWS_ECR_REPOSITORY", "AWS_LAMBDA_FUNCTION"
3134
3234
  # resp.covered_resources[0].scan_mode #=> String, one of "EC2_SSM_AGENT_BASED", "EC2_AGENTLESS"
3135
- # resp.covered_resources[0].scan_status.reason #=> String, one of "PENDING_INITIAL_SCAN", "ACCESS_DENIED", "INTERNAL_ERROR", "UNMANAGED_EC2_INSTANCE", "UNSUPPORTED_OS", "SCAN_ELIGIBILITY_EXPIRED", "RESOURCE_TERMINATED", "SUCCESSFUL", "NO_RESOURCES_FOUND", "IMAGE_SIZE_EXCEEDED", "SCAN_FREQUENCY_MANUAL", "SCAN_FREQUENCY_SCAN_ON_PUSH", "EC2_INSTANCE_STOPPED", "PENDING_DISABLE", "NO_INVENTORY", "STALE_INVENTORY", "EXCLUDED_BY_TAG", "UNSUPPORTED_RUNTIME", "UNSUPPORTED_MEDIA_TYPE", "UNSUPPORTED_CONFIG_FILE", "DEEP_INSPECTION_PACKAGE_COLLECTION_LIMIT_EXCEEDED", "DEEP_INSPECTION_DAILY_SSM_INVENTORY_LIMIT_EXCEEDED", "DEEP_INSPECTION_COLLECTION_TIME_LIMIT_EXCEEDED", "DEEP_INSPECTION_NO_INVENTORY", "AGENTLESS_INSTANCE_STORAGE_LIMIT_EXCEEDED", "AGENTLESS_INSTANCE_COLLECTION_TIME_LIMIT_EXCEEDED"
3235
+ # resp.covered_resources[0].scan_status.reason #=> String, one of "PENDING_INITIAL_SCAN", "ACCESS_DENIED", "INTERNAL_ERROR", "UNMANAGED_EC2_INSTANCE", "UNSUPPORTED_OS", "SCAN_ELIGIBILITY_EXPIRED", "RESOURCE_TERMINATED", "SUCCESSFUL", "NO_RESOURCES_FOUND", "IMAGE_SIZE_EXCEEDED", "SCAN_FREQUENCY_MANUAL", "SCAN_FREQUENCY_SCAN_ON_PUSH", "EC2_INSTANCE_STOPPED", "PENDING_DISABLE", "NO_INVENTORY", "STALE_INVENTORY", "EXCLUDED_BY_TAG", "UNSUPPORTED_RUNTIME", "UNSUPPORTED_MEDIA_TYPE", "UNSUPPORTED_CONFIG_FILE", "DEEP_INSPECTION_PACKAGE_COLLECTION_LIMIT_EXCEEDED", "DEEP_INSPECTION_DAILY_SSM_INVENTORY_LIMIT_EXCEEDED", "DEEP_INSPECTION_COLLECTION_TIME_LIMIT_EXCEEDED", "DEEP_INSPECTION_NO_INVENTORY", "AGENTLESS_INSTANCE_STORAGE_LIMIT_EXCEEDED", "AGENTLESS_INSTANCE_COLLECTION_TIME_LIMIT_EXCEEDED", "PENDING_REVIVAL_SCAN"
3136
3236
  # resp.covered_resources[0].scan_status.status_code #=> String, one of "ACTIVE", "INACTIVE"
3137
3237
  # resp.covered_resources[0].scan_type #=> String, one of "NETWORK", "PACKAGE", "CODE"
3138
3238
  # resp.next_token #=> String
@@ -3187,6 +3287,18 @@ module Aws::Inspector2
3187
3287
  # value: "NonEmptyString",
3188
3288
  # },
3189
3289
  # ],
3290
+ # ecr_image_in_use_count: [
3291
+ # {
3292
+ # lower_inclusive: 1,
3293
+ # upper_inclusive: 1,
3294
+ # },
3295
+ # ],
3296
+ # ecr_image_last_in_use_at: [
3297
+ # {
3298
+ # end_inclusive: Time.now,
3299
+ # start_inclusive: Time.now,
3300
+ # },
3301
+ # ],
3190
3302
  # ecr_image_tags: [
3191
3303
  # {
3192
3304
  # comparison: "EQUALS", # required, accepts EQUALS, NOT_EQUALS
@@ -3412,6 +3524,12 @@ module Aws::Inspector2
3412
3524
  # resp.filters[0].criteria.ecr_image_hash #=> Array
3413
3525
  # resp.filters[0].criteria.ecr_image_hash[0].comparison #=> String, one of "EQUALS", "PREFIX", "NOT_EQUALS"
3414
3526
  # resp.filters[0].criteria.ecr_image_hash[0].value #=> String
3527
+ # resp.filters[0].criteria.ecr_image_in_use_count #=> Array
3528
+ # resp.filters[0].criteria.ecr_image_in_use_count[0].lower_inclusive #=> Float
3529
+ # resp.filters[0].criteria.ecr_image_in_use_count[0].upper_inclusive #=> Float
3530
+ # resp.filters[0].criteria.ecr_image_last_in_use_at #=> Array
3531
+ # resp.filters[0].criteria.ecr_image_last_in_use_at[0].end_inclusive #=> Time
3532
+ # resp.filters[0].criteria.ecr_image_last_in_use_at[0].start_inclusive #=> Time
3415
3533
  # resp.filters[0].criteria.ecr_image_pushed_at #=> Array
3416
3534
  # resp.filters[0].criteria.ecr_image_pushed_at[0].end_inclusive #=> Time
3417
3535
  # resp.filters[0].criteria.ecr_image_pushed_at[0].start_inclusive #=> Time
@@ -3619,6 +3737,18 @@ module Aws::Inspector2
3619
3737
  # value: "StringInput", # required
3620
3738
  # },
3621
3739
  # ],
3740
+ # in_use_count: [
3741
+ # {
3742
+ # lower_inclusive: 1.0,
3743
+ # upper_inclusive: 1.0,
3744
+ # },
3745
+ # ],
3746
+ # last_in_use_at: [
3747
+ # {
3748
+ # end_inclusive: Time.now,
3749
+ # start_inclusive: Time.now,
3750
+ # },
3751
+ # ],
3622
3752
  # repositories: [
3623
3753
  # {
3624
3754
  # comparison: "EQUALS", # required, accepts EQUALS, PREFIX, NOT_EQUALS
@@ -3810,6 +3940,8 @@ module Aws::Inspector2
3810
3940
  # resp.responses[0].aws_ecr_container_aggregation.image_sha #=> String
3811
3941
  # resp.responses[0].aws_ecr_container_aggregation.image_tags #=> Array
3812
3942
  # resp.responses[0].aws_ecr_container_aggregation.image_tags[0] #=> String
3943
+ # resp.responses[0].aws_ecr_container_aggregation.in_use_count #=> Integer
3944
+ # resp.responses[0].aws_ecr_container_aggregation.last_in_use_at #=> Time
3813
3945
  # resp.responses[0].aws_ecr_container_aggregation.repository #=> String
3814
3946
  # resp.responses[0].aws_ecr_container_aggregation.resource_id #=> String
3815
3947
  # resp.responses[0].aws_ecr_container_aggregation.severity_counts.all #=> Integer
@@ -3990,6 +4122,18 @@ module Aws::Inspector2
3990
4122
  # value: "StringInput", # required
3991
4123
  # },
3992
4124
  # ],
4125
+ # ecr_image_in_use_count: [
4126
+ # {
4127
+ # lower_inclusive: 1.0,
4128
+ # upper_inclusive: 1.0,
4129
+ # },
4130
+ # ],
4131
+ # ecr_image_last_in_use_at: [
4132
+ # {
4133
+ # end_inclusive: Time.now,
4134
+ # start_inclusive: Time.now,
4135
+ # },
4136
+ # ],
3993
4137
  # ecr_image_pushed_at: [
3994
4138
  # {
3995
4139
  # end_inclusive: Time.now,
@@ -4305,6 +4449,8 @@ module Aws::Inspector2
4305
4449
  # resp.findings[0].resources[0].details.aws_ecr_container_image.image_hash #=> String
4306
4450
  # resp.findings[0].resources[0].details.aws_ecr_container_image.image_tags #=> Array
4307
4451
  # resp.findings[0].resources[0].details.aws_ecr_container_image.image_tags[0] #=> String
4452
+ # resp.findings[0].resources[0].details.aws_ecr_container_image.in_use_count #=> Integer
4453
+ # resp.findings[0].resources[0].details.aws_ecr_container_image.last_in_use_at #=> Time
4308
4454
  # resp.findings[0].resources[0].details.aws_ecr_container_image.platform #=> String
4309
4455
  # resp.findings[0].resources[0].details.aws_ecr_container_image.pushed_at #=> Time
4310
4456
  # resp.findings[0].resources[0].details.aws_ecr_container_image.registry #=> String
@@ -4886,6 +5032,7 @@ module Aws::Inspector2
4886
5032
  # },
4887
5033
  # ecr_configuration: {
4888
5034
  # pull_date_rescan_duration: "DAYS_14", # accepts DAYS_14, DAYS_30, DAYS_60, DAYS_90, DAYS_180
5035
+ # pull_date_rescan_mode: "LAST_PULL_DATE", # accepts LAST_PULL_DATE, LAST_IN_USE_AT
4889
5036
  # rescan_duration: "LIFETIME", # required, accepts LIFETIME, DAYS_30, DAYS_180, DAYS_14, DAYS_60, DAYS_90
4890
5037
  # },
4891
5038
  # })
@@ -5079,6 +5226,18 @@ module Aws::Inspector2
5079
5226
  # value: "StringInput", # required
5080
5227
  # },
5081
5228
  # ],
5229
+ # ecr_image_in_use_count: [
5230
+ # {
5231
+ # lower_inclusive: 1.0,
5232
+ # upper_inclusive: 1.0,
5233
+ # },
5234
+ # ],
5235
+ # ecr_image_last_in_use_at: [
5236
+ # {
5237
+ # end_inclusive: Time.now,
5238
+ # start_inclusive: Time.now,
5239
+ # },
5240
+ # ],
5082
5241
  # ecr_image_pushed_at: [
5083
5242
  # {
5084
5243
  # end_inclusive: Time.now,
@@ -5394,7 +5553,7 @@ module Aws::Inspector2
5394
5553
  tracer: tracer
5395
5554
  )
5396
5555
  context[:gem_name] = 'aws-sdk-inspector2'
5397
- context[:gem_version] = '1.51.0'
5556
+ context[:gem_version] = '1.53.0'
5398
5557
  Seahorse::Client::Request.new(handlers, context)
5399
5558
  end
5400
5559
 
@@ -48,6 +48,15 @@ module Aws::Inspector2
48
48
  AwsEcrContainerAggregationResponse = Shapes::StructureShape.new(name: 'AwsEcrContainerAggregationResponse')
49
49
  AwsEcrContainerImageDetails = Shapes::StructureShape.new(name: 'AwsEcrContainerImageDetails')
50
50
  AwsEcrContainerSortBy = Shapes::StringShape.new(name: 'AwsEcrContainerSortBy')
51
+ AwsEcsMetadataDetails = Shapes::StructureShape.new(name: 'AwsEcsMetadataDetails')
52
+ AwsEcsMetadataDetailsDetailsGroupString = Shapes::StringShape.new(name: 'AwsEcsMetadataDetailsDetailsGroupString')
53
+ AwsEcsMetadataDetailsTaskDefinitionArnString = Shapes::StringShape.new(name: 'AwsEcsMetadataDetailsTaskDefinitionArnString')
54
+ AwsEksMetadataDetails = Shapes::StructureShape.new(name: 'AwsEksMetadataDetails')
55
+ AwsEksMetadataDetailsNamespaceString = Shapes::StringShape.new(name: 'AwsEksMetadataDetailsNamespaceString')
56
+ AwsEksWorkloadInfo = Shapes::StructureShape.new(name: 'AwsEksWorkloadInfo')
57
+ AwsEksWorkloadInfoList = Shapes::ListShape.new(name: 'AwsEksWorkloadInfoList')
58
+ AwsEksWorkloadInfoNameString = Shapes::StringShape.new(name: 'AwsEksWorkloadInfoNameString')
59
+ AwsEksWorkloadInfoTypeString = Shapes::StringShape.new(name: 'AwsEksWorkloadInfoTypeString')
51
60
  AwsLambdaFunctionDetails = Shapes::StructureShape.new(name: 'AwsLambdaFunctionDetails')
52
61
  BadRequestException = Shapes::StructureShape.new(name: 'BadRequestException')
53
62
  BatchGetAccountStatusRequest = Shapes::StructureShape.new(name: 'BatchGetAccountStatusRequest')
@@ -143,6 +152,14 @@ module Aws::Inspector2
143
152
  CisaDateAdded = Shapes::TimestampShape.new(name: 'CisaDateAdded')
144
153
  CisaDateDue = Shapes::TimestampShape.new(name: 'CisaDateDue')
145
154
  ClientToken = Shapes::StringShape.new(name: 'ClientToken')
155
+ ClusterDetails = Shapes::StructureShape.new(name: 'ClusterDetails')
156
+ ClusterForImageFilterCriteria = Shapes::StructureShape.new(name: 'ClusterForImageFilterCriteria')
157
+ ClusterForImageFilterCriteriaResourceIdString = Shapes::StringShape.new(name: 'ClusterForImageFilterCriteriaResourceIdString')
158
+ ClusterInformation = Shapes::StructureShape.new(name: 'ClusterInformation')
159
+ ClusterInformationClusterArnString = Shapes::StringShape.new(name: 'ClusterInformationClusterArnString')
160
+ ClusterInformationClusterDetailsList = Shapes::ListShape.new(name: 'ClusterInformationClusterDetailsList')
161
+ ClusterInformationList = Shapes::ListShape.new(name: 'ClusterInformationList')
162
+ ClusterMetadata = Shapes::UnionShape.new(name: 'ClusterMetadata')
146
163
  CodeFilePath = Shapes::StructureShape.new(name: 'CodeFilePath')
147
164
  CodeLine = Shapes::StructureShape.new(name: 'CodeLine')
148
165
  CodeLineContentString = Shapes::StringShape.new(name: 'CodeLineContentString')
@@ -166,6 +183,8 @@ module Aws::Inspector2
166
183
  CoverageMapComparison = Shapes::StringShape.new(name: 'CoverageMapComparison')
167
184
  CoverageMapFilter = Shapes::StructureShape.new(name: 'CoverageMapFilter')
168
185
  CoverageMapFilterList = Shapes::ListShape.new(name: 'CoverageMapFilterList')
186
+ CoverageNumberFilter = Shapes::StructureShape.new(name: 'CoverageNumberFilter')
187
+ CoverageNumberFilterList = Shapes::ListShape.new(name: 'CoverageNumberFilterList')
169
188
  CoverageResourceType = Shapes::StringShape.new(name: 'CoverageResourceType')
170
189
  CoverageStringComparison = Shapes::StringShape.new(name: 'CoverageStringComparison')
171
190
  CoverageStringFilter = Shapes::StructureShape.new(name: 'CoverageStringFilter')
@@ -239,6 +258,7 @@ module Aws::Inspector2
239
258
  EcrConfigurationState = Shapes::StructureShape.new(name: 'EcrConfigurationState')
240
259
  EcrContainerImageMetadata = Shapes::StructureShape.new(name: 'EcrContainerImageMetadata')
241
260
  EcrPullDateRescanDuration = Shapes::StringShape.new(name: 'EcrPullDateRescanDuration')
261
+ EcrPullDateRescanMode = Shapes::StringShape.new(name: 'EcrPullDateRescanMode')
242
262
  EcrRepositoryMetadata = Shapes::StructureShape.new(name: 'EcrRepositoryMetadata')
243
263
  EcrRescanDuration = Shapes::StringShape.new(name: 'EcrRescanDuration')
244
264
  EcrRescanDurationState = Shapes::StructureShape.new(name: 'EcrRescanDurationState')
@@ -312,6 +332,10 @@ module Aws::Inspector2
312
332
  GetCisScanResultDetailsMaxResults = Shapes::IntegerShape.new(name: 'GetCisScanResultDetailsMaxResults')
313
333
  GetCisScanResultDetailsRequest = Shapes::StructureShape.new(name: 'GetCisScanResultDetailsRequest')
314
334
  GetCisScanResultDetailsResponse = Shapes::StructureShape.new(name: 'GetCisScanResultDetailsResponse')
335
+ GetClustersForImageNextToken = Shapes::StringShape.new(name: 'GetClustersForImageNextToken')
336
+ GetClustersForImageRequest = Shapes::StructureShape.new(name: 'GetClustersForImageRequest')
337
+ GetClustersForImageRequestMaxResultsInteger = Shapes::IntegerShape.new(name: 'GetClustersForImageRequestMaxResultsInteger')
338
+ GetClustersForImageResponse = Shapes::StructureShape.new(name: 'GetClustersForImageResponse')
315
339
  GetConfigurationRequest = Shapes::StructureShape.new(name: 'GetConfigurationRequest')
316
340
  GetConfigurationResponse = Shapes::StructureShape.new(name: 'GetConfigurationResponse')
317
341
  GetDelegatedAdminAccountRequest = Shapes::StructureShape.new(name: 'GetDelegatedAdminAccountRequest')
@@ -751,6 +775,8 @@ module Aws::Inspector2
751
775
  AwsEcrContainerAggregation.add_member(:architectures, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "architectures"))
752
776
  AwsEcrContainerAggregation.add_member(:image_shas, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "imageShas"))
753
777
  AwsEcrContainerAggregation.add_member(:image_tags, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "imageTags"))
778
+ AwsEcrContainerAggregation.add_member(:in_use_count, Shapes::ShapeRef.new(shape: NumberFilterList, location_name: "inUseCount"))
779
+ AwsEcrContainerAggregation.add_member(:last_in_use_at, Shapes::ShapeRef.new(shape: DateFilterList, location_name: "lastInUseAt"))
754
780
  AwsEcrContainerAggregation.add_member(:repositories, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "repositories"))
755
781
  AwsEcrContainerAggregation.add_member(:resource_ids, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "resourceIds"))
756
782
  AwsEcrContainerAggregation.add_member(:sort_by, Shapes::ShapeRef.new(shape: AwsEcrContainerSortBy, location_name: "sortBy"))
@@ -761,6 +787,8 @@ module Aws::Inspector2
761
787
  AwsEcrContainerAggregationResponse.add_member(:architecture, Shapes::ShapeRef.new(shape: String, location_name: "architecture"))
762
788
  AwsEcrContainerAggregationResponse.add_member(:image_sha, Shapes::ShapeRef.new(shape: String, location_name: "imageSha"))
763
789
  AwsEcrContainerAggregationResponse.add_member(:image_tags, Shapes::ShapeRef.new(shape: StringList, location_name: "imageTags"))
790
+ AwsEcrContainerAggregationResponse.add_member(:in_use_count, Shapes::ShapeRef.new(shape: Long, location_name: "inUseCount"))
791
+ AwsEcrContainerAggregationResponse.add_member(:last_in_use_at, Shapes::ShapeRef.new(shape: DateTimeTimestamp, location_name: "lastInUseAt"))
764
792
  AwsEcrContainerAggregationResponse.add_member(:repository, Shapes::ShapeRef.new(shape: String, location_name: "repository"))
765
793
  AwsEcrContainerAggregationResponse.add_member(:resource_id, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "resourceId"))
766
794
  AwsEcrContainerAggregationResponse.add_member(:severity_counts, Shapes::ShapeRef.new(shape: SeverityCounts, location_name: "severityCounts"))
@@ -770,12 +798,28 @@ module Aws::Inspector2
770
798
  AwsEcrContainerImageDetails.add_member(:author, Shapes::ShapeRef.new(shape: String, location_name: "author"))
771
799
  AwsEcrContainerImageDetails.add_member(:image_hash, Shapes::ShapeRef.new(shape: ImageHash, required: true, location_name: "imageHash"))
772
800
  AwsEcrContainerImageDetails.add_member(:image_tags, Shapes::ShapeRef.new(shape: ImageTagList, location_name: "imageTags"))
801
+ AwsEcrContainerImageDetails.add_member(:in_use_count, Shapes::ShapeRef.new(shape: Long, location_name: "inUseCount"))
802
+ AwsEcrContainerImageDetails.add_member(:last_in_use_at, Shapes::ShapeRef.new(shape: DateTimeTimestamp, location_name: "lastInUseAt"))
773
803
  AwsEcrContainerImageDetails.add_member(:platform, Shapes::ShapeRef.new(shape: Platform, location_name: "platform"))
774
804
  AwsEcrContainerImageDetails.add_member(:pushed_at, Shapes::ShapeRef.new(shape: DateTimeTimestamp, location_name: "pushedAt"))
775
805
  AwsEcrContainerImageDetails.add_member(:registry, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "registry"))
776
806
  AwsEcrContainerImageDetails.add_member(:repository_name, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "repositoryName"))
777
807
  AwsEcrContainerImageDetails.struct_class = Types::AwsEcrContainerImageDetails
778
808
 
809
+ AwsEcsMetadataDetails.add_member(:details_group, Shapes::ShapeRef.new(shape: AwsEcsMetadataDetailsDetailsGroupString, required: true, location_name: "detailsGroup"))
810
+ AwsEcsMetadataDetails.add_member(:task_definition_arn, Shapes::ShapeRef.new(shape: AwsEcsMetadataDetailsTaskDefinitionArnString, required: true, location_name: "taskDefinitionArn"))
811
+ AwsEcsMetadataDetails.struct_class = Types::AwsEcsMetadataDetails
812
+
813
+ AwsEksMetadataDetails.add_member(:namespace, Shapes::ShapeRef.new(shape: AwsEksMetadataDetailsNamespaceString, location_name: "namespace"))
814
+ AwsEksMetadataDetails.add_member(:workload_info_list, Shapes::ShapeRef.new(shape: AwsEksWorkloadInfoList, location_name: "workloadInfoList"))
815
+ AwsEksMetadataDetails.struct_class = Types::AwsEksMetadataDetails
816
+
817
+ AwsEksWorkloadInfo.add_member(:name, Shapes::ShapeRef.new(shape: AwsEksWorkloadInfoNameString, required: true, location_name: "name"))
818
+ AwsEksWorkloadInfo.add_member(:type, Shapes::ShapeRef.new(shape: AwsEksWorkloadInfoTypeString, required: true, location_name: "type"))
819
+ AwsEksWorkloadInfo.struct_class = Types::AwsEksWorkloadInfo
820
+
821
+ AwsEksWorkloadInfoList.member = Shapes::ShapeRef.new(shape: AwsEksWorkloadInfo)
822
+
779
823
  AwsLambdaFunctionDetails.add_member(:architectures, Shapes::ShapeRef.new(shape: ArchitectureList, location_name: "architectures"))
780
824
  AwsLambdaFunctionDetails.add_member(:code_sha_256, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "codeSha256"))
781
825
  AwsLambdaFunctionDetails.add_member(:execution_role_arn, Shapes::ShapeRef.new(shape: ExecutionRoleArn, required: true, location_name: "executionRoleArn"))
@@ -1021,6 +1065,31 @@ module Aws::Inspector2
1021
1065
  CisaData.add_member(:date_due, Shapes::ShapeRef.new(shape: CisaDateDue, location_name: "dateDue"))
1022
1066
  CisaData.struct_class = Types::CisaData
1023
1067
 
1068
+ ClusterDetails.add_member(:cluster_metadata, Shapes::ShapeRef.new(shape: ClusterMetadata, required: true, location_name: "clusterMetadata"))
1069
+ ClusterDetails.add_member(:last_in_use, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "lastInUse"))
1070
+ ClusterDetails.add_member(:running_unit_count, Shapes::ShapeRef.new(shape: Long, location_name: "runningUnitCount"))
1071
+ ClusterDetails.add_member(:stopped_unit_count, Shapes::ShapeRef.new(shape: Long, location_name: "stoppedUnitCount"))
1072
+ ClusterDetails.struct_class = Types::ClusterDetails
1073
+
1074
+ ClusterForImageFilterCriteria.add_member(:resource_id, Shapes::ShapeRef.new(shape: ClusterForImageFilterCriteriaResourceIdString, required: true, location_name: "resourceId"))
1075
+ ClusterForImageFilterCriteria.struct_class = Types::ClusterForImageFilterCriteria
1076
+
1077
+ ClusterInformation.add_member(:cluster_arn, Shapes::ShapeRef.new(shape: ClusterInformationClusterArnString, required: true, location_name: "clusterArn"))
1078
+ ClusterInformation.add_member(:cluster_details, Shapes::ShapeRef.new(shape: ClusterInformationClusterDetailsList, location_name: "clusterDetails"))
1079
+ ClusterInformation.struct_class = Types::ClusterInformation
1080
+
1081
+ ClusterInformationClusterDetailsList.member = Shapes::ShapeRef.new(shape: ClusterDetails)
1082
+
1083
+ ClusterInformationList.member = Shapes::ShapeRef.new(shape: ClusterInformation)
1084
+
1085
+ ClusterMetadata.add_member(:aws_ecs_metadata_details, Shapes::ShapeRef.new(shape: AwsEcsMetadataDetails, location_name: "awsEcsMetadataDetails"))
1086
+ ClusterMetadata.add_member(:aws_eks_metadata_details, Shapes::ShapeRef.new(shape: AwsEksMetadataDetails, location_name: "awsEksMetadataDetails"))
1087
+ ClusterMetadata.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown'))
1088
+ ClusterMetadata.add_member_subclass(:aws_ecs_metadata_details, Types::ClusterMetadata::AwsEcsMetadataDetails)
1089
+ ClusterMetadata.add_member_subclass(:aws_eks_metadata_details, Types::ClusterMetadata::AwsEksMetadataDetails)
1090
+ ClusterMetadata.add_member_subclass(:unknown, Types::ClusterMetadata::Unknown)
1091
+ ClusterMetadata.struct_class = Types::ClusterMetadata
1092
+
1024
1093
  CodeFilePath.add_member(:end_line, Shapes::ShapeRef.new(shape: Integer, required: true, location_name: "endLine"))
1025
1094
  CodeFilePath.add_member(:file_name, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "fileName"))
1026
1095
  CodeFilePath.add_member(:file_path, Shapes::ShapeRef.new(shape: NonEmptyString, required: true, location_name: "filePath"))
@@ -1083,6 +1152,8 @@ module Aws::Inspector2
1083
1152
 
1084
1153
  CoverageFilterCriteria.add_member(:account_id, Shapes::ShapeRef.new(shape: CoverageStringFilterList, location_name: "accountId"))
1085
1154
  CoverageFilterCriteria.add_member(:ec2_instance_tags, Shapes::ShapeRef.new(shape: CoverageMapFilterList, location_name: "ec2InstanceTags"))
1155
+ CoverageFilterCriteria.add_member(:ecr_image_in_use_count, Shapes::ShapeRef.new(shape: CoverageNumberFilterList, location_name: "ecrImageInUseCount"))
1156
+ CoverageFilterCriteria.add_member(:ecr_image_last_in_use_at, Shapes::ShapeRef.new(shape: CoverageDateFilterList, location_name: "ecrImageLastInUseAt"))
1086
1157
  CoverageFilterCriteria.add_member(:ecr_image_tags, Shapes::ShapeRef.new(shape: CoverageStringFilterList, location_name: "ecrImageTags"))
1087
1158
  CoverageFilterCriteria.add_member(:ecr_repository_name, Shapes::ShapeRef.new(shape: CoverageStringFilterList, location_name: "ecrRepositoryName"))
1088
1159
  CoverageFilterCriteria.add_member(:image_pulled_at, Shapes::ShapeRef.new(shape: CoverageDateFilterList, location_name: "imagePulledAt"))
@@ -1105,6 +1176,12 @@ module Aws::Inspector2
1105
1176
 
1106
1177
  CoverageMapFilterList.member = Shapes::ShapeRef.new(shape: CoverageMapFilter)
1107
1178
 
1179
+ CoverageNumberFilter.add_member(:lower_inclusive, Shapes::ShapeRef.new(shape: Long, location_name: "lowerInclusive"))
1180
+ CoverageNumberFilter.add_member(:upper_inclusive, Shapes::ShapeRef.new(shape: Long, location_name: "upperInclusive"))
1181
+ CoverageNumberFilter.struct_class = Types::CoverageNumberFilter
1182
+
1183
+ CoverageNumberFilterList.member = Shapes::ShapeRef.new(shape: CoverageNumberFilter)
1184
+
1108
1185
  CoverageStringFilter.add_member(:comparison, Shapes::ShapeRef.new(shape: CoverageStringComparison, required: true, location_name: "comparison"))
1109
1186
  CoverageStringFilter.add_member(:value, Shapes::ShapeRef.new(shape: CoverageStringInput, required: true, location_name: "value"))
1110
1187
  CoverageStringFilter.struct_class = Types::CoverageStringFilter
@@ -1301,6 +1378,7 @@ module Aws::Inspector2
1301
1378
  Ec2ScanModeState.struct_class = Types::Ec2ScanModeState
1302
1379
 
1303
1380
  EcrConfiguration.add_member(:pull_date_rescan_duration, Shapes::ShapeRef.new(shape: EcrPullDateRescanDuration, location_name: "pullDateRescanDuration"))
1381
+ EcrConfiguration.add_member(:pull_date_rescan_mode, Shapes::ShapeRef.new(shape: EcrPullDateRescanMode, location_name: "pullDateRescanMode"))
1304
1382
  EcrConfiguration.add_member(:rescan_duration, Shapes::ShapeRef.new(shape: EcrRescanDuration, required: true, location_name: "rescanDuration"))
1305
1383
  EcrConfiguration.struct_class = Types::EcrConfiguration
1306
1384
 
@@ -1308,6 +1386,8 @@ module Aws::Inspector2
1308
1386
  EcrConfigurationState.struct_class = Types::EcrConfigurationState
1309
1387
 
1310
1388
  EcrContainerImageMetadata.add_member(:image_pulled_at, Shapes::ShapeRef.new(shape: DateTimeTimestamp, location_name: "imagePulledAt"))
1389
+ EcrContainerImageMetadata.add_member(:in_use_count, Shapes::ShapeRef.new(shape: Long, location_name: "inUseCount"))
1390
+ EcrContainerImageMetadata.add_member(:last_in_use_at, Shapes::ShapeRef.new(shape: DateTimeTimestamp, location_name: "lastInUseAt"))
1311
1391
  EcrContainerImageMetadata.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "tags"))
1312
1392
  EcrContainerImageMetadata.struct_class = Types::EcrContainerImageMetadata
1313
1393
 
@@ -1316,6 +1396,7 @@ module Aws::Inspector2
1316
1396
  EcrRepositoryMetadata.struct_class = Types::EcrRepositoryMetadata
1317
1397
 
1318
1398
  EcrRescanDurationState.add_member(:pull_date_rescan_duration, Shapes::ShapeRef.new(shape: EcrPullDateRescanDuration, location_name: "pullDateRescanDuration"))
1399
+ EcrRescanDurationState.add_member(:pull_date_rescan_mode, Shapes::ShapeRef.new(shape: EcrPullDateRescanMode, location_name: "pullDateRescanMode"))
1319
1400
  EcrRescanDurationState.add_member(:rescan_duration, Shapes::ShapeRef.new(shape: EcrRescanDuration, location_name: "rescanDuration"))
1320
1401
  EcrRescanDurationState.add_member(:status, Shapes::ShapeRef.new(shape: EcrRescanDurationStatus, location_name: "status"))
1321
1402
  EcrRescanDurationState.add_member(:updated_at, Shapes::ShapeRef.new(shape: DateTimeTimestamp, location_name: "updatedAt"))
@@ -1400,6 +1481,8 @@ module Aws::Inspector2
1400
1481
  FilterCriteria.add_member(:ec2_instance_vpc_id, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "ec2InstanceVpcId"))
1401
1482
  FilterCriteria.add_member(:ecr_image_architecture, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "ecrImageArchitecture"))
1402
1483
  FilterCriteria.add_member(:ecr_image_hash, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "ecrImageHash"))
1484
+ FilterCriteria.add_member(:ecr_image_in_use_count, Shapes::ShapeRef.new(shape: NumberFilterList, location_name: "ecrImageInUseCount"))
1485
+ FilterCriteria.add_member(:ecr_image_last_in_use_at, Shapes::ShapeRef.new(shape: DateFilterList, location_name: "ecrImageLastInUseAt"))
1403
1486
  FilterCriteria.add_member(:ecr_image_pushed_at, Shapes::ShapeRef.new(shape: DateFilterList, location_name: "ecrImagePushedAt"))
1404
1487
  FilterCriteria.add_member(:ecr_image_registry, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "ecrImageRegistry"))
1405
1488
  FilterCriteria.add_member(:ecr_image_repository_name, Shapes::ShapeRef.new(shape: StringFilterList, location_name: "ecrImageRepositoryName"))
@@ -1539,6 +1622,15 @@ module Aws::Inspector2
1539
1622
  GetCisScanResultDetailsResponse.add_member(:scan_result_details, Shapes::ShapeRef.new(shape: CisScanResultDetailsList, location_name: "scanResultDetails"))
1540
1623
  GetCisScanResultDetailsResponse.struct_class = Types::GetCisScanResultDetailsResponse
1541
1624
 
1625
+ GetClustersForImageRequest.add_member(:filter, Shapes::ShapeRef.new(shape: ClusterForImageFilterCriteria, required: true, location_name: "filter"))
1626
+ GetClustersForImageRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: GetClustersForImageRequestMaxResultsInteger, location_name: "maxResults"))
1627
+ GetClustersForImageRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: GetClustersForImageNextToken, location_name: "nextToken"))
1628
+ GetClustersForImageRequest.struct_class = Types::GetClustersForImageRequest
1629
+
1630
+ GetClustersForImageResponse.add_member(:cluster, Shapes::ShapeRef.new(shape: ClusterInformationList, required: true, location_name: "cluster"))
1631
+ GetClustersForImageResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: GetClustersForImageNextToken, location_name: "nextToken"))
1632
+ GetClustersForImageResponse.struct_class = Types::GetClustersForImageResponse
1633
+
1542
1634
  GetConfigurationRequest.struct_class = Types::GetConfigurationRequest
1543
1635
 
1544
1636
  GetConfigurationResponse.add_member(:ec2_configuration, Shapes::ShapeRef.new(shape: Ec2ConfigurationState, location_name: "ec2Configuration"))
@@ -2662,6 +2754,24 @@ module Aws::Inspector2
2662
2754
  )
2663
2755
  end)
2664
2756
 
2757
+ api.add_operation(:get_clusters_for_image, Seahorse::Model::Operation.new.tap do |o|
2758
+ o.name = "GetClustersForImage"
2759
+ o.http_method = "POST"
2760
+ o.http_request_uri = "/cluster/get"
2761
+ o.input = Shapes::ShapeRef.new(shape: GetClustersForImageRequest)
2762
+ o.output = Shapes::ShapeRef.new(shape: GetClustersForImageResponse)
2763
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
2764
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
2765
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
2766
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
2767
+ o[:pager] = Aws::Pager.new(
2768
+ limit_key: "max_results",
2769
+ tokens: {
2770
+ "next_token" => "next_token"
2771
+ }
2772
+ )
2773
+ end)
2774
+
2665
2775
  api.add_operation(:get_configuration, Seahorse::Model::Operation.new.tap do |o|
2666
2776
  o.name = "GetConfiguration"
2667
2777
  o.http_method = "POST"