aws-sdk-panorama 1.8.0 → 1.10.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: '08cdcf6d230b188ab968905f215628a2e694d107fad0e4145dc329e38dd242fb'
4
- data.tar.gz: 3c5a7b99d66a22dc3216dc536185cd56aa9679ec13debabd5ea94ee195b11bce
3
+ metadata.gz: c4ee82866fc57c6ad0188c97e936e61a9c0b04bff585a81d430389217bf787b6
4
+ data.tar.gz: 3f3272b098cd4ae041c761f9220b7278979baea694d001a1febdb11e57882776
5
5
  SHA512:
6
- metadata.gz: a9aca649c54ffdfea8e960bf7632c8445057e6d348143ceaff7a221a10228429949dd42e0e22ebd35a9a6f6d9739948ae78a5e7e3be82949961fcfae7c4fe3ad
7
- data.tar.gz: 5cb34ec87722d801bdf8f98f60645922ba9e4f5103859b1a322da49f233e0104e8c0189e22fb1aa98742b2381c377039887dd4cfe1351ddf6e97b8a81ca34b70
6
+ metadata.gz: d5bcfe5e160124061a417d8c000aaf3a3760d6cf49328d5046c29b9a4e02985317693bc6f90a9dddd29babefdd019901e3e8013447beb99134e443fc5ad94d3d
7
+ data.tar.gz: 27b505a125d3b7046d6d221ba4b57f0bf75403607a28b3512524c5342b33ac11276d7be98566412ead56283a8d015361d8f22a994de29ba98bfc99af3d34f67a
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.10.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.9.0 (2022-10-13)
10
+ ------------------
11
+
12
+ * Feature - Pause and resume camera stream processing with SignalApplicationInstanceNodeInstances. Reboot an appliance with CreateJobForDevices. More application state information in DescribeApplicationInstance response.
13
+
4
14
  1.8.0 (2022-08-25)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.8.0
1
+ 1.10.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(:panorama)
@@ -79,8 +79,9 @@ module Aws::Panorama
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::Panorama::Plugins::Endpoints)
84
85
 
85
86
  # @overload initialize(options)
86
87
  # @param [Hash] options
@@ -287,6 +288,19 @@ module Aws::Panorama
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::Panorama
300
314
  # When `true`, request parameters are validated before
301
315
  # sending the request.
302
316
  #
317
+ # @option options [Aws::Panorama::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::Panorama::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
  #
@@ -413,13 +430,14 @@ module Aws::Panorama
413
430
  req.send_request(options)
414
431
  end
415
432
 
416
- # Creates a job to run on one or more devices.
433
+ # Creates a job to run on one or more devices. A job can update a
434
+ # device's software or reboot it.
417
435
  #
418
436
  # @option params [required, Array<String>] :device_ids
419
437
  # IDs of target devices.
420
438
  #
421
- # @option params [required, Types::DeviceJobConfig] :device_job_config
422
- # Configuration settings for the job.
439
+ # @option params [Types::DeviceJobConfig] :device_job_config
440
+ # Configuration settings for a software update job.
423
441
  #
424
442
  # @option params [required, String] :job_type
425
443
  # The type of job to run.
@@ -432,12 +450,12 @@ module Aws::Panorama
432
450
  #
433
451
  # resp = client.create_job_for_devices({
434
452
  # device_ids: ["DeviceId"], # required
435
- # device_job_config: { # required
453
+ # device_job_config: {
436
454
  # ota_job_config: {
437
455
  # image_version: "ImageVersion", # required
438
456
  # },
439
457
  # },
440
- # job_type: "OTA", # required, accepts OTA
458
+ # job_type: "OTA", # required, accepts OTA, REBOOT
441
459
  # })
442
460
  #
443
461
  # @example Response structure
@@ -738,6 +756,7 @@ module Aws::Panorama
738
756
  # * {Types::DescribeApplicationInstanceResponse#health_status #health_status} => String
739
757
  # * {Types::DescribeApplicationInstanceResponse#last_updated_time #last_updated_time} => Time
740
758
  # * {Types::DescribeApplicationInstanceResponse#name #name} => String
759
+ # * {Types::DescribeApplicationInstanceResponse#runtime_context_states #runtime_context_states} => Array&lt;Types::ReportedRuntimeContextState&gt;
741
760
  # * {Types::DescribeApplicationInstanceResponse#runtime_role_arn #runtime_role_arn} => String
742
761
  # * {Types::DescribeApplicationInstanceResponse#status #status} => String
743
762
  # * {Types::DescribeApplicationInstanceResponse#status_description #status_description} => String
@@ -761,6 +780,11 @@ module Aws::Panorama
761
780
  # resp.health_status #=> String, one of "RUNNING", "ERROR", "NOT_AVAILABLE"
762
781
  # resp.last_updated_time #=> Time
763
782
  # resp.name #=> String
783
+ # resp.runtime_context_states #=> Array
784
+ # resp.runtime_context_states[0].desired_state #=> String, one of "RUNNING", "STOPPED", "REMOVED"
785
+ # resp.runtime_context_states[0].device_reported_status #=> String, one of "STOPPING", "STOPPED", "STOP_ERROR", "REMOVAL_FAILED", "REMOVAL_IN_PROGRESS", "STARTING", "RUNNING", "INSTALL_ERROR", "LAUNCHED", "LAUNCH_ERROR", "INSTALL_IN_PROGRESS"
786
+ # resp.runtime_context_states[0].device_reported_time #=> Time
787
+ # resp.runtime_context_states[0].runtime_context_name #=> String
764
788
  # resp.runtime_role_arn #=> String
765
789
  # resp.status #=> String, one of "DEPLOYMENT_PENDING", "DEPLOYMENT_REQUESTED", "DEPLOYMENT_IN_PROGRESS", "DEPLOYMENT_ERROR", "DEPLOYMENT_SUCCEEDED", "REMOVAL_PENDING", "REMOVAL_REQUESTED", "REMOVAL_IN_PROGRESS", "REMOVAL_FAILED", "REMOVAL_SUCCEEDED", "DEPLOYMENT_FAILED"
766
790
  # resp.status_description #=> String
@@ -872,11 +896,12 @@ module Aws::Panorama
872
896
  # resp.current_networking_status.ntp_status.ntp_server_name #=> String
873
897
  # resp.current_software #=> String
874
898
  # resp.description #=> String
875
- # resp.device_aggregated_status #=> String, one of "ERROR", "AWAITING_PROVISIONING", "PENDING", "FAILED", "DELETING", "ONLINE", "OFFLINE", "LEASE_EXPIRED", "UPDATE_NEEDED"
899
+ # resp.device_aggregated_status #=> String, one of "ERROR", "AWAITING_PROVISIONING", "PENDING", "FAILED", "DELETING", "ONLINE", "OFFLINE", "LEASE_EXPIRED", "UPDATE_NEEDED", "REBOOTING"
876
900
  # resp.device_connection_status #=> String, one of "ONLINE", "OFFLINE", "AWAITING_CREDENTIALS", "NOT_AVAILABLE", "ERROR"
877
901
  # resp.device_id #=> String
878
902
  # resp.latest_alternate_software #=> String
879
903
  # resp.latest_device_job.image_version #=> String
904
+ # resp.latest_device_job.job_type #=> String, one of "OTA", "REBOOT"
880
905
  # resp.latest_device_job.status #=> String, one of "PENDING", "IN_PROGRESS", "VERIFYING", "REBOOTING", "DOWNLOADING", "COMPLETED", "FAILED"
881
906
  # resp.latest_software #=> String
882
907
  # resp.lease_expiration_time #=> Time
@@ -924,6 +949,7 @@ module Aws::Panorama
924
949
  # * {Types::DescribeDeviceJobResponse#device_type #device_type} => String
925
950
  # * {Types::DescribeDeviceJobResponse#image_version #image_version} => String
926
951
  # * {Types::DescribeDeviceJobResponse#job_id #job_id} => String
952
+ # * {Types::DescribeDeviceJobResponse#job_type #job_type} => String
927
953
  # * {Types::DescribeDeviceJobResponse#status #status} => String
928
954
  #
929
955
  # @example Request syntax with placeholder values
@@ -941,6 +967,7 @@ module Aws::Panorama
941
967
  # resp.device_type #=> String, one of "PANORAMA_APPLIANCE_DEVELOPER_KIT", "PANORAMA_APPLIANCE"
942
968
  # resp.image_version #=> String
943
969
  # resp.job_id #=> String
970
+ # resp.job_type #=> String, one of "OTA", "REBOOT"
944
971
  # resp.status #=> String, one of "PENDING", "IN_PROGRESS", "VERIFYING", "REBOOTING", "DOWNLOADING", "COMPLETED", "FAILED"
945
972
  #
946
973
  # @see http://docs.aws.amazon.com/goto/WebAPI/panorama-2019-07-24/DescribeDeviceJob AWS API Documentation
@@ -1315,7 +1342,7 @@ module Aws::Panorama
1315
1342
  #
1316
1343
  # resp.next_token #=> String
1317
1344
  # resp.node_instances #=> Array
1318
- # resp.node_instances[0].current_status #=> String, one of "RUNNING", "ERROR", "NOT_AVAILABLE"
1345
+ # resp.node_instances[0].current_status #=> String, one of "RUNNING", "ERROR", "NOT_AVAILABLE", "PAUSED"
1319
1346
  # resp.node_instances[0].node_id #=> String
1320
1347
  # resp.node_instances[0].node_instance_id #=> String
1321
1348
  # resp.node_instances[0].node_name #=> String
@@ -1375,6 +1402,11 @@ module Aws::Panorama
1375
1402
  # resp.application_instances[0].description #=> String
1376
1403
  # resp.application_instances[0].health_status #=> String, one of "RUNNING", "ERROR", "NOT_AVAILABLE"
1377
1404
  # resp.application_instances[0].name #=> String
1405
+ # resp.application_instances[0].runtime_context_states #=> Array
1406
+ # resp.application_instances[0].runtime_context_states[0].desired_state #=> String, one of "RUNNING", "STOPPED", "REMOVED"
1407
+ # resp.application_instances[0].runtime_context_states[0].device_reported_status #=> String, one of "STOPPING", "STOPPED", "STOP_ERROR", "REMOVAL_FAILED", "REMOVAL_IN_PROGRESS", "STARTING", "RUNNING", "INSTALL_ERROR", "LAUNCHED", "LAUNCH_ERROR", "INSTALL_IN_PROGRESS"
1408
+ # resp.application_instances[0].runtime_context_states[0].device_reported_time #=> Time
1409
+ # resp.application_instances[0].runtime_context_states[0].runtime_context_name #=> String
1378
1410
  # resp.application_instances[0].status #=> String, one of "DEPLOYMENT_PENDING", "DEPLOYMENT_REQUESTED", "DEPLOYMENT_IN_PROGRESS", "DEPLOYMENT_ERROR", "DEPLOYMENT_SUCCEEDED", "REMOVAL_PENDING", "REMOVAL_REQUESTED", "REMOVAL_IN_PROGRESS", "REMOVAL_FAILED", "REMOVAL_SUCCEEDED", "DEPLOYMENT_FAILED"
1379
1411
  # resp.application_instances[0].status_description #=> String
1380
1412
  # resp.application_instances[0].tags #=> Hash
@@ -1423,7 +1455,7 @@ module Aws::Panorama
1423
1455
  # @example Request syntax with placeholder values
1424
1456
  #
1425
1457
  # resp = client.list_devices({
1426
- # device_aggregated_status_filter: "ERROR", # accepts ERROR, AWAITING_PROVISIONING, PENDING, FAILED, DELETING, ONLINE, OFFLINE, LEASE_EXPIRED, UPDATE_NEEDED
1458
+ # device_aggregated_status_filter: "ERROR", # accepts ERROR, AWAITING_PROVISIONING, PENDING, FAILED, DELETING, ONLINE, OFFLINE, LEASE_EXPIRED, UPDATE_NEEDED, REBOOTING
1427
1459
  # max_results: 1,
1428
1460
  # name_filter: "NameFilter",
1429
1461
  # next_token: "NextToken",
@@ -1438,10 +1470,11 @@ module Aws::Panorama
1438
1470
  # resp.devices[0].created_time #=> Time
1439
1471
  # resp.devices[0].current_software #=> String
1440
1472
  # resp.devices[0].description #=> String
1441
- # resp.devices[0].device_aggregated_status #=> String, one of "ERROR", "AWAITING_PROVISIONING", "PENDING", "FAILED", "DELETING", "ONLINE", "OFFLINE", "LEASE_EXPIRED", "UPDATE_NEEDED"
1473
+ # resp.devices[0].device_aggregated_status #=> String, one of "ERROR", "AWAITING_PROVISIONING", "PENDING", "FAILED", "DELETING", "ONLINE", "OFFLINE", "LEASE_EXPIRED", "UPDATE_NEEDED", "REBOOTING"
1442
1474
  # resp.devices[0].device_id #=> String
1443
1475
  # resp.devices[0].last_updated_time #=> Time
1444
1476
  # resp.devices[0].latest_device_job.image_version #=> String
1477
+ # resp.devices[0].latest_device_job.job_type #=> String, one of "OTA", "REBOOT"
1445
1478
  # resp.devices[0].latest_device_job.status #=> String, one of "PENDING", "IN_PROGRESS", "VERIFYING", "REBOOTING", "DOWNLOADING", "COMPLETED", "FAILED"
1446
1479
  # resp.devices[0].lease_expiration_time #=> Time
1447
1480
  # resp.devices[0].name #=> String
@@ -1494,6 +1527,7 @@ module Aws::Panorama
1494
1527
  # resp.device_jobs[0].device_id #=> String
1495
1528
  # resp.device_jobs[0].device_name #=> String
1496
1529
  # resp.device_jobs[0].job_id #=> String
1530
+ # resp.device_jobs[0].job_type #=> String, one of "OTA", "REBOOT"
1497
1531
  # resp.next_token #=> String
1498
1532
  #
1499
1533
  # @see http://docs.aws.amazon.com/goto/WebAPI/panorama-2019-07-24/ListDevicesJobs AWS API Documentation
@@ -1870,6 +1904,43 @@ module Aws::Panorama
1870
1904
  req.send_request(options)
1871
1905
  end
1872
1906
 
1907
+ # Signal camera nodes to stop or resume.
1908
+ #
1909
+ # @option params [required, String] :application_instance_id
1910
+ # An application instance ID.
1911
+ #
1912
+ # @option params [required, Array<Types::NodeSignal>] :node_signals
1913
+ # A list of signals.
1914
+ #
1915
+ # @return [Types::SignalApplicationInstanceNodeInstancesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1916
+ #
1917
+ # * {Types::SignalApplicationInstanceNodeInstancesResponse#application_instance_id #application_instance_id} => String
1918
+ #
1919
+ # @example Request syntax with placeholder values
1920
+ #
1921
+ # resp = client.signal_application_instance_node_instances({
1922
+ # application_instance_id: "ApplicationInstanceId", # required
1923
+ # node_signals: [ # required
1924
+ # {
1925
+ # node_instance_id: "NodeInstanceId", # required
1926
+ # signal: "PAUSE", # required, accepts PAUSE, RESUME
1927
+ # },
1928
+ # ],
1929
+ # })
1930
+ #
1931
+ # @example Response structure
1932
+ #
1933
+ # resp.application_instance_id #=> String
1934
+ #
1935
+ # @see http://docs.aws.amazon.com/goto/WebAPI/panorama-2019-07-24/SignalApplicationInstanceNodeInstances AWS API Documentation
1936
+ #
1937
+ # @overload signal_application_instance_node_instances(params = {})
1938
+ # @param [Hash] params ({})
1939
+ def signal_application_instance_node_instances(params = {}, options = {})
1940
+ req = build_request(:signal_application_instance_node_instances, params)
1941
+ req.send_request(options)
1942
+ end
1943
+
1873
1944
  # Tags a resource.
1874
1945
  #
1875
1946
  # @option params [required, String] :resource_arn
@@ -1969,7 +2040,7 @@ module Aws::Panorama
1969
2040
  params: params,
1970
2041
  config: config)
1971
2042
  context[:gem_name] = 'aws-sdk-panorama'
1972
- context[:gem_version] = '1.8.0'
2043
+ context[:gem_version] = '1.10.0'
1973
2044
  Seahorse::Client::Request.new(handlers, context)
1974
2045
  end
1975
2046
 
@@ -72,6 +72,7 @@ module Aws::Panorama
72
72
  DescribePackageVersionRequest = Shapes::StructureShape.new(name: 'DescribePackageVersionRequest')
73
73
  DescribePackageVersionResponse = Shapes::StructureShape.new(name: 'DescribePackageVersionResponse')
74
74
  Description = Shapes::StringShape.new(name: 'Description')
75
+ DesiredState = Shapes::StringShape.new(name: 'DesiredState')
75
76
  Device = Shapes::StructureShape.new(name: 'Device')
76
77
  DeviceAggregatedStatus = Shapes::StringShape.new(name: 'DeviceAggregatedStatus')
77
78
  DeviceArn = Shapes::StringShape.new(name: 'DeviceArn')
@@ -84,6 +85,7 @@ module Aws::Panorama
84
85
  DeviceJobList = Shapes::ListShape.new(name: 'DeviceJobList')
85
86
  DeviceList = Shapes::ListShape.new(name: 'DeviceList')
86
87
  DeviceName = Shapes::StringShape.new(name: 'DeviceName')
88
+ DeviceReportedStatus = Shapes::StringShape.new(name: 'DeviceReportedStatus')
87
89
  DeviceSerialNumber = Shapes::StringShape.new(name: 'DeviceSerialNumber')
88
90
  DeviceStatus = Shapes::StringShape.new(name: 'DeviceStatus')
89
91
  DeviceType = Shapes::StringShape.new(name: 'DeviceType')
@@ -165,6 +167,9 @@ module Aws::Panorama
165
167
  NodePackageName = Shapes::StringShape.new(name: 'NodePackageName')
166
168
  NodePackagePatchVersion = Shapes::StringShape.new(name: 'NodePackagePatchVersion')
167
169
  NodePackageVersion = Shapes::StringShape.new(name: 'NodePackageVersion')
170
+ NodeSignal = Shapes::StructureShape.new(name: 'NodeSignal')
171
+ NodeSignalList = Shapes::ListShape.new(name: 'NodeSignalList')
172
+ NodeSignalValue = Shapes::StringShape.new(name: 'NodeSignalValue')
168
173
  NodesList = Shapes::ListShape.new(name: 'NodesList')
169
174
  NtpPayload = Shapes::StructureShape.new(name: 'NtpPayload')
170
175
  NtpServerList = Shapes::ListShape.new(name: 'NtpServerList')
@@ -204,12 +209,17 @@ module Aws::Panorama
204
209
  RegisterPackageVersionResponse = Shapes::StructureShape.new(name: 'RegisterPackageVersionResponse')
205
210
  RemoveApplicationInstanceRequest = Shapes::StructureShape.new(name: 'RemoveApplicationInstanceRequest')
206
211
  RemoveApplicationInstanceResponse = Shapes::StructureShape.new(name: 'RemoveApplicationInstanceResponse')
212
+ ReportedRuntimeContextState = Shapes::StructureShape.new(name: 'ReportedRuntimeContextState')
213
+ ReportedRuntimeContextStates = Shapes::ListShape.new(name: 'ReportedRuntimeContextStates')
207
214
  ResourceArn = Shapes::StringShape.new(name: 'ResourceArn')
208
215
  ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
209
216
  RetryAfterSeconds = Shapes::IntegerShape.new(name: 'RetryAfterSeconds')
217
+ RuntimeContextName = Shapes::StringShape.new(name: 'RuntimeContextName')
210
218
  RuntimeRoleArn = Shapes::StringShape.new(name: 'RuntimeRoleArn')
211
219
  S3Location = Shapes::StructureShape.new(name: 'S3Location')
212
220
  ServiceQuotaExceededException = Shapes::StructureShape.new(name: 'ServiceQuotaExceededException')
221
+ SignalApplicationInstanceNodeInstancesRequest = Shapes::StructureShape.new(name: 'SignalApplicationInstanceNodeInstancesRequest')
222
+ SignalApplicationInstanceNodeInstancesResponse = Shapes::StructureShape.new(name: 'SignalApplicationInstanceNodeInstancesResponse')
213
223
  SortOrder = Shapes::StringShape.new(name: 'SortOrder')
214
224
  StaticIpConnectionInfo = Shapes::StructureShape.new(name: 'StaticIpConnectionInfo')
215
225
  StatusFilter = Shapes::StringShape.new(name: 'StatusFilter')
@@ -257,6 +267,7 @@ module Aws::Panorama
257
267
  ApplicationInstance.add_member(:description, Shapes::ShapeRef.new(shape: Description, location_name: "Description"))
258
268
  ApplicationInstance.add_member(:health_status, Shapes::ShapeRef.new(shape: ApplicationInstanceHealthStatus, location_name: "HealthStatus"))
259
269
  ApplicationInstance.add_member(:name, Shapes::ShapeRef.new(shape: ApplicationInstanceName, location_name: "Name"))
270
+ ApplicationInstance.add_member(:runtime_context_states, Shapes::ShapeRef.new(shape: ReportedRuntimeContextStates, location_name: "RuntimeContextStates"))
260
271
  ApplicationInstance.add_member(:status, Shapes::ShapeRef.new(shape: ApplicationInstanceStatus, location_name: "Status"))
261
272
  ApplicationInstance.add_member(:status_description, Shapes::ShapeRef.new(shape: ApplicationInstanceStatusDescription, location_name: "StatusDescription"))
262
273
  ApplicationInstance.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "Tags"))
@@ -291,7 +302,7 @@ module Aws::Panorama
291
302
  CreateApplicationInstanceResponse.struct_class = Types::CreateApplicationInstanceResponse
292
303
 
293
304
  CreateJobForDevicesRequest.add_member(:device_ids, Shapes::ShapeRef.new(shape: DeviceIdList, required: true, location_name: "DeviceIds"))
294
- CreateJobForDevicesRequest.add_member(:device_job_config, Shapes::ShapeRef.new(shape: DeviceJobConfig, required: true, location_name: "DeviceJobConfig"))
305
+ CreateJobForDevicesRequest.add_member(:device_job_config, Shapes::ShapeRef.new(shape: DeviceJobConfig, location_name: "DeviceJobConfig"))
295
306
  CreateJobForDevicesRequest.add_member(:job_type, Shapes::ShapeRef.new(shape: JobType, required: true, location_name: "JobType"))
296
307
  CreateJobForDevicesRequest.struct_class = Types::CreateJobForDevicesRequest
297
308
 
@@ -376,6 +387,7 @@ module Aws::Panorama
376
387
  DescribeApplicationInstanceResponse.add_member(:health_status, Shapes::ShapeRef.new(shape: ApplicationInstanceHealthStatus, location_name: "HealthStatus"))
377
388
  DescribeApplicationInstanceResponse.add_member(:last_updated_time, Shapes::ShapeRef.new(shape: TimeStamp, location_name: "LastUpdatedTime"))
378
389
  DescribeApplicationInstanceResponse.add_member(:name, Shapes::ShapeRef.new(shape: ApplicationInstanceName, location_name: "Name"))
390
+ DescribeApplicationInstanceResponse.add_member(:runtime_context_states, Shapes::ShapeRef.new(shape: ReportedRuntimeContextStates, location_name: "RuntimeContextStates"))
379
391
  DescribeApplicationInstanceResponse.add_member(:runtime_role_arn, Shapes::ShapeRef.new(shape: RuntimeRoleArn, location_name: "RuntimeRoleArn"))
380
392
  DescribeApplicationInstanceResponse.add_member(:status, Shapes::ShapeRef.new(shape: ApplicationInstanceStatus, location_name: "Status"))
381
393
  DescribeApplicationInstanceResponse.add_member(:status_description, Shapes::ShapeRef.new(shape: ApplicationInstanceStatusDescription, location_name: "StatusDescription"))
@@ -392,6 +404,7 @@ module Aws::Panorama
392
404
  DescribeDeviceJobResponse.add_member(:device_type, Shapes::ShapeRef.new(shape: DeviceType, location_name: "DeviceType"))
393
405
  DescribeDeviceJobResponse.add_member(:image_version, Shapes::ShapeRef.new(shape: ImageVersion, location_name: "ImageVersion"))
394
406
  DescribeDeviceJobResponse.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, location_name: "JobId"))
407
+ DescribeDeviceJobResponse.add_member(:job_type, Shapes::ShapeRef.new(shape: JobType, location_name: "JobType"))
395
408
  DescribeDeviceJobResponse.add_member(:status, Shapes::ShapeRef.new(shape: UpdateProgress, location_name: "Status"))
396
409
  DescribeDeviceJobResponse.struct_class = Types::DescribeDeviceJobResponse
397
410
 
@@ -525,6 +538,7 @@ module Aws::Panorama
525
538
  DeviceJob.add_member(:device_id, Shapes::ShapeRef.new(shape: DeviceId, location_name: "DeviceId"))
526
539
  DeviceJob.add_member(:device_name, Shapes::ShapeRef.new(shape: DeviceName, location_name: "DeviceName"))
527
540
  DeviceJob.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, location_name: "JobId"))
541
+ DeviceJob.add_member(:job_type, Shapes::ShapeRef.new(shape: JobType, location_name: "JobType"))
528
542
  DeviceJob.struct_class = Types::DeviceJob
529
543
 
530
544
  DeviceJobConfig.add_member(:ota_job_config, Shapes::ShapeRef.new(shape: OTAJobConfig, location_name: "OTAJobConfig"))
@@ -564,6 +578,7 @@ module Aws::Panorama
564
578
  JobTagsList.member = Shapes::ShapeRef.new(shape: JobResourceTags)
565
579
 
566
580
  LatestDeviceJob.add_member(:image_version, Shapes::ShapeRef.new(shape: ImageVersion, location_name: "ImageVersion"))
581
+ LatestDeviceJob.add_member(:job_type, Shapes::ShapeRef.new(shape: JobType, location_name: "JobType"))
567
582
  LatestDeviceJob.add_member(:status, Shapes::ShapeRef.new(shape: UpdateProgress, location_name: "Status"))
568
583
  LatestDeviceJob.struct_class = Types::LatestDeviceJob
569
584
 
@@ -732,6 +747,12 @@ module Aws::Panorama
732
747
  NodeOutputPort.add_member(:type, Shapes::ShapeRef.new(shape: PortType, location_name: "Type"))
733
748
  NodeOutputPort.struct_class = Types::NodeOutputPort
734
749
 
750
+ NodeSignal.add_member(:node_instance_id, Shapes::ShapeRef.new(shape: NodeInstanceId, required: true, location_name: "NodeInstanceId"))
751
+ NodeSignal.add_member(:signal, Shapes::ShapeRef.new(shape: NodeSignalValue, required: true, location_name: "Signal"))
752
+ NodeSignal.struct_class = Types::NodeSignal
753
+
754
+ NodeSignalList.member = Shapes::ShapeRef.new(shape: NodeSignal)
755
+
735
756
  NodesList.member = Shapes::ShapeRef.new(shape: Node)
736
757
 
737
758
  NtpPayload.add_member(:ntp_servers, Shapes::ShapeRef.new(shape: NtpServerList, required: true, location_name: "NtpServers"))
@@ -828,6 +849,14 @@ module Aws::Panorama
828
849
 
829
850
  RemoveApplicationInstanceResponse.struct_class = Types::RemoveApplicationInstanceResponse
830
851
 
852
+ ReportedRuntimeContextState.add_member(:desired_state, Shapes::ShapeRef.new(shape: DesiredState, required: true, location_name: "DesiredState"))
853
+ ReportedRuntimeContextState.add_member(:device_reported_status, Shapes::ShapeRef.new(shape: DeviceReportedStatus, required: true, location_name: "DeviceReportedStatus"))
854
+ ReportedRuntimeContextState.add_member(:device_reported_time, Shapes::ShapeRef.new(shape: TimeStamp, required: true, location_name: "DeviceReportedTime"))
855
+ ReportedRuntimeContextState.add_member(:runtime_context_name, Shapes::ShapeRef.new(shape: RuntimeContextName, required: true, location_name: "RuntimeContextName"))
856
+ ReportedRuntimeContextState.struct_class = Types::ReportedRuntimeContextState
857
+
858
+ ReportedRuntimeContextStates.member = Shapes::ShapeRef.new(shape: ReportedRuntimeContextState)
859
+
831
860
  ResourceNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: String, required: true, location_name: "Message"))
832
861
  ResourceNotFoundException.add_member(:resource_id, Shapes::ShapeRef.new(shape: String, required: true, location_name: "ResourceId"))
833
862
  ResourceNotFoundException.add_member(:resource_type, Shapes::ShapeRef.new(shape: String, required: true, location_name: "ResourceType"))
@@ -845,6 +874,13 @@ module Aws::Panorama
845
874
  ServiceQuotaExceededException.add_member(:service_code, Shapes::ShapeRef.new(shape: String, required: true, location_name: "ServiceCode"))
846
875
  ServiceQuotaExceededException.struct_class = Types::ServiceQuotaExceededException
847
876
 
877
+ SignalApplicationInstanceNodeInstancesRequest.add_member(:application_instance_id, Shapes::ShapeRef.new(shape: ApplicationInstanceId, required: true, location: "uri", location_name: "ApplicationInstanceId"))
878
+ SignalApplicationInstanceNodeInstancesRequest.add_member(:node_signals, Shapes::ShapeRef.new(shape: NodeSignalList, required: true, location_name: "NodeSignals"))
879
+ SignalApplicationInstanceNodeInstancesRequest.struct_class = Types::SignalApplicationInstanceNodeInstancesRequest
880
+
881
+ SignalApplicationInstanceNodeInstancesResponse.add_member(:application_instance_id, Shapes::ShapeRef.new(shape: ApplicationInstanceId, required: true, location_name: "ApplicationInstanceId"))
882
+ SignalApplicationInstanceNodeInstancesResponse.struct_class = Types::SignalApplicationInstanceNodeInstancesResponse
883
+
848
884
  StaticIpConnectionInfo.add_member(:default_gateway, Shapes::ShapeRef.new(shape: DefaultGateway, required: true, location_name: "DefaultGateway"))
849
885
  StaticIpConnectionInfo.add_member(:dns, Shapes::ShapeRef.new(shape: DnsList, required: true, location_name: "Dns"))
850
886
  StaticIpConnectionInfo.add_member(:ip_address, Shapes::ShapeRef.new(shape: IpAddress, required: true, location_name: "IpAddress"))
@@ -1343,6 +1379,18 @@ module Aws::Panorama
1343
1379
  o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
1344
1380
  end)
1345
1381
 
1382
+ api.add_operation(:signal_application_instance_node_instances, Seahorse::Model::Operation.new.tap do |o|
1383
+ o.name = "SignalApplicationInstanceNodeInstances"
1384
+ o.http_method = "PUT"
1385
+ o.http_request_uri = "/application-instances/{ApplicationInstanceId}/node-signals"
1386
+ o.input = Shapes::ShapeRef.new(shape: SignalApplicationInstanceNodeInstancesRequest)
1387
+ o.output = Shapes::ShapeRef.new(shape: SignalApplicationInstanceNodeInstancesResponse)
1388
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
1389
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
1390
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
1391
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
1392
+ end)
1393
+
1346
1394
  api.add_operation(:tag_resource, Seahorse::Model::Operation.new.tap do |o|
1347
1395
  o.name = "TagResource"
1348
1396
  o.http_method = "POST"
@@ -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::Panorama
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,110 @@
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::Panorama
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
+ dCI6eyJ1cmwiOiJodHRwczovL3Bhbm9yYW1hLWZpcHMue1JlZ2lvbn0ue1Bh
77
+ cnRpdGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZmaXh9IiwicHJvcGVydGll
78
+ cyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfSx7ImNv
79
+ bmRpdGlvbnMiOltdLCJlcnJvciI6IkZJUFMgYW5kIER1YWxTdGFjayBhcmUg
80
+ ZW5hYmxlZCwgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQg
81
+ b25lIG9yIGJvdGgiLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6
82
+ W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQ
83
+ UyJ9LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlv
84
+ bnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4i
85
+ OiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0s
86
+ InN1cHBvcnRzRklQUyJdfV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3si
87
+ Y29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vcGFu
88
+ b3JhbWEtZmlwcy57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2Ruc1N1ZmZp
89
+ eH0iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5k
90
+ cG9pbnQifV19LHsiY29uZGl0aW9ucyI6W10sImVycm9yIjoiRklQUyBpcyBl
91
+ bmFibGVkIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IEZJ
92
+ UFMiLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W3siZm4iOiJi
93
+ b29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRHVhbFN0YWNrIn0s
94
+ dHJ1ZV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6
95
+ W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJmbiI6Imdl
96
+ dEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQifSwic3Vw
97
+ cG9ydHNEdWFsU3RhY2siXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7
98
+ ImNvbmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL3Bh
99
+ bm9yYW1hLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5z
100
+ U3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUi
101
+ OiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJEdWFs
102
+ U3RhY2sgaXMgZW5hYmxlZCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qg
103
+ c3VwcG9ydCBEdWFsU3RhY2siLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0
104
+ aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vcGFub3JhbWEu
105
+ e1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkbnNTdWZmaXh9IiwicHJvcGVy
106
+ dGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfV19
107
+
108
+ JSON
109
+ end
110
+ end