aws-sdk-kinesisvideo 1.43.0 → 1.44.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: edae8ea702f288ac6a37e4b57c0af6bddefc3ba6469fa7757763406e50f73a30
4
- data.tar.gz: 3cd0714a129d3b0e696a4ec5bb3a19eabdde13b5eeb55424c4a3d6ed4e94f8ef
3
+ metadata.gz: ca1533e1296d690b1e1c8aa14f50ffeee67187d490cc0c6c52a0fa9017f69552
4
+ data.tar.gz: d70d1f5a003b1b7ec20727204972a9f13a942dd39d682aa749836ad73433b457
5
5
  SHA512:
6
- metadata.gz: cb7ad3cef59e7838fea3ab5aa7fb9e6e74f97319e5d19f3d7844ab128d8ebb7362ce8c86e8f39c5e21e3356500156e522d73c19fd7b9e4a1566f74971ea14f1d
7
- data.tar.gz: 127ce2221fe82c1fe07ef29dd74e9ab3e2fe2bdbaee1b075c1b4fc1633e95e905b976697b8be615cbf2cf483a3da84f3d0a0e14860df9f3e53196815f28c37f3
6
+ metadata.gz: 522053cfb4a8aa651157da1449edcef69fd8251b3fe0e725a361fff71034a47cb5ef0992b1efd9d6a527195da9ce789a48459f96784dc65306a121eb03c01aef
7
+ data.tar.gz: 8fa3049ae9d0e29e6c101f63e845b090797f5f38c786bc6c96f47229e4c6fc9062294b063dc3c96cf8ab71cbbd200f4eea4cd9a4c6d8192af287263f5454f9ff
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.44.0 (2022-12-12)
5
+ ------------------
6
+
7
+ * Feature - This release adds support for public preview of Kinesis Video Stream at Edge enabling customers to provide configuration for the Kinesis Video Stream EdgeAgent running on an on-premise IoT device. Customers can now locally record from cameras and stream videos to the cloud on configured schedule.
8
+
4
9
  1.43.0 (2022-10-25)
5
10
  ------------------
6
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.43.0
1
+ 1.44.0
@@ -608,6 +608,64 @@ module Aws::KinesisVideo
608
608
  req.send_request(options)
609
609
  end
610
610
 
611
+ # Describes a stream’s edge configuration that was set using the
612
+ # `StartEdgeConfigurationUpdate` API. Use this API to get the status of
613
+ # the configuration if the configuration is in sync with the Edge Agent.
614
+ #
615
+ # @option params [String] :stream_name
616
+ # The name of the stream whose edge configuration you want to update.
617
+ # Specify either the `StreamName` or the `StreamARN`.
618
+ #
619
+ # @option params [String] :stream_arn
620
+ # The Amazon Resource Name (ARN) of the stream. Specify either the
621
+ # `StreamName`or the `StreamARN`.
622
+ #
623
+ # @return [Types::DescribeEdgeConfigurationOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
624
+ #
625
+ # * {Types::DescribeEdgeConfigurationOutput#stream_name #stream_name} => String
626
+ # * {Types::DescribeEdgeConfigurationOutput#stream_arn #stream_arn} => String
627
+ # * {Types::DescribeEdgeConfigurationOutput#creation_time #creation_time} => Time
628
+ # * {Types::DescribeEdgeConfigurationOutput#last_updated_time #last_updated_time} => Time
629
+ # * {Types::DescribeEdgeConfigurationOutput#sync_status #sync_status} => String
630
+ # * {Types::DescribeEdgeConfigurationOutput#failed_status_details #failed_status_details} => String
631
+ # * {Types::DescribeEdgeConfigurationOutput#edge_config #edge_config} => Types::EdgeConfig
632
+ #
633
+ # @example Request syntax with placeholder values
634
+ #
635
+ # resp = client.describe_edge_configuration({
636
+ # stream_name: "StreamName",
637
+ # stream_arn: "ResourceARN",
638
+ # })
639
+ #
640
+ # @example Response structure
641
+ #
642
+ # resp.stream_name #=> String
643
+ # resp.stream_arn #=> String
644
+ # resp.creation_time #=> Time
645
+ # resp.last_updated_time #=> Time
646
+ # resp.sync_status #=> String, one of "SYNCING", "ACKNOWLEDGED", "IN_SYNC", "SYNC_FAILED", "DELETING", "DELETE_FAILED"
647
+ # resp.failed_status_details #=> String
648
+ # resp.edge_config.hub_device_arn #=> String
649
+ # resp.edge_config.recorder_config.media_source_config.media_uri_secret_arn #=> String
650
+ # resp.edge_config.recorder_config.media_source_config.media_uri_type #=> String, one of "RTSP_URI", "FILE_URI"
651
+ # resp.edge_config.recorder_config.schedule_config.schedule_expression #=> String
652
+ # resp.edge_config.recorder_config.schedule_config.duration_in_seconds #=> Integer
653
+ # resp.edge_config.uploader_config.schedule_config.schedule_expression #=> String
654
+ # resp.edge_config.uploader_config.schedule_config.duration_in_seconds #=> Integer
655
+ # resp.edge_config.deletion_config.edge_retention_in_hours #=> Integer
656
+ # resp.edge_config.deletion_config.local_size_config.max_local_media_size_in_mb #=> Integer
657
+ # resp.edge_config.deletion_config.local_size_config.strategy_on_full_size #=> String, one of "DELETE_OLDEST_MEDIA", "DENY_NEW_MEDIA"
658
+ # resp.edge_config.deletion_config.delete_after_upload #=> Boolean
659
+ #
660
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kinesisvideo-2017-09-30/DescribeEdgeConfiguration AWS API Documentation
661
+ #
662
+ # @overload describe_edge_configuration(params = {})
663
+ # @param [Hash] params ({})
664
+ def describe_edge_configuration(params = {}, options = {})
665
+ req = build_request(:describe_edge_configuration, params)
666
+ req.send_request(options)
667
+ end
668
+
611
669
  # Gets the `ImageGenerationConfiguration` for a given Kinesis video
612
670
  # stream.
613
671
  #
@@ -1075,6 +1133,110 @@ module Aws::KinesisVideo
1075
1133
  req.send_request(options)
1076
1134
  end
1077
1135
 
1136
+ # An asynchronous API that updates a stream’s existing edge
1137
+ # configuration. If this API is invoked for the first time, a new edge
1138
+ # configuration will be created for the stream, and the sync status will
1139
+ # be set to `SYNCING`.
1140
+ #
1141
+ # The Kinesis Video Stream will sync the stream’s edge configuration
1142
+ # with the Edge Agent IoT Greengrass component that runs on an IoT Hub
1143
+ # Device setup at your premise. The time to sync can vary and depends on
1144
+ # the connectivity of the Hub Device. The `SyncStatus` will be updated
1145
+ # as the edge configuration is acknowledged, and synced with the Edge
1146
+ # Agent. You will have to wait for the sync status to reach a terminal
1147
+ # state such as: `IN_SYNC` and `SYNC_FAILED`, before using this API
1148
+ # again.
1149
+ #
1150
+ # If you invoke this API during the syncing process, a
1151
+ # `ResourceInUseException` will be thrown. The connectivity of the
1152
+ # stream's edge configuration and the Edge Agent will be retried for 15
1153
+ # minutes. After 15 minutes, the status will transition into the
1154
+ # `SYNC_FAILED` state.
1155
+ #
1156
+ # @option params [String] :stream_name
1157
+ # The name of the stream whose edge configuration you want to update.
1158
+ # Specify either the `StreamName` or the `StreamARN`.
1159
+ #
1160
+ # @option params [String] :stream_arn
1161
+ # The Amazon Resource Name (ARN) of the stream. Specify either the
1162
+ # `StreamName` or the `StreamARN`.
1163
+ #
1164
+ # @option params [required, Types::EdgeConfig] :edge_config
1165
+ # The edge configuration details required to invoke the update process.
1166
+ #
1167
+ # @return [Types::StartEdgeConfigurationUpdateOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1168
+ #
1169
+ # * {Types::StartEdgeConfigurationUpdateOutput#stream_name #stream_name} => String
1170
+ # * {Types::StartEdgeConfigurationUpdateOutput#stream_arn #stream_arn} => String
1171
+ # * {Types::StartEdgeConfigurationUpdateOutput#creation_time #creation_time} => Time
1172
+ # * {Types::StartEdgeConfigurationUpdateOutput#last_updated_time #last_updated_time} => Time
1173
+ # * {Types::StartEdgeConfigurationUpdateOutput#sync_status #sync_status} => String
1174
+ # * {Types::StartEdgeConfigurationUpdateOutput#failed_status_details #failed_status_details} => String
1175
+ # * {Types::StartEdgeConfigurationUpdateOutput#edge_config #edge_config} => Types::EdgeConfig
1176
+ #
1177
+ # @example Request syntax with placeholder values
1178
+ #
1179
+ # resp = client.start_edge_configuration_update({
1180
+ # stream_name: "StreamName",
1181
+ # stream_arn: "ResourceARN",
1182
+ # edge_config: { # required
1183
+ # hub_device_arn: "HubDeviceArn", # required
1184
+ # recorder_config: { # required
1185
+ # media_source_config: { # required
1186
+ # media_uri_secret_arn: "MediaUriSecretArn", # required
1187
+ # media_uri_type: "RTSP_URI", # required, accepts RTSP_URI, FILE_URI
1188
+ # },
1189
+ # schedule_config: {
1190
+ # schedule_expression: "ScheduleExpression", # required
1191
+ # duration_in_seconds: 1, # required
1192
+ # },
1193
+ # },
1194
+ # uploader_config: {
1195
+ # schedule_config: { # required
1196
+ # schedule_expression: "ScheduleExpression", # required
1197
+ # duration_in_seconds: 1, # required
1198
+ # },
1199
+ # },
1200
+ # deletion_config: {
1201
+ # edge_retention_in_hours: 1,
1202
+ # local_size_config: {
1203
+ # max_local_media_size_in_mb: 1,
1204
+ # strategy_on_full_size: "DELETE_OLDEST_MEDIA", # accepts DELETE_OLDEST_MEDIA, DENY_NEW_MEDIA
1205
+ # },
1206
+ # delete_after_upload: false,
1207
+ # },
1208
+ # },
1209
+ # })
1210
+ #
1211
+ # @example Response structure
1212
+ #
1213
+ # resp.stream_name #=> String
1214
+ # resp.stream_arn #=> String
1215
+ # resp.creation_time #=> Time
1216
+ # resp.last_updated_time #=> Time
1217
+ # resp.sync_status #=> String, one of "SYNCING", "ACKNOWLEDGED", "IN_SYNC", "SYNC_FAILED", "DELETING", "DELETE_FAILED"
1218
+ # resp.failed_status_details #=> String
1219
+ # resp.edge_config.hub_device_arn #=> String
1220
+ # resp.edge_config.recorder_config.media_source_config.media_uri_secret_arn #=> String
1221
+ # resp.edge_config.recorder_config.media_source_config.media_uri_type #=> String, one of "RTSP_URI", "FILE_URI"
1222
+ # resp.edge_config.recorder_config.schedule_config.schedule_expression #=> String
1223
+ # resp.edge_config.recorder_config.schedule_config.duration_in_seconds #=> Integer
1224
+ # resp.edge_config.uploader_config.schedule_config.schedule_expression #=> String
1225
+ # resp.edge_config.uploader_config.schedule_config.duration_in_seconds #=> Integer
1226
+ # resp.edge_config.deletion_config.edge_retention_in_hours #=> Integer
1227
+ # resp.edge_config.deletion_config.local_size_config.max_local_media_size_in_mb #=> Integer
1228
+ # resp.edge_config.deletion_config.local_size_config.strategy_on_full_size #=> String, one of "DELETE_OLDEST_MEDIA", "DENY_NEW_MEDIA"
1229
+ # resp.edge_config.deletion_config.delete_after_upload #=> Boolean
1230
+ #
1231
+ # @see http://docs.aws.amazon.com/goto/WebAPI/kinesisvideo-2017-09-30/StartEdgeConfigurationUpdate AWS API Documentation
1232
+ #
1233
+ # @overload start_edge_configuration_update(params = {})
1234
+ # @param [Hash] params ({})
1235
+ def start_edge_configuration_update(params = {}, options = {})
1236
+ req = build_request(:start_edge_configuration_update, params)
1237
+ req.send_request(options)
1238
+ end
1239
+
1078
1240
  # Adds one or more tags to a signaling channel. A *tag* is a key-value
1079
1241
  # pair (the value is optional) that you can define and assign to Amazon
1080
1242
  # Web Services resources. If you specify a tag that already exists, the
@@ -1514,7 +1676,7 @@ module Aws::KinesisVideo
1514
1676
  params: params,
1515
1677
  config: config)
1516
1678
  context[:gem_name] = 'aws-sdk-kinesisvideo'
1517
- context[:gem_version] = '1.43.0'
1679
+ context[:gem_version] = '1.44.0'
1518
1680
  Seahorse::Client::Request.new(handlers, context)
1519
1681
  end
1520
1682
 
@@ -34,10 +34,14 @@ module Aws::KinesisVideo
34
34
  DataEndpoint = Shapes::StringShape.new(name: 'DataEndpoint')
35
35
  DataRetentionChangeInHours = Shapes::IntegerShape.new(name: 'DataRetentionChangeInHours')
36
36
  DataRetentionInHours = Shapes::IntegerShape.new(name: 'DataRetentionInHours')
37
+ DeleteAfterUpload = Shapes::BooleanShape.new(name: 'DeleteAfterUpload')
37
38
  DeleteSignalingChannelInput = Shapes::StructureShape.new(name: 'DeleteSignalingChannelInput')
38
39
  DeleteSignalingChannelOutput = Shapes::StructureShape.new(name: 'DeleteSignalingChannelOutput')
39
40
  DeleteStreamInput = Shapes::StructureShape.new(name: 'DeleteStreamInput')
40
41
  DeleteStreamOutput = Shapes::StructureShape.new(name: 'DeleteStreamOutput')
42
+ DeletionConfig = Shapes::StructureShape.new(name: 'DeletionConfig')
43
+ DescribeEdgeConfigurationInput = Shapes::StructureShape.new(name: 'DescribeEdgeConfigurationInput')
44
+ DescribeEdgeConfigurationOutput = Shapes::StructureShape.new(name: 'DescribeEdgeConfigurationOutput')
41
45
  DescribeImageGenerationConfigurationInput = Shapes::StructureShape.new(name: 'DescribeImageGenerationConfigurationInput')
42
46
  DescribeImageGenerationConfigurationOutput = Shapes::StructureShape.new(name: 'DescribeImageGenerationConfigurationOutput')
43
47
  DescribeNotificationConfigurationInput = Shapes::StructureShape.new(name: 'DescribeNotificationConfigurationInput')
@@ -50,7 +54,11 @@ module Aws::KinesisVideo
50
54
  DestinationUri = Shapes::StringShape.new(name: 'DestinationUri')
51
55
  DeviceName = Shapes::StringShape.new(name: 'DeviceName')
52
56
  DeviceStreamLimitExceededException = Shapes::StructureShape.new(name: 'DeviceStreamLimitExceededException')
57
+ DurationInSeconds = Shapes::IntegerShape.new(name: 'DurationInSeconds')
58
+ EdgeConfig = Shapes::StructureShape.new(name: 'EdgeConfig')
59
+ EdgeRetentionInHours = Shapes::IntegerShape.new(name: 'EdgeRetentionInHours')
53
60
  ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage')
61
+ FailedStatusDetails = Shapes::StringShape.new(name: 'FailedStatusDetails')
54
62
  Format = Shapes::StringShape.new(name: 'Format')
55
63
  FormatConfig = Shapes::MapShape.new(name: 'FormatConfig')
56
64
  FormatConfigKey = Shapes::StringShape.new(name: 'FormatConfigKey')
@@ -60,6 +68,7 @@ module Aws::KinesisVideo
60
68
  GetSignalingChannelEndpointInput = Shapes::StructureShape.new(name: 'GetSignalingChannelEndpointInput')
61
69
  GetSignalingChannelEndpointOutput = Shapes::StructureShape.new(name: 'GetSignalingChannelEndpointOutput')
62
70
  HeightPixels = Shapes::IntegerShape.new(name: 'HeightPixels')
71
+ HubDeviceArn = Shapes::StringShape.new(name: 'HubDeviceArn')
63
72
  ImageGenerationConfiguration = Shapes::StructureShape.new(name: 'ImageGenerationConfiguration')
64
73
  ImageGenerationDestinationConfig = Shapes::StructureShape.new(name: 'ImageGenerationDestinationConfig')
65
74
  ImageSelectorType = Shapes::StringShape.new(name: 'ImageSelectorType')
@@ -77,13 +86,19 @@ module Aws::KinesisVideo
77
86
  ListTagsForResourceOutput = Shapes::StructureShape.new(name: 'ListTagsForResourceOutput')
78
87
  ListTagsForStreamInput = Shapes::StructureShape.new(name: 'ListTagsForStreamInput')
79
88
  ListTagsForStreamOutput = Shapes::StructureShape.new(name: 'ListTagsForStreamOutput')
89
+ LocalSizeConfig = Shapes::StructureShape.new(name: 'LocalSizeConfig')
90
+ MaxLocalMediaSizeInMB = Shapes::IntegerShape.new(name: 'MaxLocalMediaSizeInMB')
91
+ MediaSourceConfig = Shapes::StructureShape.new(name: 'MediaSourceConfig')
80
92
  MediaType = Shapes::StringShape.new(name: 'MediaType')
93
+ MediaUriSecretArn = Shapes::StringShape.new(name: 'MediaUriSecretArn')
94
+ MediaUriType = Shapes::StringShape.new(name: 'MediaUriType')
81
95
  MessageTtlSeconds = Shapes::IntegerShape.new(name: 'MessageTtlSeconds')
82
96
  NextToken = Shapes::StringShape.new(name: 'NextToken')
83
97
  NoDataRetentionException = Shapes::StructureShape.new(name: 'NoDataRetentionException')
84
98
  NotAuthorizedException = Shapes::StructureShape.new(name: 'NotAuthorizedException')
85
99
  NotificationConfiguration = Shapes::StructureShape.new(name: 'NotificationConfiguration')
86
100
  NotificationDestinationConfig = Shapes::StructureShape.new(name: 'NotificationDestinationConfig')
101
+ RecorderConfig = Shapes::StructureShape.new(name: 'RecorderConfig')
87
102
  ResourceARN = Shapes::StringShape.new(name: 'ResourceARN')
88
103
  ResourceEndpoint = Shapes::StringShape.new(name: 'ResourceEndpoint')
89
104
  ResourceEndpointList = Shapes::ListShape.new(name: 'ResourceEndpointList')
@@ -92,13 +107,20 @@ module Aws::KinesisVideo
92
107
  ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
93
108
  ResourceTags = Shapes::MapShape.new(name: 'ResourceTags')
94
109
  SamplingInterval = Shapes::IntegerShape.new(name: 'SamplingInterval')
110
+ ScheduleConfig = Shapes::StructureShape.new(name: 'ScheduleConfig')
111
+ ScheduleExpression = Shapes::StringShape.new(name: 'ScheduleExpression')
95
112
  SingleMasterChannelEndpointConfiguration = Shapes::StructureShape.new(name: 'SingleMasterChannelEndpointConfiguration')
96
113
  SingleMasterConfiguration = Shapes::StructureShape.new(name: 'SingleMasterConfiguration')
114
+ StartEdgeConfigurationUpdateInput = Shapes::StructureShape.new(name: 'StartEdgeConfigurationUpdateInput')
115
+ StartEdgeConfigurationUpdateOutput = Shapes::StructureShape.new(name: 'StartEdgeConfigurationUpdateOutput')
97
116
  Status = Shapes::StringShape.new(name: 'Status')
117
+ StrategyOnFullSize = Shapes::StringShape.new(name: 'StrategyOnFullSize')
118
+ StreamEdgeConfigurationNotFoundException = Shapes::StructureShape.new(name: 'StreamEdgeConfigurationNotFoundException')
98
119
  StreamInfo = Shapes::StructureShape.new(name: 'StreamInfo')
99
120
  StreamInfoList = Shapes::ListShape.new(name: 'StreamInfoList')
100
121
  StreamName = Shapes::StringShape.new(name: 'StreamName')
101
122
  StreamNameCondition = Shapes::StructureShape.new(name: 'StreamNameCondition')
123
+ SyncStatus = Shapes::StringShape.new(name: 'SyncStatus')
102
124
  Tag = Shapes::StructureShape.new(name: 'Tag')
103
125
  TagKey = Shapes::StringShape.new(name: 'TagKey')
104
126
  TagKeyList = Shapes::ListShape.new(name: 'TagKeyList')
@@ -126,6 +148,7 @@ module Aws::KinesisVideo
126
148
  UpdateSignalingChannelOutput = Shapes::StructureShape.new(name: 'UpdateSignalingChannelOutput')
127
149
  UpdateStreamInput = Shapes::StructureShape.new(name: 'UpdateStreamInput')
128
150
  UpdateStreamOutput = Shapes::StructureShape.new(name: 'UpdateStreamOutput')
151
+ UploaderConfig = Shapes::StructureShape.new(name: 'UploaderConfig')
129
152
  Version = Shapes::StringShape.new(name: 'Version')
130
153
  VersionMismatchException = Shapes::StructureShape.new(name: 'VersionMismatchException')
131
154
  WidthPixels = Shapes::IntegerShape.new(name: 'WidthPixels')
@@ -189,6 +212,24 @@ module Aws::KinesisVideo
189
212
 
190
213
  DeleteStreamOutput.struct_class = Types::DeleteStreamOutput
191
214
 
215
+ DeletionConfig.add_member(:edge_retention_in_hours, Shapes::ShapeRef.new(shape: EdgeRetentionInHours, location_name: "EdgeRetentionInHours"))
216
+ DeletionConfig.add_member(:local_size_config, Shapes::ShapeRef.new(shape: LocalSizeConfig, location_name: "LocalSizeConfig"))
217
+ DeletionConfig.add_member(:delete_after_upload, Shapes::ShapeRef.new(shape: DeleteAfterUpload, location_name: "DeleteAfterUpload"))
218
+ DeletionConfig.struct_class = Types::DeletionConfig
219
+
220
+ DescribeEdgeConfigurationInput.add_member(:stream_name, Shapes::ShapeRef.new(shape: StreamName, location_name: "StreamName"))
221
+ DescribeEdgeConfigurationInput.add_member(:stream_arn, Shapes::ShapeRef.new(shape: ResourceARN, location_name: "StreamARN"))
222
+ DescribeEdgeConfigurationInput.struct_class = Types::DescribeEdgeConfigurationInput
223
+
224
+ DescribeEdgeConfigurationOutput.add_member(:stream_name, Shapes::ShapeRef.new(shape: StreamName, location_name: "StreamName"))
225
+ DescribeEdgeConfigurationOutput.add_member(:stream_arn, Shapes::ShapeRef.new(shape: ResourceARN, location_name: "StreamARN"))
226
+ DescribeEdgeConfigurationOutput.add_member(:creation_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CreationTime"))
227
+ DescribeEdgeConfigurationOutput.add_member(:last_updated_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "LastUpdatedTime"))
228
+ DescribeEdgeConfigurationOutput.add_member(:sync_status, Shapes::ShapeRef.new(shape: SyncStatus, location_name: "SyncStatus"))
229
+ DescribeEdgeConfigurationOutput.add_member(:failed_status_details, Shapes::ShapeRef.new(shape: FailedStatusDetails, location_name: "FailedStatusDetails"))
230
+ DescribeEdgeConfigurationOutput.add_member(:edge_config, Shapes::ShapeRef.new(shape: EdgeConfig, location_name: "EdgeConfig"))
231
+ DescribeEdgeConfigurationOutput.struct_class = Types::DescribeEdgeConfigurationOutput
232
+
192
233
  DescribeImageGenerationConfigurationInput.add_member(:stream_name, Shapes::ShapeRef.new(shape: StreamName, location_name: "StreamName"))
193
234
  DescribeImageGenerationConfigurationInput.add_member(:stream_arn, Shapes::ShapeRef.new(shape: ResourceARN, location_name: "StreamARN"))
194
235
  DescribeImageGenerationConfigurationInput.struct_class = Types::DescribeImageGenerationConfigurationInput
@@ -220,6 +261,12 @@ module Aws::KinesisVideo
220
261
  DeviceStreamLimitExceededException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
221
262
  DeviceStreamLimitExceededException.struct_class = Types::DeviceStreamLimitExceededException
222
263
 
264
+ EdgeConfig.add_member(:hub_device_arn, Shapes::ShapeRef.new(shape: HubDeviceArn, required: true, location_name: "HubDeviceArn"))
265
+ EdgeConfig.add_member(:recorder_config, Shapes::ShapeRef.new(shape: RecorderConfig, required: true, location_name: "RecorderConfig"))
266
+ EdgeConfig.add_member(:uploader_config, Shapes::ShapeRef.new(shape: UploaderConfig, location_name: "UploaderConfig"))
267
+ EdgeConfig.add_member(:deletion_config, Shapes::ShapeRef.new(shape: DeletionConfig, location_name: "DeletionConfig"))
268
+ EdgeConfig.struct_class = Types::EdgeConfig
269
+
223
270
  FormatConfig.key = Shapes::ShapeRef.new(shape: FormatConfigKey)
224
271
  FormatConfig.value = Shapes::ShapeRef.new(shape: FormatConfigValue)
225
272
 
@@ -298,6 +345,14 @@ module Aws::KinesisVideo
298
345
  ListTagsForStreamOutput.add_member(:tags, Shapes::ShapeRef.new(shape: ResourceTags, location_name: "Tags"))
299
346
  ListTagsForStreamOutput.struct_class = Types::ListTagsForStreamOutput
300
347
 
348
+ LocalSizeConfig.add_member(:max_local_media_size_in_mb, Shapes::ShapeRef.new(shape: MaxLocalMediaSizeInMB, location_name: "MaxLocalMediaSizeInMB"))
349
+ LocalSizeConfig.add_member(:strategy_on_full_size, Shapes::ShapeRef.new(shape: StrategyOnFullSize, location_name: "StrategyOnFullSize"))
350
+ LocalSizeConfig.struct_class = Types::LocalSizeConfig
351
+
352
+ MediaSourceConfig.add_member(:media_uri_secret_arn, Shapes::ShapeRef.new(shape: MediaUriSecretArn, required: true, location_name: "MediaUriSecretArn"))
353
+ MediaSourceConfig.add_member(:media_uri_type, Shapes::ShapeRef.new(shape: MediaUriType, required: true, location_name: "MediaUriType"))
354
+ MediaSourceConfig.struct_class = Types::MediaSourceConfig
355
+
301
356
  NoDataRetentionException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
302
357
  NoDataRetentionException.struct_class = Types::NoDataRetentionException
303
358
 
@@ -311,6 +366,10 @@ module Aws::KinesisVideo
311
366
  NotificationDestinationConfig.add_member(:uri, Shapes::ShapeRef.new(shape: DestinationUri, required: true, location_name: "Uri"))
312
367
  NotificationDestinationConfig.struct_class = Types::NotificationDestinationConfig
313
368
 
369
+ RecorderConfig.add_member(:media_source_config, Shapes::ShapeRef.new(shape: MediaSourceConfig, required: true, location_name: "MediaSourceConfig"))
370
+ RecorderConfig.add_member(:schedule_config, Shapes::ShapeRef.new(shape: ScheduleConfig, location_name: "ScheduleConfig"))
371
+ RecorderConfig.struct_class = Types::RecorderConfig
372
+
314
373
  ResourceEndpointList.member = Shapes::ShapeRef.new(shape: ResourceEndpointListItem)
315
374
 
316
375
  ResourceEndpointListItem.add_member(:protocol, Shapes::ShapeRef.new(shape: ChannelProtocol, location_name: "Protocol"))
@@ -326,6 +385,10 @@ module Aws::KinesisVideo
326
385
  ResourceTags.key = Shapes::ShapeRef.new(shape: TagKey)
327
386
  ResourceTags.value = Shapes::ShapeRef.new(shape: TagValue)
328
387
 
388
+ ScheduleConfig.add_member(:schedule_expression, Shapes::ShapeRef.new(shape: ScheduleExpression, required: true, location_name: "ScheduleExpression"))
389
+ ScheduleConfig.add_member(:duration_in_seconds, Shapes::ShapeRef.new(shape: DurationInSeconds, required: true, location_name: "DurationInSeconds"))
390
+ ScheduleConfig.struct_class = Types::ScheduleConfig
391
+
329
392
  SingleMasterChannelEndpointConfiguration.add_member(:protocols, Shapes::ShapeRef.new(shape: ListOfProtocols, location_name: "Protocols"))
330
393
  SingleMasterChannelEndpointConfiguration.add_member(:role, Shapes::ShapeRef.new(shape: ChannelRole, location_name: "Role"))
331
394
  SingleMasterChannelEndpointConfiguration.struct_class = Types::SingleMasterChannelEndpointConfiguration
@@ -333,6 +396,23 @@ module Aws::KinesisVideo
333
396
  SingleMasterConfiguration.add_member(:message_ttl_seconds, Shapes::ShapeRef.new(shape: MessageTtlSeconds, location_name: "MessageTtlSeconds"))
334
397
  SingleMasterConfiguration.struct_class = Types::SingleMasterConfiguration
335
398
 
399
+ StartEdgeConfigurationUpdateInput.add_member(:stream_name, Shapes::ShapeRef.new(shape: StreamName, location_name: "StreamName"))
400
+ StartEdgeConfigurationUpdateInput.add_member(:stream_arn, Shapes::ShapeRef.new(shape: ResourceARN, location_name: "StreamARN"))
401
+ StartEdgeConfigurationUpdateInput.add_member(:edge_config, Shapes::ShapeRef.new(shape: EdgeConfig, required: true, location_name: "EdgeConfig"))
402
+ StartEdgeConfigurationUpdateInput.struct_class = Types::StartEdgeConfigurationUpdateInput
403
+
404
+ StartEdgeConfigurationUpdateOutput.add_member(:stream_name, Shapes::ShapeRef.new(shape: StreamName, location_name: "StreamName"))
405
+ StartEdgeConfigurationUpdateOutput.add_member(:stream_arn, Shapes::ShapeRef.new(shape: ResourceARN, location_name: "StreamARN"))
406
+ StartEdgeConfigurationUpdateOutput.add_member(:creation_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CreationTime"))
407
+ StartEdgeConfigurationUpdateOutput.add_member(:last_updated_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "LastUpdatedTime"))
408
+ StartEdgeConfigurationUpdateOutput.add_member(:sync_status, Shapes::ShapeRef.new(shape: SyncStatus, location_name: "SyncStatus"))
409
+ StartEdgeConfigurationUpdateOutput.add_member(:failed_status_details, Shapes::ShapeRef.new(shape: FailedStatusDetails, location_name: "FailedStatusDetails"))
410
+ StartEdgeConfigurationUpdateOutput.add_member(:edge_config, Shapes::ShapeRef.new(shape: EdgeConfig, location_name: "EdgeConfig"))
411
+ StartEdgeConfigurationUpdateOutput.struct_class = Types::StartEdgeConfigurationUpdateOutput
412
+
413
+ StreamEdgeConfigurationNotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
414
+ StreamEdgeConfigurationNotFoundException.struct_class = Types::StreamEdgeConfigurationNotFoundException
415
+
336
416
  StreamInfo.add_member(:device_name, Shapes::ShapeRef.new(shape: DeviceName, location_name: "DeviceName"))
337
417
  StreamInfo.add_member(:stream_name, Shapes::ShapeRef.new(shape: StreamName, location_name: "StreamName"))
338
418
  StreamInfo.add_member(:stream_arn, Shapes::ShapeRef.new(shape: ResourceARN, location_name: "StreamARN"))
@@ -428,6 +508,9 @@ module Aws::KinesisVideo
428
508
 
429
509
  UpdateStreamOutput.struct_class = Types::UpdateStreamOutput
430
510
 
511
+ UploaderConfig.add_member(:schedule_config, Shapes::ShapeRef.new(shape: ScheduleConfig, required: true, location_name: "ScheduleConfig"))
512
+ UploaderConfig.struct_class = Types::UploaderConfig
513
+
431
514
  VersionMismatchException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
432
515
  VersionMismatchException.struct_class = Types::VersionMismatchException
433
516
 
@@ -505,6 +588,19 @@ module Aws::KinesisVideo
505
588
  o.errors << Shapes::ShapeRef.new(shape: ResourceInUseException)
506
589
  end)
507
590
 
591
+ api.add_operation(:describe_edge_configuration, Seahorse::Model::Operation.new.tap do |o|
592
+ o.name = "DescribeEdgeConfiguration"
593
+ o.http_method = "POST"
594
+ o.http_request_uri = "/describeEdgeConfiguration"
595
+ o.input = Shapes::ShapeRef.new(shape: DescribeEdgeConfigurationInput)
596
+ o.output = Shapes::ShapeRef.new(shape: DescribeEdgeConfigurationOutput)
597
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
598
+ o.errors << Shapes::ShapeRef.new(shape: ClientLimitExceededException)
599
+ o.errors << Shapes::ShapeRef.new(shape: InvalidArgumentException)
600
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
601
+ o.errors << Shapes::ShapeRef.new(shape: StreamEdgeConfigurationNotFoundException)
602
+ end)
603
+
508
604
  api.add_operation(:describe_image_generation_configuration, Seahorse::Model::Operation.new.tap do |o|
509
605
  o.name = "DescribeImageGenerationConfiguration"
510
606
  o.http_method = "POST"
@@ -636,6 +732,20 @@ module Aws::KinesisVideo
636
732
  o.errors << Shapes::ShapeRef.new(shape: InvalidResourceFormatException)
637
733
  end)
638
734
 
735
+ api.add_operation(:start_edge_configuration_update, Seahorse::Model::Operation.new.tap do |o|
736
+ o.name = "StartEdgeConfigurationUpdate"
737
+ o.http_method = "POST"
738
+ o.http_request_uri = "/startEdgeConfigurationUpdate"
739
+ o.input = Shapes::ShapeRef.new(shape: StartEdgeConfigurationUpdateInput)
740
+ o.output = Shapes::ShapeRef.new(shape: StartEdgeConfigurationUpdateOutput)
741
+ o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
742
+ o.errors << Shapes::ShapeRef.new(shape: ClientLimitExceededException)
743
+ o.errors << Shapes::ShapeRef.new(shape: InvalidArgumentException)
744
+ o.errors << Shapes::ShapeRef.new(shape: NoDataRetentionException)
745
+ o.errors << Shapes::ShapeRef.new(shape: ResourceInUseException)
746
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
747
+ end)
748
+
639
749
  api.add_operation(:tag_resource, Seahorse::Model::Operation.new.tap do |o|
640
750
  o.name = "TagResource"
641
751
  o.http_method = "POST"
@@ -50,6 +50,9 @@ module Aws::KinesisVideo
50
50
 
51
51
  def initialize(options = {})
52
52
  self[:region] = options[:region]
53
+ if self[:region].nil?
54
+ raise ArgumentError, "Missing required EndpointParameter: :region"
55
+ end
53
56
  self[:use_dual_stack] = options[:use_dual_stack]
54
57
  self[:use_dual_stack] = false if self[:use_dual_stack].nil?
55
58
  if self[:use_dual_stack].nil?
@@ -29,83 +29,81 @@ module Aws::KinesisVideo
29
29
  # @api private
30
30
  RULES = <<-JSON
31
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
- dCI6eyJ1cmwiOiJodHRwczovL2tpbmVzaXN2aWRlby1maXBzLntSZWdpb259
77
- LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3Bl
78
- cnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0s
79
- eyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJGSVBTIGFuZCBEdWFsU3RhY2sg
80
- YXJlIGVuYWJsZWQsIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBw
81
- b3J0IG9uZSBvciBib3RoIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlv
82
- bnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVz
83
- ZUZJUFMifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25k
84
- aXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7
85
- ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3Vs
86
- dCJ9LCJzdXBwb3J0c0ZJUFMiXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMi
87
- Olt7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJj
88
- b25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9raW5l
89
- c2lzdmlkZW8tZmlwcy57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2Ruc1N1
90
- ZmZpeH0iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoi
91
- ZW5kcG9pbnQifV19XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJGSVBT
92
- IGlzIGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBv
93
- cnQgRklQUyIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25zIjpbeyJm
94
- biI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3Rh
95
- Y2sifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRp
96
- b25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZu
97
- IjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9
98
- LCJzdXBwb3J0c0R1YWxTdGFjayJdfV19XSwidHlwZSI6InRyZWUiLCJydWxl
99
- cyI6W3siY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBz
100
- Oi8va2luZXNpc3ZpZGVvLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZHVh
101
- bFN0YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7
102
- fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25zIjpbXSwiZXJy
103
- b3IiOiJEdWFsU3RhY2sgaXMgZW5hYmxlZCBidXQgdGhpcyBwYXJ0aXRpb24g
104
- ZG9lcyBub3Qgc3VwcG9ydCBEdWFsU3RhY2siLCJ0eXBlIjoiZXJyb3IifV19
105
- LHsiY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8v
106
- a2luZXNpc3ZpZGVvLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5zU3Vm
107
- Zml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJl
108
- bmRwb2ludCJ9XX1dfQ==
32
+ bHRJbiI6IkFXUzo6UmVnaW9uIiwicmVxdWlyZWQiOnRydWUsImRvY3VtZW50
33
+ YXRpb24iOiJUaGUgQVdTIHJlZ2lvbiB1c2VkIHRvIGRpc3BhdGNoIHRoZSBy
34
+ ZXF1ZXN0LiIsInR5cGUiOiJTdHJpbmcifSwiVXNlRHVhbFN0YWNrIjp7ImJ1
35
+ aWx0SW4iOiJBV1M6OlVzZUR1YWxTdGFjayIsInJlcXVpcmVkIjp0cnVlLCJk
36
+ ZWZhdWx0IjpmYWxzZSwiZG9jdW1lbnRhdGlvbiI6IldoZW4gdHJ1ZSwgdXNl
37
+ IHRoZSBkdWFsLXN0YWNrIGVuZHBvaW50LiBJZiB0aGUgY29uZmlndXJlZCBl
38
+ bmRwb2ludCBkb2VzIG5vdCBzdXBwb3J0IGR1YWwtc3RhY2ssIGRpc3BhdGNo
39
+ aW5nIHRoZSByZXF1ZXN0IE1BWSByZXR1cm4gYW4gZXJyb3IuIiwidHlwZSI6
40
+ IkJvb2xlYW4ifSwiVXNlRklQUyI6eyJidWlsdEluIjoiQVdTOjpVc2VGSVBT
41
+ IiwicmVxdWlyZWQiOnRydWUsImRlZmF1bHQiOmZhbHNlLCJkb2N1bWVudGF0
42
+ aW9uIjoiV2hlbiB0cnVlLCBzZW5kIHRoaXMgcmVxdWVzdCB0byB0aGUgRklQ
43
+ Uy1jb21wbGlhbnQgcmVnaW9uYWwgZW5kcG9pbnQuIElmIHRoZSBjb25maWd1
44
+ cmVkIGVuZHBvaW50IGRvZXMgbm90IGhhdmUgYSBGSVBTIGNvbXBsaWFudCBl
45
+ bmRwb2ludCwgZGlzcGF0Y2hpbmcgdGhlIHJlcXVlc3Qgd2lsbCByZXR1cm4g
46
+ YW4gZXJyb3IuIiwidHlwZSI6IkJvb2xlYW4ifSwiRW5kcG9pbnQiOnsiYnVp
47
+ bHRJbiI6IlNESzo6RW5kcG9pbnQiLCJyZXF1aXJlZCI6ZmFsc2UsImRvY3Vt
48
+ ZW50YXRpb24iOiJPdmVycmlkZSB0aGUgZW5kcG9pbnQgdXNlZCB0byBzZW5k
49
+ IHRoaXMgcmVxdWVzdCIsInR5cGUiOiJTdHJpbmcifX0sInJ1bGVzIjpbeyJj
50
+ b25kaXRpb25zIjpbeyJmbiI6ImF3cy5wYXJ0aXRpb24iLCJhcmd2IjpbeyJy
51
+ ZWYiOiJSZWdpb24ifV0sImFzc2lnbiI6IlBhcnRpdGlvblJlc3VsdCJ9XSwi
52
+ dHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJp
53
+ c1NldCIsImFyZ3YiOlt7InJlZiI6IkVuZHBvaW50In1dfV0sInR5cGUiOiJ0
54
+ cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVx
55
+ dWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUZJUFMifSx0cnVlXX1dLCJlcnJv
56
+ ciI6IkludmFsaWQgQ29uZmlndXJhdGlvbjogRklQUyBhbmQgY3VzdG9tIGVu
57
+ ZHBvaW50IGFyZSBub3Qgc3VwcG9ydGVkIiwidHlwZSI6ImVycm9yIn0seyJj
58
+ b25kaXRpb25zIjpbXSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0
59
+ aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoi
60
+ VXNlRHVhbFN0YWNrIn0sdHJ1ZV19XSwiZXJyb3IiOiJJbnZhbGlkIENvbmZp
61
+ Z3VyYXRpb246IER1YWxzdGFjayBhbmQgY3VzdG9tIGVuZHBvaW50IGFyZSBu
62
+ b3Qgc3VwcG9ydGVkIiwidHlwZSI6ImVycm9yIn0seyJjb25kaXRpb25zIjpb
63
+ XSwiZW5kcG9pbnQiOnsidXJsIjp7InJlZiI6IkVuZHBvaW50In0sInByb3Bl
64
+ cnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX1d
65
+ fSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3Yi
66
+ Olt7InJlZiI6IlVzZUZJUFMifSx0cnVlXX0seyJmbiI6ImJvb2xlYW5FcXVh
67
+ bHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1dLCJ0
68
+ eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJv
69
+ b2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIsImFy
70
+ Z3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0ZJUFMi
71
+ XX1dfSx7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4i
72
+ OiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0s
73
+ InN1cHBvcnRzRHVhbFN0YWNrIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVz
74
+ IjpbeyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6
75
+ Ly9raW5lc2lzdmlkZW8tZmlwcy57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0
76
+ I2R1YWxTdGFja0Ruc1N1ZmZpeH0iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVy
77
+ cyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19LHsiY29uZGl0aW9ucyI6W10s
78
+ ImVycm9yIjoiRklQUyBhbmQgRHVhbFN0YWNrIGFyZSBlbmFibGVkLCBidXQg
79
+ dGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBvbmUgb3IgYm90aCIs
80
+ InR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xl
81
+ YW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VGSVBTIn0sdHJ1ZV19XSwi
82
+ dHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJi
83
+ b29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJh
84
+ cmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNGSVBT
85
+ Il19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpb
86
+ XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W10sImVu
87
+ ZHBvaW50Ijp7InVybCI6Imh0dHBzOi8va2luZXNpc3ZpZGVvLWZpcHMue1Jl
88
+ Z2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkbnNTdWZmaXh9IiwicHJvcGVydGll
89
+ cyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfV19LHsi
90
+ Y29uZGl0aW9ucyI6W10sImVycm9yIjoiRklQUyBpcyBlbmFibGVkIGJ1dCB0
91
+ aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IEZJUFMiLCJ0eXBlIjoi
92
+ ZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxz
93
+ IiwiYXJndiI6W3sicmVmIjoiVXNlRHVhbFN0YWNrIn0sdHJ1ZV19XSwidHlw
94
+ ZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJib29s
95
+ ZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJhcmd2
96
+ IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNEdWFsU3Rh
97
+ Y2siXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMi
98
+ OltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL2tpbmVzaXN2aWRlby57
99
+ UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2R1YWxTdGFja0Ruc1N1ZmZpeH0i
100
+ LCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9p
101
+ bnQifV19LHsiY29uZGl0aW9ucyI6W10sImVycm9yIjoiRHVhbFN0YWNrIGlz
102
+ IGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQg
103
+ RHVhbFN0YWNrIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOltd
104
+ LCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL2tpbmVzaXN2aWRlby57UmVn
105
+ aW9ufS57UGFydGl0aW9uUmVzdWx0I2Ruc1N1ZmZpeH0iLCJwcm9wZXJ0aWVz
106
+ Ijp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19XX0=
109
107
 
110
108
  JSON
111
109
  end