aws-sdk-accessanalyzer 1.30.0 → 1.31.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: 5b6a98531fa5ff3c515cf04c3de3b59622b464386914805f24df4805be0e0a63
4
- data.tar.gz: 181800d363950abd288279a26764e257b088d778cf24829c35e641cd4bf6e58b
3
+ metadata.gz: c975d66f577ce2ad5bebaf1b00380846b72066244108e80f33548c03ec58248a
4
+ data.tar.gz: 8b6f85c2313f8c08ffa0782f440e5dd6f9f4a0f2fdd5dada1dba29c8b0703f32
5
5
  SHA512:
6
- metadata.gz: c76bc0c96995f063c9e23b8cfb55c847e6703adc18c09710faba97677593b9aef5da3799443101d580dd72b80d60a201bf57c97cd604be2bfa6ed883f89d25c6
7
- data.tar.gz: 816a8aff96899c012361e807647d6a449a56c00cca396dc2df6bdea96f020d358ff38db18d5fa80ce9d403ac3da28b4a5465362f405e33f7eb8d07b6766ca880
6
+ metadata.gz: 7c8e59bcfbdacf5b3cb94b2cb446a46e450b25734ef5bf1ada917f8708520cc4f41b2f31d0591b098d387b95a542413028d0ab421fad3adf37143eddad99a84e
7
+ data.tar.gz: 1b447ef46dcde07395364e873d1caeb06fe1e34e802d4ae467031332e7cde99895311b1431882688bf8e44a363443546cdf9f0b2d29b97483cca2f38577a7cfb
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.31.0 (2022-10-25)
5
+ ------------------
6
+
7
+ * Feature - This release adds support for six new resource types in IAM Access Analyzer to help you easily identify public and cross-account access to your AWS resources. Updated service API, documentation, and paginators.
8
+
4
9
  1.30.0 (2022-10-03)
5
10
  ------------------
6
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.30.0
1
+ 1.31.0
@@ -30,7 +30,7 @@ require 'aws-sdk-core/plugins/http_checksum.rb'
30
30
  require 'aws-sdk-core/plugins/checksum_algorithm.rb'
31
31
  require 'aws-sdk-core/plugins/defaults_mode.rb'
32
32
  require 'aws-sdk-core/plugins/recursion_detection.rb'
33
- require 'aws-sdk-core/plugins/signature_v4.rb'
33
+ require 'aws-sdk-core/plugins/sign.rb'
34
34
  require 'aws-sdk-core/plugins/protocols/rest_json.rb'
35
35
 
36
36
  Aws::Plugins::GlobalConfiguration.add_identifier(:accessanalyzer)
@@ -79,8 +79,9 @@ module Aws::AccessAnalyzer
79
79
  add_plugin(Aws::Plugins::ChecksumAlgorithm)
80
80
  add_plugin(Aws::Plugins::DefaultsMode)
81
81
  add_plugin(Aws::Plugins::RecursionDetection)
82
- add_plugin(Aws::Plugins::SignatureV4)
82
+ add_plugin(Aws::Plugins::Sign)
83
83
  add_plugin(Aws::Plugins::Protocols::RestJson)
84
+ add_plugin(Aws::AccessAnalyzer::Plugins::Endpoints)
84
85
 
85
86
  # @overload initialize(options)
86
87
  # @param [Hash] options
@@ -287,6 +288,19 @@ module Aws::AccessAnalyzer
287
288
  # ** Please note ** When response stubbing is enabled, no HTTP
288
289
  # requests are made, and retries are disabled.
289
290
  #
291
+ # @option options [Aws::TokenProvider] :token_provider
292
+ # A Bearer Token Provider. This can be an instance of any one of the
293
+ # following classes:
294
+ #
295
+ # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing
296
+ # tokens.
297
+ #
298
+ # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an
299
+ # access token generated from `aws login`.
300
+ #
301
+ # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain`
302
+ # will be used to search for tokens configured for your profile in shared configuration files.
303
+ #
290
304
  # @option options [Boolean] :use_dualstack_endpoint
291
305
  # When set to `true`, dualstack enabled endpoints (with `.aws` TLD)
292
306
  # will be used if available.
@@ -300,6 +314,9 @@ module Aws::AccessAnalyzer
300
314
  # When `true`, request parameters are validated before
301
315
  # sending the request.
302
316
  #
317
+ # @option options [Aws::AccessAnalyzer::EndpointProvider] :endpoint_provider
318
+ # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::AccessAnalyzer::EndpointParameters`
319
+ #
303
320
  # @option options [URI::HTTP,String] :http_proxy A proxy to send
304
321
  # requests through. Formatted like 'http://proxy.com:123'.
305
322
  #
@@ -446,9 +463,20 @@ module Aws::AccessAnalyzer
446
463
  # analyzer_arn: "AnalyzerArn", # required
447
464
  # configurations: { # required
448
465
  # "ConfigurationsMapKey" => {
466
+ # ebs_snapshot: {
467
+ # user_ids: ["EbsUserId"],
468
+ # groups: ["EbsGroup"],
469
+ # kms_key_id: "EbsSnapshotDataEncryptionKeyId",
470
+ # },
471
+ # ecr_repository: {
472
+ # repository_policy: "EcrRepositoryPolicy",
473
+ # },
449
474
  # iam_role: {
450
475
  # trust_policy: "IamTrustPolicy",
451
476
  # },
477
+ # efs_file_system: {
478
+ # file_system_policy: "EfsFileSystemPolicy",
479
+ # },
452
480
  # kms_key: {
453
481
  # key_policies: {
454
482
  # "PolicyName" => "KmsKeyPolicy",
@@ -470,6 +498,22 @@ module Aws::AccessAnalyzer
470
498
  # },
471
499
  # ],
472
500
  # },
501
+ # rds_db_cluster_snapshot: {
502
+ # attributes: {
503
+ # "RdsDbClusterSnapshotAttributeName" => {
504
+ # account_ids: ["RdsDbClusterSnapshotAccountId"],
505
+ # },
506
+ # },
507
+ # kms_key_id: "RdsDbClusterSnapshotKmsKeyId",
508
+ # },
509
+ # rds_db_snapshot: {
510
+ # attributes: {
511
+ # "RdsDbSnapshotAttributeName" => {
512
+ # account_ids: ["RdsDbSnapshotAccountId"],
513
+ # },
514
+ # },
515
+ # kms_key_id: "RdsDbSnapshotKmsKeyId",
516
+ # },
473
517
  # secrets_manager_secret: {
474
518
  # kms_key_id: "SecretsManagerSecretKmsId",
475
519
  # secret_policy: "SecretsManagerSecretPolicy",
@@ -506,6 +550,9 @@ module Aws::AccessAnalyzer
506
550
  # },
507
551
  # },
508
552
  # },
553
+ # sns_topic: {
554
+ # topic_policy: "SnsTopicPolicy",
555
+ # },
509
556
  # sqs_queue: {
510
557
  # queue_policy: "SqsQueuePolicy",
511
558
  # },
@@ -741,7 +788,14 @@ module Aws::AccessAnalyzer
741
788
  # resp.access_preview.id #=> String
742
789
  # resp.access_preview.analyzer_arn #=> String
743
790
  # resp.access_preview.configurations #=> Hash
791
+ # resp.access_preview.configurations["ConfigurationsMapKey"].ebs_snapshot.user_ids #=> Array
792
+ # resp.access_preview.configurations["ConfigurationsMapKey"].ebs_snapshot.user_ids[0] #=> String
793
+ # resp.access_preview.configurations["ConfigurationsMapKey"].ebs_snapshot.groups #=> Array
794
+ # resp.access_preview.configurations["ConfigurationsMapKey"].ebs_snapshot.groups[0] #=> String
795
+ # resp.access_preview.configurations["ConfigurationsMapKey"].ebs_snapshot.kms_key_id #=> String
796
+ # resp.access_preview.configurations["ConfigurationsMapKey"].ecr_repository.repository_policy #=> String
744
797
  # resp.access_preview.configurations["ConfigurationsMapKey"].iam_role.trust_policy #=> String
798
+ # resp.access_preview.configurations["ConfigurationsMapKey"].efs_file_system.file_system_policy #=> String
745
799
  # resp.access_preview.configurations["ConfigurationsMapKey"].kms_key.key_policies #=> Hash
746
800
  # resp.access_preview.configurations["ConfigurationsMapKey"].kms_key.key_policies["PolicyName"] #=> String
747
801
  # resp.access_preview.configurations["ConfigurationsMapKey"].kms_key.grants #=> Array
@@ -754,6 +808,14 @@ module Aws::AccessAnalyzer
754
808
  # resp.access_preview.configurations["ConfigurationsMapKey"].kms_key.grants[0].constraints.encryption_context_subset #=> Hash
755
809
  # resp.access_preview.configurations["ConfigurationsMapKey"].kms_key.grants[0].constraints.encryption_context_subset["KmsConstraintsKey"] #=> String
756
810
  # resp.access_preview.configurations["ConfigurationsMapKey"].kms_key.grants[0].issuing_account #=> String
811
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_cluster_snapshot.attributes #=> Hash
812
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_cluster_snapshot.attributes["RdsDbClusterSnapshotAttributeName"].account_ids #=> Array
813
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_cluster_snapshot.attributes["RdsDbClusterSnapshotAttributeName"].account_ids[0] #=> String
814
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_cluster_snapshot.kms_key_id #=> String
815
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_snapshot.attributes #=> Hash
816
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_snapshot.attributes["RdsDbSnapshotAttributeName"].account_ids #=> Array
817
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_snapshot.attributes["RdsDbSnapshotAttributeName"].account_ids[0] #=> String
818
+ # resp.access_preview.configurations["ConfigurationsMapKey"].rds_db_snapshot.kms_key_id #=> String
757
819
  # resp.access_preview.configurations["ConfigurationsMapKey"].secrets_manager_secret.kms_key_id #=> String
758
820
  # resp.access_preview.configurations["ConfigurationsMapKey"].secrets_manager_secret.secret_policy #=> String
759
821
  # resp.access_preview.configurations["ConfigurationsMapKey"].s3_bucket.bucket_policy #=> String
@@ -768,6 +830,7 @@ module Aws::AccessAnalyzer
768
830
  # resp.access_preview.configurations["ConfigurationsMapKey"].s3_bucket.access_points["AccessPointArn"].public_access_block.ignore_public_acls #=> Boolean
769
831
  # resp.access_preview.configurations["ConfigurationsMapKey"].s3_bucket.access_points["AccessPointArn"].public_access_block.restrict_public_buckets #=> Boolean
770
832
  # resp.access_preview.configurations["ConfigurationsMapKey"].s3_bucket.access_points["AccessPointArn"].network_origin.vpc_configuration.vpc_id #=> String
833
+ # resp.access_preview.configurations["ConfigurationsMapKey"].sns_topic.topic_policy #=> String
771
834
  # resp.access_preview.configurations["ConfigurationsMapKey"].sqs_queue.queue_policy #=> String
772
835
  # resp.access_preview.created_at #=> Time
773
836
  # resp.access_preview.status #=> String, one of "COMPLETED", "CREATING", "FAILED"
@@ -808,7 +871,7 @@ module Aws::AccessAnalyzer
808
871
  # @example Response structure
809
872
  #
810
873
  # resp.resource.resource_arn #=> String
811
- # resp.resource.resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret"
874
+ # resp.resource.resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret", "AWS::EFS::FileSystem", "AWS::EC2::Snapshot", "AWS::ECR::Repository", "AWS::RDS::DBSnapshot", "AWS::RDS::DBClusterSnapshot", "AWS::SNS::Topic"
812
875
  # resp.resource.created_at #=> Time
813
876
  # resp.resource.analyzed_at #=> Time
814
877
  # resp.resource.updated_at #=> Time
@@ -948,7 +1011,7 @@ module Aws::AccessAnalyzer
948
1011
  # resp.finding.action[0] #=> String
949
1012
  # resp.finding.resource #=> String
950
1013
  # resp.finding.is_public #=> Boolean
951
- # resp.finding.resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret"
1014
+ # resp.finding.resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret", "AWS::EFS::FileSystem", "AWS::EC2::Snapshot", "AWS::ECR::Repository", "AWS::RDS::DBSnapshot", "AWS::RDS::DBClusterSnapshot", "AWS::SNS::Topic"
952
1015
  # resp.finding.condition #=> Hash
953
1016
  # resp.finding.condition["String"] #=> String
954
1017
  # resp.finding.created_at #=> Time
@@ -1097,7 +1160,7 @@ module Aws::AccessAnalyzer
1097
1160
  # resp.findings[0].condition["String"] #=> String
1098
1161
  # resp.findings[0].resource #=> String
1099
1162
  # resp.findings[0].is_public #=> Boolean
1100
- # resp.findings[0].resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret"
1163
+ # resp.findings[0].resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret", "AWS::EFS::FileSystem", "AWS::EC2::Snapshot", "AWS::ECR::Repository", "AWS::RDS::DBSnapshot", "AWS::RDS::DBClusterSnapshot", "AWS::SNS::Topic"
1101
1164
  # resp.findings[0].created_at #=> Time
1102
1165
  # resp.findings[0].change_type #=> String, one of "CHANGED", "NEW", "UNCHANGED"
1103
1166
  # resp.findings[0].status #=> String, one of "ACTIVE", "ARCHIVED", "RESOLVED"
@@ -1197,7 +1260,7 @@ module Aws::AccessAnalyzer
1197
1260
  #
1198
1261
  # resp = client.list_analyzed_resources({
1199
1262
  # analyzer_arn: "AnalyzerArn", # required
1200
- # resource_type: "AWS::S3::Bucket", # accepts AWS::S3::Bucket, AWS::IAM::Role, AWS::SQS::Queue, AWS::Lambda::Function, AWS::Lambda::LayerVersion, AWS::KMS::Key, AWS::SecretsManager::Secret
1263
+ # resource_type: "AWS::S3::Bucket", # accepts AWS::S3::Bucket, AWS::IAM::Role, AWS::SQS::Queue, AWS::Lambda::Function, AWS::Lambda::LayerVersion, AWS::KMS::Key, AWS::SecretsManager::Secret, AWS::EFS::FileSystem, AWS::EC2::Snapshot, AWS::ECR::Repository, AWS::RDS::DBSnapshot, AWS::RDS::DBClusterSnapshot, AWS::SNS::Topic
1201
1264
  # next_token: "Token",
1202
1265
  # max_results: 1,
1203
1266
  # })
@@ -1207,7 +1270,7 @@ module Aws::AccessAnalyzer
1207
1270
  # resp.analyzed_resources #=> Array
1208
1271
  # resp.analyzed_resources[0].resource_arn #=> String
1209
1272
  # resp.analyzed_resources[0].resource_owner_account #=> String
1210
- # resp.analyzed_resources[0].resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret"
1273
+ # resp.analyzed_resources[0].resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret", "AWS::EFS::FileSystem", "AWS::EC2::Snapshot", "AWS::ECR::Repository", "AWS::RDS::DBSnapshot", "AWS::RDS::DBClusterSnapshot", "AWS::SNS::Topic"
1211
1274
  # resp.next_token #=> String
1212
1275
  #
1213
1276
  # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/ListAnalyzedResources AWS API Documentation
@@ -1386,7 +1449,7 @@ module Aws::AccessAnalyzer
1386
1449
  # resp.findings[0].action[0] #=> String
1387
1450
  # resp.findings[0].resource #=> String
1388
1451
  # resp.findings[0].is_public #=> Boolean
1389
- # resp.findings[0].resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret"
1452
+ # resp.findings[0].resource_type #=> String, one of "AWS::S3::Bucket", "AWS::IAM::Role", "AWS::SQS::Queue", "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", "AWS::KMS::Key", "AWS::SecretsManager::Secret", "AWS::EFS::FileSystem", "AWS::EC2::Snapshot", "AWS::ECR::Repository", "AWS::RDS::DBSnapshot", "AWS::RDS::DBClusterSnapshot", "AWS::SNS::Topic"
1390
1453
  # resp.findings[0].condition #=> Hash
1391
1454
  # resp.findings[0].condition["String"] #=> String
1392
1455
  # resp.findings[0].created_at #=> Time
@@ -1561,6 +1624,11 @@ module Aws::AccessAnalyzer
1561
1624
  # @option params [required, String] :resource_arn
1562
1625
  # The ARN of the resource to scan.
1563
1626
  #
1627
+ # @option params [String] :resource_owner_account
1628
+ # The Amazon Web Services account ID that owns the resource. For most
1629
+ # Amazon Web Services resources, the owning account is the account in
1630
+ # which the resource was created.
1631
+ #
1564
1632
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1565
1633
  #
1566
1634
  # @example Request syntax with placeholder values
@@ -1568,6 +1636,7 @@ module Aws::AccessAnalyzer
1568
1636
  # resp = client.start_resource_scan({
1569
1637
  # analyzer_arn: "AnalyzerArn", # required
1570
1638
  # resource_arn: "ResourceArn", # required
1639
+ # resource_owner_account: "String",
1571
1640
  # })
1572
1641
  #
1573
1642
  # @see http://docs.aws.amazon.com/goto/WebAPI/accessanalyzer-2019-11-01/StartResourceScan AWS API Documentation
@@ -1830,7 +1899,7 @@ module Aws::AccessAnalyzer
1830
1899
  params: params,
1831
1900
  config: config)
1832
1901
  context[:gem_name] = 'aws-sdk-accessanalyzer'
1833
- context[:gem_version] = '1.30.0'
1902
+ context[:gem_version] = '1.31.0'
1834
1903
  Seahorse::Client::Request.new(handlers, context)
1835
1904
  end
1836
1905
 
@@ -60,6 +60,16 @@ module Aws::AccessAnalyzer
60
60
  Criterion = Shapes::StructureShape.new(name: 'Criterion')
61
61
  DeleteAnalyzerRequest = Shapes::StructureShape.new(name: 'DeleteAnalyzerRequest')
62
62
  DeleteArchiveRuleRequest = Shapes::StructureShape.new(name: 'DeleteArchiveRuleRequest')
63
+ EbsGroup = Shapes::StringShape.new(name: 'EbsGroup')
64
+ EbsGroupList = Shapes::ListShape.new(name: 'EbsGroupList')
65
+ EbsSnapshotConfiguration = Shapes::StructureShape.new(name: 'EbsSnapshotConfiguration')
66
+ EbsSnapshotDataEncryptionKeyId = Shapes::StringShape.new(name: 'EbsSnapshotDataEncryptionKeyId')
67
+ EbsUserId = Shapes::StringShape.new(name: 'EbsUserId')
68
+ EbsUserIdList = Shapes::ListShape.new(name: 'EbsUserIdList')
69
+ EcrRepositoryConfiguration = Shapes::StructureShape.new(name: 'EcrRepositoryConfiguration')
70
+ EcrRepositoryPolicy = Shapes::StringShape.new(name: 'EcrRepositoryPolicy')
71
+ EfsFileSystemConfiguration = Shapes::StructureShape.new(name: 'EfsFileSystemConfiguration')
72
+ EfsFileSystemPolicy = Shapes::StringShape.new(name: 'EfsFileSystemPolicy')
63
73
  FilterCriteriaMap = Shapes::MapShape.new(name: 'FilterCriteriaMap')
64
74
  Finding = Shapes::StructureShape.new(name: 'Finding')
65
75
  FindingChangeType = Shapes::StringShape.new(name: 'FindingChangeType')
@@ -150,6 +160,20 @@ module Aws::AccessAnalyzer
150
160
  Position = Shapes::StructureShape.new(name: 'Position')
151
161
  PrincipalArn = Shapes::StringShape.new(name: 'PrincipalArn')
152
162
  PrincipalMap = Shapes::MapShape.new(name: 'PrincipalMap')
163
+ RdsDbClusterSnapshotAccountId = Shapes::StringShape.new(name: 'RdsDbClusterSnapshotAccountId')
164
+ RdsDbClusterSnapshotAccountIdsList = Shapes::ListShape.new(name: 'RdsDbClusterSnapshotAccountIdsList')
165
+ RdsDbClusterSnapshotAttributeName = Shapes::StringShape.new(name: 'RdsDbClusterSnapshotAttributeName')
166
+ RdsDbClusterSnapshotAttributeValue = Shapes::UnionShape.new(name: 'RdsDbClusterSnapshotAttributeValue')
167
+ RdsDbClusterSnapshotAttributesMap = Shapes::MapShape.new(name: 'RdsDbClusterSnapshotAttributesMap')
168
+ RdsDbClusterSnapshotConfiguration = Shapes::StructureShape.new(name: 'RdsDbClusterSnapshotConfiguration')
169
+ RdsDbClusterSnapshotKmsKeyId = Shapes::StringShape.new(name: 'RdsDbClusterSnapshotKmsKeyId')
170
+ RdsDbSnapshotAccountId = Shapes::StringShape.new(name: 'RdsDbSnapshotAccountId')
171
+ RdsDbSnapshotAccountIdsList = Shapes::ListShape.new(name: 'RdsDbSnapshotAccountIdsList')
172
+ RdsDbSnapshotAttributeName = Shapes::StringShape.new(name: 'RdsDbSnapshotAttributeName')
173
+ RdsDbSnapshotAttributeValue = Shapes::UnionShape.new(name: 'RdsDbSnapshotAttributeValue')
174
+ RdsDbSnapshotAttributesMap = Shapes::MapShape.new(name: 'RdsDbSnapshotAttributesMap')
175
+ RdsDbSnapshotConfiguration = Shapes::StructureShape.new(name: 'RdsDbSnapshotConfiguration')
176
+ RdsDbSnapshotKmsKeyId = Shapes::StringShape.new(name: 'RdsDbSnapshotKmsKeyId')
153
177
  ReasonCode = Shapes::StringShape.new(name: 'ReasonCode')
154
178
  RegionList = Shapes::ListShape.new(name: 'RegionList')
155
179
  ResourceArn = Shapes::StringShape.new(name: 'ResourceArn')
@@ -169,6 +193,8 @@ module Aws::AccessAnalyzer
169
193
  SecretsManagerSecretPolicy = Shapes::StringShape.new(name: 'SecretsManagerSecretPolicy')
170
194
  ServiceQuotaExceededException = Shapes::StructureShape.new(name: 'ServiceQuotaExceededException')
171
195
  SharedViaList = Shapes::ListShape.new(name: 'SharedViaList')
196
+ SnsTopicConfiguration = Shapes::StructureShape.new(name: 'SnsTopicConfiguration')
197
+ SnsTopicPolicy = Shapes::StringShape.new(name: 'SnsTopicPolicy')
172
198
  SortCriteria = Shapes::StructureShape.new(name: 'SortCriteria')
173
199
  Span = Shapes::StructureShape.new(name: 'Span')
174
200
  SqsQueueConfiguration = Shapes::StructureShape.new(name: 'SqsQueueConfiguration')
@@ -326,16 +352,28 @@ module Aws::AccessAnalyzer
326
352
  ConditionKeyMap.key = Shapes::ShapeRef.new(shape: String)
327
353
  ConditionKeyMap.value = Shapes::ShapeRef.new(shape: String)
328
354
 
355
+ Configuration.add_member(:ebs_snapshot, Shapes::ShapeRef.new(shape: EbsSnapshotConfiguration, location_name: "ebsSnapshot"))
356
+ Configuration.add_member(:ecr_repository, Shapes::ShapeRef.new(shape: EcrRepositoryConfiguration, location_name: "ecrRepository"))
329
357
  Configuration.add_member(:iam_role, Shapes::ShapeRef.new(shape: IamRoleConfiguration, location_name: "iamRole"))
358
+ Configuration.add_member(:efs_file_system, Shapes::ShapeRef.new(shape: EfsFileSystemConfiguration, location_name: "efsFileSystem"))
330
359
  Configuration.add_member(:kms_key, Shapes::ShapeRef.new(shape: KmsKeyConfiguration, location_name: "kmsKey"))
360
+ Configuration.add_member(:rds_db_cluster_snapshot, Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotConfiguration, location_name: "rdsDbClusterSnapshot"))
361
+ Configuration.add_member(:rds_db_snapshot, Shapes::ShapeRef.new(shape: RdsDbSnapshotConfiguration, location_name: "rdsDbSnapshot"))
331
362
  Configuration.add_member(:secrets_manager_secret, Shapes::ShapeRef.new(shape: SecretsManagerSecretConfiguration, location_name: "secretsManagerSecret"))
332
363
  Configuration.add_member(:s3_bucket, Shapes::ShapeRef.new(shape: S3BucketConfiguration, location_name: "s3Bucket"))
364
+ Configuration.add_member(:sns_topic, Shapes::ShapeRef.new(shape: SnsTopicConfiguration, location_name: "snsTopic"))
333
365
  Configuration.add_member(:sqs_queue, Shapes::ShapeRef.new(shape: SqsQueueConfiguration, location_name: "sqsQueue"))
334
366
  Configuration.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown'))
367
+ Configuration.add_member_subclass(:ebs_snapshot, Types::Configuration::EbsSnapshot)
368
+ Configuration.add_member_subclass(:ecr_repository, Types::Configuration::EcrRepository)
335
369
  Configuration.add_member_subclass(:iam_role, Types::Configuration::IamRole)
370
+ Configuration.add_member_subclass(:efs_file_system, Types::Configuration::EfsFileSystem)
336
371
  Configuration.add_member_subclass(:kms_key, Types::Configuration::KmsKey)
372
+ Configuration.add_member_subclass(:rds_db_cluster_snapshot, Types::Configuration::RdsDbClusterSnapshot)
373
+ Configuration.add_member_subclass(:rds_db_snapshot, Types::Configuration::RdsDbSnapshot)
337
374
  Configuration.add_member_subclass(:secrets_manager_secret, Types::Configuration::SecretsManagerSecret)
338
375
  Configuration.add_member_subclass(:s3_bucket, Types::Configuration::S3Bucket)
376
+ Configuration.add_member_subclass(:sns_topic, Types::Configuration::SnsTopic)
339
377
  Configuration.add_member_subclass(:sqs_queue, Types::Configuration::SqsQueue)
340
378
  Configuration.add_member_subclass(:unknown, Types::Configuration::Unknown)
341
379
  Configuration.struct_class = Types::Configuration
@@ -387,6 +425,21 @@ module Aws::AccessAnalyzer
387
425
  DeleteArchiveRuleRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: String, location: "querystring", location_name: "clientToken", metadata: {"idempotencyToken"=>true}))
388
426
  DeleteArchiveRuleRequest.struct_class = Types::DeleteArchiveRuleRequest
389
427
 
428
+ EbsGroupList.member = Shapes::ShapeRef.new(shape: EbsGroup)
429
+
430
+ EbsSnapshotConfiguration.add_member(:user_ids, Shapes::ShapeRef.new(shape: EbsUserIdList, location_name: "userIds"))
431
+ EbsSnapshotConfiguration.add_member(:groups, Shapes::ShapeRef.new(shape: EbsGroupList, location_name: "groups"))
432
+ EbsSnapshotConfiguration.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: EbsSnapshotDataEncryptionKeyId, location_name: "kmsKeyId"))
433
+ EbsSnapshotConfiguration.struct_class = Types::EbsSnapshotConfiguration
434
+
435
+ EbsUserIdList.member = Shapes::ShapeRef.new(shape: EbsUserId)
436
+
437
+ EcrRepositoryConfiguration.add_member(:repository_policy, Shapes::ShapeRef.new(shape: EcrRepositoryPolicy, location_name: "repositoryPolicy"))
438
+ EcrRepositoryConfiguration.struct_class = Types::EcrRepositoryConfiguration
439
+
440
+ EfsFileSystemConfiguration.add_member(:file_system_policy, Shapes::ShapeRef.new(shape: EfsFileSystemPolicy, location_name: "fileSystemPolicy"))
441
+ EfsFileSystemConfiguration.struct_class = Types::EfsFileSystemConfiguration
442
+
390
443
  FilterCriteriaMap.key = Shapes::ShapeRef.new(shape: String)
391
444
  FilterCriteriaMap.value = Shapes::ShapeRef.new(shape: Criterion)
392
445
 
@@ -631,7 +684,7 @@ module Aws::AccessAnalyzer
631
684
  NetworkOriginConfiguration.add_member_subclass(:unknown, Types::NetworkOriginConfiguration::Unknown)
632
685
  NetworkOriginConfiguration.struct_class = Types::NetworkOriginConfiguration
633
686
 
634
- PathElement.add_member(:index, Shapes::ShapeRef.new(shape: Integer, location_name: "index"))
687
+ PathElement.add_member(:index, Shapes::ShapeRef.new(shape: Integer, location_name: "index", metadata: {"box"=>true}))
635
688
  PathElement.add_member(:key, Shapes::ShapeRef.new(shape: String, location_name: "key"))
636
689
  PathElement.add_member(:substring, Shapes::ShapeRef.new(shape: Substring, location_name: "substring"))
637
690
  PathElement.add_member(:value, Shapes::ShapeRef.new(shape: String, location_name: "value"))
@@ -665,6 +718,36 @@ module Aws::AccessAnalyzer
665
718
  PrincipalMap.key = Shapes::ShapeRef.new(shape: String)
666
719
  PrincipalMap.value = Shapes::ShapeRef.new(shape: String)
667
720
 
721
+ RdsDbClusterSnapshotAccountIdsList.member = Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotAccountId)
722
+
723
+ RdsDbClusterSnapshotAttributeValue.add_member(:account_ids, Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotAccountIdsList, location_name: "accountIds"))
724
+ RdsDbClusterSnapshotAttributeValue.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown'))
725
+ RdsDbClusterSnapshotAttributeValue.add_member_subclass(:account_ids, Types::RdsDbClusterSnapshotAttributeValue::AccountIds)
726
+ RdsDbClusterSnapshotAttributeValue.add_member_subclass(:unknown, Types::RdsDbClusterSnapshotAttributeValue::Unknown)
727
+ RdsDbClusterSnapshotAttributeValue.struct_class = Types::RdsDbClusterSnapshotAttributeValue
728
+
729
+ RdsDbClusterSnapshotAttributesMap.key = Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotAttributeName)
730
+ RdsDbClusterSnapshotAttributesMap.value = Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotAttributeValue)
731
+
732
+ RdsDbClusterSnapshotConfiguration.add_member(:attributes, Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotAttributesMap, location_name: "attributes"))
733
+ RdsDbClusterSnapshotConfiguration.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: RdsDbClusterSnapshotKmsKeyId, location_name: "kmsKeyId"))
734
+ RdsDbClusterSnapshotConfiguration.struct_class = Types::RdsDbClusterSnapshotConfiguration
735
+
736
+ RdsDbSnapshotAccountIdsList.member = Shapes::ShapeRef.new(shape: RdsDbSnapshotAccountId)
737
+
738
+ RdsDbSnapshotAttributeValue.add_member(:account_ids, Shapes::ShapeRef.new(shape: RdsDbSnapshotAccountIdsList, location_name: "accountIds"))
739
+ RdsDbSnapshotAttributeValue.add_member(:unknown, Shapes::ShapeRef.new(shape: nil, location_name: 'unknown'))
740
+ RdsDbSnapshotAttributeValue.add_member_subclass(:account_ids, Types::RdsDbSnapshotAttributeValue::AccountIds)
741
+ RdsDbSnapshotAttributeValue.add_member_subclass(:unknown, Types::RdsDbSnapshotAttributeValue::Unknown)
742
+ RdsDbSnapshotAttributeValue.struct_class = Types::RdsDbSnapshotAttributeValue
743
+
744
+ RdsDbSnapshotAttributesMap.key = Shapes::ShapeRef.new(shape: RdsDbSnapshotAttributeName)
745
+ RdsDbSnapshotAttributesMap.value = Shapes::ShapeRef.new(shape: RdsDbSnapshotAttributeValue)
746
+
747
+ RdsDbSnapshotConfiguration.add_member(:attributes, Shapes::ShapeRef.new(shape: RdsDbSnapshotAttributesMap, location_name: "attributes"))
748
+ RdsDbSnapshotConfiguration.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: RdsDbSnapshotKmsKeyId, location_name: "kmsKeyId"))
749
+ RdsDbSnapshotConfiguration.struct_class = Types::RdsDbSnapshotConfiguration
750
+
668
751
  RegionList.member = Shapes::ShapeRef.new(shape: String)
669
752
 
670
753
  ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "message"))
@@ -707,6 +790,9 @@ module Aws::AccessAnalyzer
707
790
 
708
791
  SharedViaList.member = Shapes::ShapeRef.new(shape: String)
709
792
 
793
+ SnsTopicConfiguration.add_member(:topic_policy, Shapes::ShapeRef.new(shape: SnsTopicPolicy, location_name: "topicPolicy"))
794
+ SnsTopicConfiguration.struct_class = Types::SnsTopicConfiguration
795
+
710
796
  SortCriteria.add_member(:attribute_name, Shapes::ShapeRef.new(shape: String, location_name: "attributeName"))
711
797
  SortCriteria.add_member(:order_by, Shapes::ShapeRef.new(shape: OrderBy, location_name: "orderBy"))
712
798
  SortCriteria.struct_class = Types::SortCriteria
@@ -728,6 +814,7 @@ module Aws::AccessAnalyzer
728
814
 
729
815
  StartResourceScanRequest.add_member(:analyzer_arn, Shapes::ShapeRef.new(shape: AnalyzerArn, required: true, location_name: "analyzerArn"))
730
816
  StartResourceScanRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: ResourceArn, required: true, location_name: "resourceArn"))
817
+ StartResourceScanRequest.add_member(:resource_owner_account, Shapes::ShapeRef.new(shape: String, location_name: "resourceOwnerAccount"))
731
818
  StartResourceScanRequest.struct_class = Types::StartResourceScanRequest
732
819
 
733
820
  StatusReason.add_member(:code, Shapes::ShapeRef.new(shape: ReasonCode, required: true, location_name: "code"))
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::AccessAnalyzer
11
+ # Endpoint parameters used to influence endpoints per request.
12
+ #
13
+ # @!attribute region
14
+ # The AWS region used to dispatch the request.
15
+ #
16
+ # @return [String]
17
+ #
18
+ # @!attribute use_dual_stack
19
+ # When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
20
+ #
21
+ # @return [Boolean]
22
+ #
23
+ # @!attribute use_fips
24
+ # When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
25
+ #
26
+ # @return [Boolean]
27
+ #
28
+ # @!attribute endpoint
29
+ # Override the endpoint used to send this request
30
+ #
31
+ # @return [String]
32
+ #
33
+ EndpointParameters = Struct.new(
34
+ :region,
35
+ :use_dual_stack,
36
+ :use_fips,
37
+ :endpoint,
38
+ ) do
39
+ include Aws::Structure
40
+
41
+ # @api private
42
+ class << self
43
+ PARAM_MAP = {
44
+ 'Region' => :region,
45
+ 'UseDualStack' => :use_dual_stack,
46
+ 'UseFIPS' => :use_fips,
47
+ 'Endpoint' => :endpoint,
48
+ }.freeze
49
+ end
50
+
51
+ def initialize(options = {})
52
+ self[:region] = options[:region]
53
+ self[:use_dual_stack] = options[:use_dual_stack]
54
+ self[:use_dual_stack] = false if self[:use_dual_stack].nil?
55
+ if self[:use_dual_stack].nil?
56
+ raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack"
57
+ end
58
+ self[:use_fips] = options[:use_fips]
59
+ self[:use_fips] = false if self[:use_fips].nil?
60
+ if self[:use_fips].nil?
61
+ raise ArgumentError, "Missing required EndpointParameter: :use_fips"
62
+ end
63
+ self[:endpoint] = options[:endpoint]
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::AccessAnalyzer
11
+ class EndpointProvider
12
+ def initialize(rule_set = nil)
13
+ @@rule_set ||= begin
14
+ endpoint_rules = Aws::Json.load(Base64.decode64(RULES))
15
+ Aws::Endpoints::RuleSet.new(
16
+ version: endpoint_rules['version'],
17
+ service_id: endpoint_rules['serviceId'],
18
+ parameters: endpoint_rules['parameters'],
19
+ rules: endpoint_rules['rules']
20
+ )
21
+ end
22
+ @provider = Aws::Endpoints::RulesProvider.new(rule_set || @@rule_set)
23
+ end
24
+
25
+ def resolve_endpoint(parameters)
26
+ @provider.resolve_endpoint(parameters)
27
+ end
28
+
29
+ # @api private
30
+ RULES = <<-JSON
31
+ eyJ2ZXJzaW9uIjoiMS4wIiwicGFyYW1ldGVycyI6eyJSZWdpb24iOnsiYnVp
32
+ bHRJbiI6IkFXUzo6UmVnaW9uIiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1bWVu
33
+ dGF0aW9uIjoiVGhlIEFXUyByZWdpb24gdXNlZCB0byBkaXNwYXRjaCB0aGUg
34
+ cmVxdWVzdC4iLCJ0eXBlIjoiU3RyaW5nIn0sIlVzZUR1YWxTdGFjayI6eyJi
35
+ dWlsdEluIjoiQVdTOjpVc2VEdWFsU3RhY2siLCJyZXF1aXJlZCI6dHJ1ZSwi
36
+ ZGVmYXVsdCI6ZmFsc2UsImRvY3VtZW50YXRpb24iOiJXaGVuIHRydWUsIHVz
37
+ ZSB0aGUgZHVhbC1zdGFjayBlbmRwb2ludC4gSWYgdGhlIGNvbmZpZ3VyZWQg
38
+ ZW5kcG9pbnQgZG9lcyBub3Qgc3VwcG9ydCBkdWFsLXN0YWNrLCBkaXNwYXRj
39
+ aGluZyB0aGUgcmVxdWVzdCBNQVkgcmV0dXJuIGFuIGVycm9yLiIsInR5cGUi
40
+ OiJCb29sZWFuIn0sIlVzZUZJUFMiOnsiYnVpbHRJbiI6IkFXUzo6VXNlRklQ
41
+ UyIsInJlcXVpcmVkIjp0cnVlLCJkZWZhdWx0IjpmYWxzZSwiZG9jdW1lbnRh
42
+ dGlvbiI6IldoZW4gdHJ1ZSwgc2VuZCB0aGlzIHJlcXVlc3QgdG8gdGhlIEZJ
43
+ UFMtY29tcGxpYW50IHJlZ2lvbmFsIGVuZHBvaW50LiBJZiB0aGUgY29uZmln
44
+ dXJlZCBlbmRwb2ludCBkb2VzIG5vdCBoYXZlIGEgRklQUyBjb21wbGlhbnQg
45
+ ZW5kcG9pbnQsIGRpc3BhdGNoaW5nIHRoZSByZXF1ZXN0IHdpbGwgcmV0dXJu
46
+ IGFuIGVycm9yLiIsInR5cGUiOiJCb29sZWFuIn0sIkVuZHBvaW50Ijp7ImJ1
47
+ aWx0SW4iOiJTREs6OkVuZHBvaW50IiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1
48
+ bWVudGF0aW9uIjoiT3ZlcnJpZGUgdGhlIGVuZHBvaW50IHVzZWQgdG8gc2Vu
49
+ ZCB0aGlzIHJlcXVlc3QiLCJ0eXBlIjoiU3RyaW5nIn19LCJydWxlcyI6W3si
50
+ Y29uZGl0aW9ucyI6W3siZm4iOiJhd3MucGFydGl0aW9uIiwiYXJndiI6W3si
51
+ cmVmIjoiUmVnaW9uIn1dLCJhc3NpZ24iOiJQYXJ0aXRpb25SZXN1bHQifV0s
52
+ InR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoi
53
+ aXNTZXQiLCJhcmd2IjpbeyJyZWYiOiJFbmRwb2ludCJ9XX0seyJmbiI6InBh
54
+ cnNlVVJMIiwiYXJndiI6W3sicmVmIjoiRW5kcG9pbnQifV0sImFzc2lnbiI6
55
+ InVybCJ9XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6
56
+ W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQ
57
+ UyJ9LHRydWVdfV0sImVycm9yIjoiSW52YWxpZCBDb25maWd1cmF0aW9uOiBG
58
+ SVBTIGFuZCBjdXN0b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0
59
+ eXBlIjoiZXJyb3IifSx7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIs
60
+ InJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMi
61
+ LCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1dLCJlcnJv
62
+ ciI6IkludmFsaWQgQ29uZmlndXJhdGlvbjogRHVhbHN0YWNrIGFuZCBjdXN0
63
+ b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0eXBlIjoiZXJyb3Ii
64
+ fSx7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOnsicmVmIjoi
65
+ RW5kcG9pbnQifSwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlw
66
+ ZSI6ImVuZHBvaW50In1dfV19LHsiY29uZGl0aW9ucyI6W3siZm4iOiJib29s
67
+ ZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQUyJ9LHRydWVdfSx7
68
+ ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxT
69
+ dGFjayJ9LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRp
70
+ dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsi
71
+ Zm4iOiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0
72
+ In0sInN1cHBvcnRzRklQUyJdfV19LHsiZm4iOiJib29sZWFuRXF1YWxzIiwi
73
+ YXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQ
74
+ YXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNEdWFsU3RhY2siXX1dfV0sInR5
75
+ cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2lu
76
+ dCI6eyJ1cmwiOiJodHRwczovL2FjY2Vzcy1hbmFseXplci1maXBzLntSZWdp
77
+ b259LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInBy
78
+ b3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9
79
+ XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJGSVBTIGFuZCBEdWFsU3Rh
80
+ Y2sgYXJlIGVuYWJsZWQsIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBz
81
+ dXBwb3J0IG9uZSBvciBib3RoIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRp
82
+ dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6
83
+ IlVzZUZJUFMifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJj
84
+ b25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1
85
+ ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJl
86
+ c3VsdCJ9LCJzdXBwb3J0c0ZJUFMiXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVs
87
+ ZXMiOlt7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpb
88
+ eyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9h
89
+ Y2Nlc3MtYW5hbHl6ZXItZmlwcy57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0
90
+ I2Ruc1N1ZmZpeH0iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0
91
+ eXBlIjoiZW5kcG9pbnQifV19XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3Ii
92
+ OiJGSVBTIGlzIGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90
93
+ IHN1cHBvcnQgRklQUyIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25z
94
+ IjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VE
95
+ dWFsU3RhY2sifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJj
96
+ b25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1
97
+ ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJl
98
+ c3VsdCJ9LCJzdXBwb3J0c0R1YWxTdGFjayJdfV19XSwidHlwZSI6InRyZWUi
99
+ LCJydWxlcyI6W3siY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6
100
+ Imh0dHBzOi8vYWNjZXNzLWFuYWx5emVyLntSZWdpb259LntQYXJ0aXRpb25S
101
+ ZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJo
102
+ ZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25z
103
+ IjpbXSwiZXJyb3IiOiJEdWFsU3RhY2sgaXMgZW5hYmxlZCBidXQgdGhpcyBw
104
+ YXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBEdWFsU3RhY2siLCJ0eXBlIjoi
105
+ ZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6
106
+ Imh0dHBzOi8vYWNjZXNzLWFuYWx5emVyLntSZWdpb259LntQYXJ0aXRpb25S
107
+ ZXN1bHQjZG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7
108
+ fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1dfQ==
109
+
110
+ JSON
111
+ end
112
+ end