aws-sdk-kinesisvideo 1.43.0 → 1.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 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