aws-sdk-securityhub 1.68.0 → 1.70.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca8c5abc31525f9fe81207edb4a75482595dfd4efa5c5a0beb6c38ea9df3dc2d
4
- data.tar.gz: ad8b8f6f791510ed8814ff31e5f98a664f109e9f6fd394c2ab7a96a1ded37c9c
3
+ metadata.gz: dc54859bd0fcd0ba0ac590359bf400c57d59421d1a88a73351b393ba4b08c930
4
+ data.tar.gz: 49fe23b8cf2973a26eba748790806d33592b1a05ada6c386379d4f85979ce1c5
5
5
  SHA512:
6
- metadata.gz: c42ec11c555feb6e70c4891a8218136ee5d7ddf86d82c273f4898176471aea076e613d8e900b679d8e654b2f39330ffea5e474638f7dee8bda1f608bdda5a0cb
7
- data.tar.gz: 6b96cd993507dfab36c5b951547988c68fd74d3509e7d711fd24a159357762a9de6626579a5bc70b04e1bc0398442ce4c4efde72d63caed229c6c14fc189c923
6
+ metadata.gz: 4fbd0e45a59347b374bec24a1990f2d812e19dfdedc492cba10cb516a075feeb39c371b0be33c7360ccbe93f6a7c0add7d86900f81e781cf080847f14f223ad6
7
+ data.tar.gz: 6362d5e5df1f75cba5ca8dd70281c611eda017b640c50c6345a2839494beb052072cda816f1dd440d8bde6acb8417a4c245b7e4e0ceec6aaa01bfe6506a698b7
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.70.0 (2022-10-25)
5
+ ------------------
6
+
7
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
8
+
9
+ 1.69.0 (2022-08-22)
10
+ ------------------
11
+
12
+ * Feature - Added new resource details objects to ASFF, including resources for AwsBackupBackupVault, AwsBackupBackupPlan and AwsBackupRecoveryPoint. Added FixAvailable, FixedInVersion and Remediation to Vulnerability.
13
+
4
14
  1.68.0 (2022-07-26)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.68.0
1
+ 1.70.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(:securityhub)
@@ -79,8 +79,9 @@ module Aws::SecurityHub
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::SecurityHub::Plugins::Endpoints)
84
85
 
85
86
  # @overload initialize(options)
86
87
  # @param [Hash] options
@@ -287,6 +288,19 @@ module Aws::SecurityHub
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::SecurityHub
300
314
  # When `true`, request parameters are validated before
301
315
  # sending the request.
302
316
  #
317
+ # @option options [Aws::SecurityHub::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::SecurityHub::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
  #
@@ -3630,6 +3647,88 @@ module Aws::SecurityHub
3630
3647
  # },
3631
3648
  # ],
3632
3649
  # },
3650
+ # aws_backup_backup_vault: {
3651
+ # backup_vault_arn: "NonEmptyString",
3652
+ # backup_vault_name: "NonEmptyString",
3653
+ # encryption_key_arn: "NonEmptyString",
3654
+ # notifications: {
3655
+ # backup_vault_events: ["NonEmptyString"],
3656
+ # sns_topic_arn: "NonEmptyString",
3657
+ # },
3658
+ # access_policy: "NonEmptyString",
3659
+ # },
3660
+ # aws_backup_backup_plan: {
3661
+ # backup_plan: {
3662
+ # backup_plan_name: "NonEmptyString",
3663
+ # advanced_backup_settings: [
3664
+ # {
3665
+ # backup_options: {
3666
+ # "NonEmptyString" => "NonEmptyString",
3667
+ # },
3668
+ # resource_type: "NonEmptyString",
3669
+ # },
3670
+ # ],
3671
+ # backup_plan_rule: [
3672
+ # {
3673
+ # target_backup_vault: "NonEmptyString",
3674
+ # start_window_minutes: 1,
3675
+ # schedule_expression: "NonEmptyString",
3676
+ # rule_name: "NonEmptyString",
3677
+ # rule_id: "NonEmptyString",
3678
+ # enable_continuous_backup: false,
3679
+ # completion_window_minutes: 1,
3680
+ # copy_actions: [
3681
+ # {
3682
+ # destination_backup_vault_arn: "NonEmptyString",
3683
+ # lifecycle: {
3684
+ # delete_after_days: 1,
3685
+ # move_to_cold_storage_after_days: 1,
3686
+ # },
3687
+ # },
3688
+ # ],
3689
+ # lifecycle: {
3690
+ # delete_after_days: 1,
3691
+ # move_to_cold_storage_after_days: 1,
3692
+ # },
3693
+ # },
3694
+ # ],
3695
+ # },
3696
+ # backup_plan_arn: "NonEmptyString",
3697
+ # backup_plan_id: "NonEmptyString",
3698
+ # version_id: "NonEmptyString",
3699
+ # },
3700
+ # aws_backup_recovery_point: {
3701
+ # backup_size_in_bytes: 1,
3702
+ # backup_vault_arn: "NonEmptyString",
3703
+ # backup_vault_name: "NonEmptyString",
3704
+ # calculated_lifecycle: {
3705
+ # delete_at: "NonEmptyString",
3706
+ # move_to_cold_storage_at: "NonEmptyString",
3707
+ # },
3708
+ # completion_date: "NonEmptyString",
3709
+ # created_by: {
3710
+ # backup_plan_arn: "NonEmptyString",
3711
+ # backup_plan_id: "NonEmptyString",
3712
+ # backup_plan_version: "NonEmptyString",
3713
+ # backup_rule_id: "NonEmptyString",
3714
+ # },
3715
+ # creation_date: "NonEmptyString",
3716
+ # encryption_key_arn: "NonEmptyString",
3717
+ # iam_role_arn: "NonEmptyString",
3718
+ # is_encrypted: false,
3719
+ # last_restore_time: "NonEmptyString",
3720
+ # lifecycle: {
3721
+ # delete_after_days: 1,
3722
+ # move_to_cold_storage_after_days: 1,
3723
+ # },
3724
+ # recovery_point_arn: "NonEmptyString",
3725
+ # resource_arn: "NonEmptyString",
3726
+ # resource_type: "NonEmptyString",
3727
+ # source_backup_vault_arn: "NonEmptyString",
3728
+ # status: "NonEmptyString",
3729
+ # status_message: "NonEmptyString",
3730
+ # storage_class: "NonEmptyString",
3731
+ # },
3633
3732
  # },
3634
3733
  # },
3635
3734
  # ],
@@ -3672,6 +3771,8 @@ module Aws::SecurityHub
3672
3771
  # architecture: "NonEmptyString",
3673
3772
  # package_manager: "NonEmptyString",
3674
3773
  # file_path: "NonEmptyString",
3774
+ # fixed_in_version: "NonEmptyString",
3775
+ # remediation: "NonEmptyString",
3675
3776
  # },
3676
3777
  # ],
3677
3778
  # cvss: [
@@ -3697,6 +3798,7 @@ module Aws::SecurityHub
3697
3798
  # vendor_updated_at: "NonEmptyString",
3698
3799
  # },
3699
3800
  # reference_urls: ["NonEmptyString"],
3801
+ # fix_available: "YES", # accepts YES, NO, PARTIAL
3700
3802
  # },
3701
3803
  # ],
3702
3804
  # patch_summary: {
@@ -8429,6 +8531,59 @@ module Aws::SecurityHub
8429
8531
  # resp.findings[0].resources[0].details.aws_ecs_task.containers[0].mount_points[0].source_volume #=> String
8430
8532
  # resp.findings[0].resources[0].details.aws_ecs_task.containers[0].mount_points[0].container_path #=> String
8431
8533
  # resp.findings[0].resources[0].details.aws_ecs_task.containers[0].privileged #=> Boolean
8534
+ # resp.findings[0].resources[0].details.aws_backup_backup_vault.backup_vault_arn #=> String
8535
+ # resp.findings[0].resources[0].details.aws_backup_backup_vault.backup_vault_name #=> String
8536
+ # resp.findings[0].resources[0].details.aws_backup_backup_vault.encryption_key_arn #=> String
8537
+ # resp.findings[0].resources[0].details.aws_backup_backup_vault.notifications.backup_vault_events #=> Array
8538
+ # resp.findings[0].resources[0].details.aws_backup_backup_vault.notifications.backup_vault_events[0] #=> String
8539
+ # resp.findings[0].resources[0].details.aws_backup_backup_vault.notifications.sns_topic_arn #=> String
8540
+ # resp.findings[0].resources[0].details.aws_backup_backup_vault.access_policy #=> String
8541
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_name #=> String
8542
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.advanced_backup_settings #=> Array
8543
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.advanced_backup_settings[0].backup_options #=> Hash
8544
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.advanced_backup_settings[0].backup_options["NonEmptyString"] #=> String
8545
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.advanced_backup_settings[0].resource_type #=> String
8546
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule #=> Array
8547
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule[0].target_backup_vault #=> String
8548
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule[0].start_window_minutes #=> Integer
8549
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule[0].schedule_expression #=> String
8550
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule[0].rule_name #=> String
8551
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule[0].rule_id #=> String
8552
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule[0].enable_continuous_backup #=> Boolean
8553
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule[0].completion_window_minutes #=> Integer
8554
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule[0].copy_actions #=> Array
8555
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule[0].copy_actions[0].destination_backup_vault_arn #=> String
8556
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule[0].copy_actions[0].lifecycle.delete_after_days #=> Integer
8557
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule[0].copy_actions[0].lifecycle.move_to_cold_storage_after_days #=> Integer
8558
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule[0].lifecycle.delete_after_days #=> Integer
8559
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan.backup_plan_rule[0].lifecycle.move_to_cold_storage_after_days #=> Integer
8560
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan_arn #=> String
8561
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.backup_plan_id #=> String
8562
+ # resp.findings[0].resources[0].details.aws_backup_backup_plan.version_id #=> String
8563
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.backup_size_in_bytes #=> Integer
8564
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.backup_vault_arn #=> String
8565
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.backup_vault_name #=> String
8566
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.calculated_lifecycle.delete_at #=> String
8567
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.calculated_lifecycle.move_to_cold_storage_at #=> String
8568
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.completion_date #=> String
8569
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.created_by.backup_plan_arn #=> String
8570
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.created_by.backup_plan_id #=> String
8571
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.created_by.backup_plan_version #=> String
8572
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.created_by.backup_rule_id #=> String
8573
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.creation_date #=> String
8574
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.encryption_key_arn #=> String
8575
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.iam_role_arn #=> String
8576
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.is_encrypted #=> Boolean
8577
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.last_restore_time #=> String
8578
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.lifecycle.delete_after_days #=> Integer
8579
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.lifecycle.move_to_cold_storage_after_days #=> Integer
8580
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.recovery_point_arn #=> String
8581
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.resource_arn #=> String
8582
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.resource_type #=> String
8583
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.source_backup_vault_arn #=> String
8584
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.status #=> String
8585
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.status_message #=> String
8586
+ # resp.findings[0].resources[0].details.aws_backup_recovery_point.storage_class #=> String
8432
8587
  # resp.findings[0].compliance.status #=> String, one of "PASSED", "WARNING", "FAILED", "NOT_AVAILABLE"
8433
8588
  # resp.findings[0].compliance.related_requirements #=> Array
8434
8589
  # resp.findings[0].compliance.related_requirements[0] #=> String
@@ -8455,6 +8610,8 @@ module Aws::SecurityHub
8455
8610
  # resp.findings[0].vulnerabilities[0].vulnerable_packages[0].architecture #=> String
8456
8611
  # resp.findings[0].vulnerabilities[0].vulnerable_packages[0].package_manager #=> String
8457
8612
  # resp.findings[0].vulnerabilities[0].vulnerable_packages[0].file_path #=> String
8613
+ # resp.findings[0].vulnerabilities[0].vulnerable_packages[0].fixed_in_version #=> String
8614
+ # resp.findings[0].vulnerabilities[0].vulnerable_packages[0].remediation #=> String
8458
8615
  # resp.findings[0].vulnerabilities[0].cvss #=> Array
8459
8616
  # resp.findings[0].vulnerabilities[0].cvss[0].version #=> String
8460
8617
  # resp.findings[0].vulnerabilities[0].cvss[0].base_score #=> Float
@@ -8472,6 +8629,7 @@ module Aws::SecurityHub
8472
8629
  # resp.findings[0].vulnerabilities[0].vendor.vendor_updated_at #=> String
8473
8630
  # resp.findings[0].vulnerabilities[0].reference_urls #=> Array
8474
8631
  # resp.findings[0].vulnerabilities[0].reference_urls[0] #=> String
8632
+ # resp.findings[0].vulnerabilities[0].fix_available #=> String, one of "YES", "NO", "PARTIAL"
8475
8633
  # resp.findings[0].patch_summary.id #=> String
8476
8634
  # resp.findings[0].patch_summary.installed_count #=> Integer
8477
8635
  # resp.findings[0].patch_summary.missing_count #=> Integer
@@ -10975,7 +11133,7 @@ module Aws::SecurityHub
10975
11133
  params: params,
10976
11134
  config: config)
10977
11135
  context[:gem_name] = 'aws-sdk-securityhub'
10978
- context[:gem_version] = '1.68.0'
11136
+ context[:gem_version] = '1.70.0'
10979
11137
  Seahorse::Client::Request.new(handlers, context)
10980
11138
  end
10981
11139
 
@@ -67,6 +67,21 @@ module Aws::SecurityHub
67
67
  AwsAutoScalingLaunchConfigurationDetails = Shapes::StructureShape.new(name: 'AwsAutoScalingLaunchConfigurationDetails')
68
68
  AwsAutoScalingLaunchConfigurationInstanceMonitoringDetails = Shapes::StructureShape.new(name: 'AwsAutoScalingLaunchConfigurationInstanceMonitoringDetails')
69
69
  AwsAutoScalingLaunchConfigurationMetadataOptions = Shapes::StructureShape.new(name: 'AwsAutoScalingLaunchConfigurationMetadataOptions')
70
+ AwsBackupBackupPlanAdvancedBackupSettingsDetails = Shapes::StructureShape.new(name: 'AwsBackupBackupPlanAdvancedBackupSettingsDetails')
71
+ AwsBackupBackupPlanAdvancedBackupSettingsList = Shapes::ListShape.new(name: 'AwsBackupBackupPlanAdvancedBackupSettingsList')
72
+ AwsBackupBackupPlanBackupPlanDetails = Shapes::StructureShape.new(name: 'AwsBackupBackupPlanBackupPlanDetails')
73
+ AwsBackupBackupPlanDetails = Shapes::StructureShape.new(name: 'AwsBackupBackupPlanDetails')
74
+ AwsBackupBackupPlanLifecycleDetails = Shapes::StructureShape.new(name: 'AwsBackupBackupPlanLifecycleDetails')
75
+ AwsBackupBackupPlanRuleCopyActionsDetails = Shapes::StructureShape.new(name: 'AwsBackupBackupPlanRuleCopyActionsDetails')
76
+ AwsBackupBackupPlanRuleCopyActionsList = Shapes::ListShape.new(name: 'AwsBackupBackupPlanRuleCopyActionsList')
77
+ AwsBackupBackupPlanRuleDetails = Shapes::StructureShape.new(name: 'AwsBackupBackupPlanRuleDetails')
78
+ AwsBackupBackupPlanRuleList = Shapes::ListShape.new(name: 'AwsBackupBackupPlanRuleList')
79
+ AwsBackupBackupVaultDetails = Shapes::StructureShape.new(name: 'AwsBackupBackupVaultDetails')
80
+ AwsBackupBackupVaultNotificationsDetails = Shapes::StructureShape.new(name: 'AwsBackupBackupVaultNotificationsDetails')
81
+ AwsBackupRecoveryPointCalculatedLifecycleDetails = Shapes::StructureShape.new(name: 'AwsBackupRecoveryPointCalculatedLifecycleDetails')
82
+ AwsBackupRecoveryPointCreatedByDetails = Shapes::StructureShape.new(name: 'AwsBackupRecoveryPointCreatedByDetails')
83
+ AwsBackupRecoveryPointDetails = Shapes::StructureShape.new(name: 'AwsBackupRecoveryPointDetails')
84
+ AwsBackupRecoveryPointLifecycleDetails = Shapes::StructureShape.new(name: 'AwsBackupRecoveryPointLifecycleDetails')
70
85
  AwsCertificateManagerCertificateDetails = Shapes::StructureShape.new(name: 'AwsCertificateManagerCertificateDetails')
71
86
  AwsCertificateManagerCertificateDomainValidationOption = Shapes::StructureShape.new(name: 'AwsCertificateManagerCertificateDomainValidationOption')
72
87
  AwsCertificateManagerCertificateDomainValidationOptions = Shapes::ListShape.new(name: 'AwsCertificateManagerCertificateDomainValidationOptions')
@@ -848,6 +863,7 @@ module Aws::SecurityHub
848
863
  VpcInfoIpv6CidrBlockSetList = Shapes::ListShape.new(name: 'VpcInfoIpv6CidrBlockSetList')
849
864
  VpcInfoPeeringOptionsDetails = Shapes::StructureShape.new(name: 'VpcInfoPeeringOptionsDetails')
850
865
  Vulnerability = Shapes::StructureShape.new(name: 'Vulnerability')
866
+ VulnerabilityFixAvailable = Shapes::StringShape.new(name: 'VulnerabilityFixAvailable')
851
867
  VulnerabilityList = Shapes::ListShape.new(name: 'VulnerabilityList')
852
868
  VulnerabilityVendor = Shapes::StructureShape.new(name: 'VulnerabilityVendor')
853
869
  WafAction = Shapes::StructureShape.new(name: 'WafAction')
@@ -1133,6 +1149,92 @@ module Aws::SecurityHub
1133
1149
  AwsAutoScalingLaunchConfigurationMetadataOptions.add_member(:http_tokens, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "HttpTokens"))
1134
1150
  AwsAutoScalingLaunchConfigurationMetadataOptions.struct_class = Types::AwsAutoScalingLaunchConfigurationMetadataOptions
1135
1151
 
1152
+ AwsBackupBackupPlanAdvancedBackupSettingsDetails.add_member(:backup_options, Shapes::ShapeRef.new(shape: FieldMap, location_name: "BackupOptions"))
1153
+ AwsBackupBackupPlanAdvancedBackupSettingsDetails.add_member(:resource_type, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ResourceType"))
1154
+ AwsBackupBackupPlanAdvancedBackupSettingsDetails.struct_class = Types::AwsBackupBackupPlanAdvancedBackupSettingsDetails
1155
+
1156
+ AwsBackupBackupPlanAdvancedBackupSettingsList.member = Shapes::ShapeRef.new(shape: AwsBackupBackupPlanAdvancedBackupSettingsDetails)
1157
+
1158
+ AwsBackupBackupPlanBackupPlanDetails.add_member(:backup_plan_name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "BackupPlanName"))
1159
+ AwsBackupBackupPlanBackupPlanDetails.add_member(:advanced_backup_settings, Shapes::ShapeRef.new(shape: AwsBackupBackupPlanAdvancedBackupSettingsList, location_name: "AdvancedBackupSettings"))
1160
+ AwsBackupBackupPlanBackupPlanDetails.add_member(:backup_plan_rule, Shapes::ShapeRef.new(shape: AwsBackupBackupPlanRuleList, location_name: "BackupPlanRule"))
1161
+ AwsBackupBackupPlanBackupPlanDetails.struct_class = Types::AwsBackupBackupPlanBackupPlanDetails
1162
+
1163
+ AwsBackupBackupPlanDetails.add_member(:backup_plan, Shapes::ShapeRef.new(shape: AwsBackupBackupPlanBackupPlanDetails, location_name: "BackupPlan"))
1164
+ AwsBackupBackupPlanDetails.add_member(:backup_plan_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "BackupPlanArn"))
1165
+ AwsBackupBackupPlanDetails.add_member(:backup_plan_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "BackupPlanId"))
1166
+ AwsBackupBackupPlanDetails.add_member(:version_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "VersionId"))
1167
+ AwsBackupBackupPlanDetails.struct_class = Types::AwsBackupBackupPlanDetails
1168
+
1169
+ AwsBackupBackupPlanLifecycleDetails.add_member(:delete_after_days, Shapes::ShapeRef.new(shape: Long, location_name: "DeleteAfterDays"))
1170
+ AwsBackupBackupPlanLifecycleDetails.add_member(:move_to_cold_storage_after_days, Shapes::ShapeRef.new(shape: Long, location_name: "MoveToColdStorageAfterDays"))
1171
+ AwsBackupBackupPlanLifecycleDetails.struct_class = Types::AwsBackupBackupPlanLifecycleDetails
1172
+
1173
+ AwsBackupBackupPlanRuleCopyActionsDetails.add_member(:destination_backup_vault_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "DestinationBackupVaultArn"))
1174
+ AwsBackupBackupPlanRuleCopyActionsDetails.add_member(:lifecycle, Shapes::ShapeRef.new(shape: AwsBackupBackupPlanLifecycleDetails, location_name: "Lifecycle"))
1175
+ AwsBackupBackupPlanRuleCopyActionsDetails.struct_class = Types::AwsBackupBackupPlanRuleCopyActionsDetails
1176
+
1177
+ AwsBackupBackupPlanRuleCopyActionsList.member = Shapes::ShapeRef.new(shape: AwsBackupBackupPlanRuleCopyActionsDetails)
1178
+
1179
+ AwsBackupBackupPlanRuleDetails.add_member(:target_backup_vault, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "TargetBackupVault"))
1180
+ AwsBackupBackupPlanRuleDetails.add_member(:start_window_minutes, Shapes::ShapeRef.new(shape: Long, location_name: "StartWindowMinutes"))
1181
+ AwsBackupBackupPlanRuleDetails.add_member(:schedule_expression, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ScheduleExpression"))
1182
+ AwsBackupBackupPlanRuleDetails.add_member(:rule_name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "RuleName"))
1183
+ AwsBackupBackupPlanRuleDetails.add_member(:rule_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "RuleId"))
1184
+ AwsBackupBackupPlanRuleDetails.add_member(:enable_continuous_backup, Shapes::ShapeRef.new(shape: Boolean, location_name: "EnableContinuousBackup"))
1185
+ AwsBackupBackupPlanRuleDetails.add_member(:completion_window_minutes, Shapes::ShapeRef.new(shape: Long, location_name: "CompletionWindowMinutes"))
1186
+ AwsBackupBackupPlanRuleDetails.add_member(:copy_actions, Shapes::ShapeRef.new(shape: AwsBackupBackupPlanRuleCopyActionsList, location_name: "CopyActions"))
1187
+ AwsBackupBackupPlanRuleDetails.add_member(:lifecycle, Shapes::ShapeRef.new(shape: AwsBackupBackupPlanLifecycleDetails, location_name: "Lifecycle"))
1188
+ AwsBackupBackupPlanRuleDetails.struct_class = Types::AwsBackupBackupPlanRuleDetails
1189
+
1190
+ AwsBackupBackupPlanRuleList.member = Shapes::ShapeRef.new(shape: AwsBackupBackupPlanRuleDetails)
1191
+
1192
+ AwsBackupBackupVaultDetails.add_member(:backup_vault_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "BackupVaultArn"))
1193
+ AwsBackupBackupVaultDetails.add_member(:backup_vault_name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "BackupVaultName"))
1194
+ AwsBackupBackupVaultDetails.add_member(:encryption_key_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "EncryptionKeyArn"))
1195
+ AwsBackupBackupVaultDetails.add_member(:notifications, Shapes::ShapeRef.new(shape: AwsBackupBackupVaultNotificationsDetails, location_name: "Notifications"))
1196
+ AwsBackupBackupVaultDetails.add_member(:access_policy, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "AccessPolicy"))
1197
+ AwsBackupBackupVaultDetails.struct_class = Types::AwsBackupBackupVaultDetails
1198
+
1199
+ AwsBackupBackupVaultNotificationsDetails.add_member(:backup_vault_events, Shapes::ShapeRef.new(shape: NonEmptyStringList, location_name: "BackupVaultEvents"))
1200
+ AwsBackupBackupVaultNotificationsDetails.add_member(:sns_topic_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "SnsTopicArn"))
1201
+ AwsBackupBackupVaultNotificationsDetails.struct_class = Types::AwsBackupBackupVaultNotificationsDetails
1202
+
1203
+ AwsBackupRecoveryPointCalculatedLifecycleDetails.add_member(:delete_at, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "DeleteAt"))
1204
+ AwsBackupRecoveryPointCalculatedLifecycleDetails.add_member(:move_to_cold_storage_at, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "MoveToColdStorageAt"))
1205
+ AwsBackupRecoveryPointCalculatedLifecycleDetails.struct_class = Types::AwsBackupRecoveryPointCalculatedLifecycleDetails
1206
+
1207
+ AwsBackupRecoveryPointCreatedByDetails.add_member(:backup_plan_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "BackupPlanArn"))
1208
+ AwsBackupRecoveryPointCreatedByDetails.add_member(:backup_plan_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "BackupPlanId"))
1209
+ AwsBackupRecoveryPointCreatedByDetails.add_member(:backup_plan_version, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "BackupPlanVersion"))
1210
+ AwsBackupRecoveryPointCreatedByDetails.add_member(:backup_rule_id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "BackupRuleId"))
1211
+ AwsBackupRecoveryPointCreatedByDetails.struct_class = Types::AwsBackupRecoveryPointCreatedByDetails
1212
+
1213
+ AwsBackupRecoveryPointDetails.add_member(:backup_size_in_bytes, Shapes::ShapeRef.new(shape: Long, location_name: "BackupSizeInBytes"))
1214
+ AwsBackupRecoveryPointDetails.add_member(:backup_vault_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "BackupVaultArn"))
1215
+ AwsBackupRecoveryPointDetails.add_member(:backup_vault_name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "BackupVaultName"))
1216
+ AwsBackupRecoveryPointDetails.add_member(:calculated_lifecycle, Shapes::ShapeRef.new(shape: AwsBackupRecoveryPointCalculatedLifecycleDetails, location_name: "CalculatedLifecycle"))
1217
+ AwsBackupRecoveryPointDetails.add_member(:completion_date, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "CompletionDate"))
1218
+ AwsBackupRecoveryPointDetails.add_member(:created_by, Shapes::ShapeRef.new(shape: AwsBackupRecoveryPointCreatedByDetails, location_name: "CreatedBy"))
1219
+ AwsBackupRecoveryPointDetails.add_member(:creation_date, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "CreationDate"))
1220
+ AwsBackupRecoveryPointDetails.add_member(:encryption_key_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "EncryptionKeyArn"))
1221
+ AwsBackupRecoveryPointDetails.add_member(:iam_role_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "IamRoleArn"))
1222
+ AwsBackupRecoveryPointDetails.add_member(:is_encrypted, Shapes::ShapeRef.new(shape: Boolean, location_name: "IsEncrypted"))
1223
+ AwsBackupRecoveryPointDetails.add_member(:last_restore_time, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "LastRestoreTime"))
1224
+ AwsBackupRecoveryPointDetails.add_member(:lifecycle, Shapes::ShapeRef.new(shape: AwsBackupRecoveryPointLifecycleDetails, location_name: "Lifecycle"))
1225
+ AwsBackupRecoveryPointDetails.add_member(:recovery_point_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "RecoveryPointArn"))
1226
+ AwsBackupRecoveryPointDetails.add_member(:resource_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ResourceArn"))
1227
+ AwsBackupRecoveryPointDetails.add_member(:resource_type, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "ResourceType"))
1228
+ AwsBackupRecoveryPointDetails.add_member(:source_backup_vault_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "SourceBackupVaultArn"))
1229
+ AwsBackupRecoveryPointDetails.add_member(:status, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Status"))
1230
+ AwsBackupRecoveryPointDetails.add_member(:status_message, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "StatusMessage"))
1231
+ AwsBackupRecoveryPointDetails.add_member(:storage_class, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "StorageClass"))
1232
+ AwsBackupRecoveryPointDetails.struct_class = Types::AwsBackupRecoveryPointDetails
1233
+
1234
+ AwsBackupRecoveryPointLifecycleDetails.add_member(:delete_after_days, Shapes::ShapeRef.new(shape: Long, location_name: "DeleteAfterDays"))
1235
+ AwsBackupRecoveryPointLifecycleDetails.add_member(:move_to_cold_storage_after_days, Shapes::ShapeRef.new(shape: Long, location_name: "MoveToColdStorageAfterDays"))
1236
+ AwsBackupRecoveryPointLifecycleDetails.struct_class = Types::AwsBackupRecoveryPointLifecycleDetails
1237
+
1136
1238
  AwsCertificateManagerCertificateDetails.add_member(:certificate_authority_arn, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "CertificateAuthorityArn"))
1137
1239
  AwsCertificateManagerCertificateDetails.add_member(:created_at, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "CreatedAt"))
1138
1240
  AwsCertificateManagerCertificateDetails.add_member(:domain_name, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "DomainName"))
@@ -4577,6 +4679,9 @@ module Aws::SecurityHub
4577
4679
  ResourceDetails.add_member(:aws_waf_rule, Shapes::ShapeRef.new(shape: AwsWafRuleDetails, location_name: "AwsWafRule"))
4578
4680
  ResourceDetails.add_member(:aws_waf_rule_group, Shapes::ShapeRef.new(shape: AwsWafRuleGroupDetails, location_name: "AwsWafRuleGroup"))
4579
4681
  ResourceDetails.add_member(:aws_ecs_task, Shapes::ShapeRef.new(shape: AwsEcsTaskDetails, location_name: "AwsEcsTask"))
4682
+ ResourceDetails.add_member(:aws_backup_backup_vault, Shapes::ShapeRef.new(shape: AwsBackupBackupVaultDetails, location_name: "AwsBackupBackupVault"))
4683
+ ResourceDetails.add_member(:aws_backup_backup_plan, Shapes::ShapeRef.new(shape: AwsBackupBackupPlanDetails, location_name: "AwsBackupBackupPlan"))
4684
+ ResourceDetails.add_member(:aws_backup_recovery_point, Shapes::ShapeRef.new(shape: AwsBackupRecoveryPointDetails, location_name: "AwsBackupRecoveryPoint"))
4580
4685
  ResourceDetails.struct_class = Types::ResourceDetails
4581
4686
 
4582
4687
  ResourceList.member = Shapes::ShapeRef.new(shape: Resource)
@@ -4731,6 +4836,8 @@ module Aws::SecurityHub
4731
4836
  SoftwarePackage.add_member(:architecture, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Architecture"))
4732
4837
  SoftwarePackage.add_member(:package_manager, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "PackageManager"))
4733
4838
  SoftwarePackage.add_member(:file_path, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "FilePath"))
4839
+ SoftwarePackage.add_member(:fixed_in_version, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "FixedInVersion"))
4840
+ SoftwarePackage.add_member(:remediation, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Remediation"))
4734
4841
  SoftwarePackage.struct_class = Types::SoftwarePackage
4735
4842
 
4736
4843
  SoftwarePackageList.member = Shapes::ShapeRef.new(shape: SoftwarePackage)
@@ -4926,6 +5033,7 @@ module Aws::SecurityHub
4926
5033
  Vulnerability.add_member(:related_vulnerabilities, Shapes::ShapeRef.new(shape: StringList, location_name: "RelatedVulnerabilities"))
4927
5034
  Vulnerability.add_member(:vendor, Shapes::ShapeRef.new(shape: VulnerabilityVendor, location_name: "Vendor"))
4928
5035
  Vulnerability.add_member(:reference_urls, Shapes::ShapeRef.new(shape: StringList, location_name: "ReferenceUrls"))
5036
+ Vulnerability.add_member(:fix_available, Shapes::ShapeRef.new(shape: VulnerabilityFixAvailable, location_name: "FixAvailable"))
4929
5037
  Vulnerability.struct_class = Types::Vulnerability
4930
5038
 
4931
5039
  VulnerabilityList.member = Shapes::ShapeRef.new(shape: Vulnerability)
@@ -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::SecurityHub
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::SecurityHub
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
+ dCI6eyJ1cmwiOiJodHRwczovL3NlY3VyaXR5aHViLWZpcHMue1JlZ2lvbn0u
77
+ e1BhcnRpdGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZmaXh9IiwicHJvcGVy
78
+ dGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfSx7
79
+ ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkZJUFMgYW5kIER1YWxTdGFjayBh
80
+ cmUgZW5hYmxlZCwgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBv
81
+ cnQgb25lIG9yIGJvdGgiLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9u
82
+ cyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNl
83
+ RklQUyJ9LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRp
84
+ dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsi
85
+ Zm4iOiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0
86
+ In0sInN1cHBvcnRzRklQUyJdfV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6
87
+ W3siY29uZGl0aW9ucyI6W10sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNv
88
+ bmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL3NlY3Vy
89
+ aXR5aHViLWZpcHMue1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkbnNTdWZm
90
+ aXh9IiwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVu
91
+ ZHBvaW50In1dfV19LHsiY29uZGl0aW9ucyI6W10sImVycm9yIjoiRklQUyBp
92
+ cyBlbmFibGVkIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0
93
+ IEZJUFMiLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W3siZm4i
94
+ OiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRHVhbFN0YWNr
95
+ In0sdHJ1ZV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9u
96
+ cyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJmbiI6
97
+ ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQifSwi
98
+ c3VwcG9ydHNEdWFsU3RhY2siXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMi
99
+ Olt7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczov
100
+ L3NlY3VyaXR5aHViLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0
101
+ YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0s
102
+ InR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3Ii
103
+ OiJEdWFsU3RhY2sgaXMgZW5hYmxlZCBidXQgdGhpcyBwYXJ0aXRpb24gZG9l
104
+ cyBub3Qgc3VwcG9ydCBEdWFsU3RhY2siLCJ0eXBlIjoiZXJyb3IifV19LHsi
105
+ Y29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vc2Vj
106
+ dXJpdHlodWIue1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkbnNTdWZmaXh9
107
+ IiwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBv
108
+ aW50In1dfV19
109
+
110
+ JSON
111
+ end
112
+ end