aws-sdk-synthetics 1.27.0 → 1.29.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.
@@ -15,6 +15,9 @@ module Aws::Synthetics
15
15
 
16
16
  ArtifactConfigInput = Shapes::StructureShape.new(name: 'ArtifactConfigInput')
17
17
  ArtifactConfigOutput = Shapes::StructureShape.new(name: 'ArtifactConfigOutput')
18
+ AssociateResourceRequest = Shapes::StructureShape.new(name: 'AssociateResourceRequest')
19
+ AssociateResourceResponse = Shapes::StructureShape.new(name: 'AssociateResourceResponse')
20
+ BadRequestException = Shapes::StructureShape.new(name: 'BadRequestException')
18
21
  BaseScreenshot = Shapes::StructureShape.new(name: 'BaseScreenshot')
19
22
  BaseScreenshotConfigIgnoreCoordinate = Shapes::StringShape.new(name: 'BaseScreenshotConfigIgnoreCoordinate')
20
23
  BaseScreenshotIgnoreCoordinates = Shapes::ListShape.new(name: 'BaseScreenshotIgnoreCoordinates')
@@ -46,8 +49,12 @@ module Aws::Synthetics
46
49
  ConflictException = Shapes::StructureShape.new(name: 'ConflictException')
47
50
  CreateCanaryRequest = Shapes::StructureShape.new(name: 'CreateCanaryRequest')
48
51
  CreateCanaryResponse = Shapes::StructureShape.new(name: 'CreateCanaryResponse')
52
+ CreateGroupRequest = Shapes::StructureShape.new(name: 'CreateGroupRequest')
53
+ CreateGroupResponse = Shapes::StructureShape.new(name: 'CreateGroupResponse')
49
54
  DeleteCanaryRequest = Shapes::StructureShape.new(name: 'DeleteCanaryRequest')
50
55
  DeleteCanaryResponse = Shapes::StructureShape.new(name: 'DeleteCanaryResponse')
56
+ DeleteGroupRequest = Shapes::StructureShape.new(name: 'DeleteGroupRequest')
57
+ DeleteGroupResponse = Shapes::StructureShape.new(name: 'DeleteGroupResponse')
51
58
  DescribeCanariesLastRunNameFilter = Shapes::ListShape.new(name: 'DescribeCanariesLastRunNameFilter')
52
59
  DescribeCanariesLastRunRequest = Shapes::StructureShape.new(name: 'DescribeCanariesLastRunRequest')
53
60
  DescribeCanariesLastRunResponse = Shapes::StructureShape.new(name: 'DescribeCanariesLastRunResponse')
@@ -56,6 +63,8 @@ module Aws::Synthetics
56
63
  DescribeCanariesResponse = Shapes::StructureShape.new(name: 'DescribeCanariesResponse')
57
64
  DescribeRuntimeVersionsRequest = Shapes::StructureShape.new(name: 'DescribeRuntimeVersionsRequest')
58
65
  DescribeRuntimeVersionsResponse = Shapes::StructureShape.new(name: 'DescribeRuntimeVersionsResponse')
66
+ DisassociateResourceRequest = Shapes::StructureShape.new(name: 'DisassociateResourceRequest')
67
+ DisassociateResourceResponse = Shapes::StructureShape.new(name: 'DisassociateResourceResponse')
59
68
  EncryptionMode = Shapes::StringShape.new(name: 'EncryptionMode')
60
69
  EnvironmentVariableName = Shapes::StringShape.new(name: 'EnvironmentVariableName')
61
70
  EnvironmentVariableValue = Shapes::StringShape.new(name: 'EnvironmentVariableValue')
@@ -66,18 +75,37 @@ module Aws::Synthetics
66
75
  GetCanaryResponse = Shapes::StructureShape.new(name: 'GetCanaryResponse')
67
76
  GetCanaryRunsRequest = Shapes::StructureShape.new(name: 'GetCanaryRunsRequest')
68
77
  GetCanaryRunsResponse = Shapes::StructureShape.new(name: 'GetCanaryRunsResponse')
78
+ GetGroupRequest = Shapes::StructureShape.new(name: 'GetGroupRequest')
79
+ GetGroupResponse = Shapes::StructureShape.new(name: 'GetGroupResponse')
80
+ Group = Shapes::StructureShape.new(name: 'Group')
81
+ GroupArn = Shapes::StringShape.new(name: 'GroupArn')
82
+ GroupIdentifier = Shapes::StringShape.new(name: 'GroupIdentifier')
83
+ GroupName = Shapes::StringShape.new(name: 'GroupName')
84
+ GroupSummary = Shapes::StructureShape.new(name: 'GroupSummary')
85
+ GroupSummaryList = Shapes::ListShape.new(name: 'GroupSummaryList')
86
+ InternalFailureException = Shapes::StructureShape.new(name: 'InternalFailureException')
69
87
  InternalServerException = Shapes::StructureShape.new(name: 'InternalServerException')
70
88
  KmsKeyArn = Shapes::StringShape.new(name: 'KmsKeyArn')
89
+ ListAssociatedGroupsRequest = Shapes::StructureShape.new(name: 'ListAssociatedGroupsRequest')
90
+ ListAssociatedGroupsResponse = Shapes::StructureShape.new(name: 'ListAssociatedGroupsResponse')
91
+ ListGroupResourcesRequest = Shapes::StructureShape.new(name: 'ListGroupResourcesRequest')
92
+ ListGroupResourcesResponse = Shapes::StructureShape.new(name: 'ListGroupResourcesResponse')
93
+ ListGroupsRequest = Shapes::StructureShape.new(name: 'ListGroupsRequest')
94
+ ListGroupsResponse = Shapes::StructureShape.new(name: 'ListGroupsResponse')
71
95
  ListTagsForResourceRequest = Shapes::StructureShape.new(name: 'ListTagsForResourceRequest')
72
96
  ListTagsForResourceResponse = Shapes::StructureShape.new(name: 'ListTagsForResourceResponse')
73
97
  MaxCanaryResults = Shapes::IntegerShape.new(name: 'MaxCanaryResults')
74
98
  MaxFifteenMinutesInSeconds = Shapes::IntegerShape.new(name: 'MaxFifteenMinutesInSeconds')
99
+ MaxGroupResults = Shapes::IntegerShape.new(name: 'MaxGroupResults')
75
100
  MaxOneYearInSeconds = Shapes::IntegerShape.new(name: 'MaxOneYearInSeconds')
76
101
  MaxSize100 = Shapes::IntegerShape.new(name: 'MaxSize100')
77
102
  MaxSize1024 = Shapes::IntegerShape.new(name: 'MaxSize1024')
78
103
  MaxSize3008 = Shapes::IntegerShape.new(name: 'MaxSize3008')
104
+ NotFoundException = Shapes::StructureShape.new(name: 'NotFoundException')
79
105
  NullableBoolean = Shapes::BooleanShape.new(name: 'NullableBoolean')
106
+ PaginationToken = Shapes::StringShape.new(name: 'PaginationToken')
80
107
  RequestEntityTooLargeException = Shapes::StructureShape.new(name: 'RequestEntityTooLargeException')
108
+ ResourceArn = Shapes::StringShape.new(name: 'ResourceArn')
81
109
  ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
82
110
  RoleArn = Shapes::StringShape.new(name: 'RoleArn')
83
111
  RuntimeVersion = Shapes::StructureShape.new(name: 'RuntimeVersion')
@@ -85,11 +113,13 @@ module Aws::Synthetics
85
113
  S3EncryptionConfig = Shapes::StructureShape.new(name: 'S3EncryptionConfig')
86
114
  SecurityGroupId = Shapes::StringShape.new(name: 'SecurityGroupId')
87
115
  SecurityGroupIds = Shapes::ListShape.new(name: 'SecurityGroupIds')
116
+ ServiceQuotaExceededException = Shapes::StructureShape.new(name: 'ServiceQuotaExceededException')
88
117
  StartCanaryRequest = Shapes::StructureShape.new(name: 'StartCanaryRequest')
89
118
  StartCanaryResponse = Shapes::StructureShape.new(name: 'StartCanaryResponse')
90
119
  StopCanaryRequest = Shapes::StructureShape.new(name: 'StopCanaryRequest')
91
120
  StopCanaryResponse = Shapes::StructureShape.new(name: 'StopCanaryResponse')
92
121
  String = Shapes::StringShape.new(name: 'String')
122
+ StringList = Shapes::ListShape.new(name: 'StringList')
93
123
  SubnetId = Shapes::StringShape.new(name: 'SubnetId')
94
124
  SubnetIds = Shapes::ListShape.new(name: 'SubnetIds')
95
125
  TagKey = Shapes::StringShape.new(name: 'TagKey')
@@ -100,6 +130,7 @@ module Aws::Synthetics
100
130
  TagValue = Shapes::StringShape.new(name: 'TagValue')
101
131
  Timestamp = Shapes::TimestampShape.new(name: 'Timestamp')
102
132
  Token = Shapes::StringShape.new(name: 'Token')
133
+ TooManyRequestsException = Shapes::StructureShape.new(name: 'TooManyRequestsException')
103
134
  UUID = Shapes::StringShape.new(name: 'UUID')
104
135
  UntagResourceRequest = Shapes::StructureShape.new(name: 'UntagResourceRequest')
105
136
  UntagResourceResponse = Shapes::StructureShape.new(name: 'UntagResourceResponse')
@@ -119,6 +150,15 @@ module Aws::Synthetics
119
150
  ArtifactConfigOutput.add_member(:s3_encryption, Shapes::ShapeRef.new(shape: S3EncryptionConfig, location_name: "S3Encryption"))
120
151
  ArtifactConfigOutput.struct_class = Types::ArtifactConfigOutput
121
152
 
153
+ AssociateResourceRequest.add_member(:group_identifier, Shapes::ShapeRef.new(shape: GroupIdentifier, required: true, location: "uri", location_name: "groupIdentifier"))
154
+ AssociateResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: CanaryArn, required: true, location_name: "ResourceArn"))
155
+ AssociateResourceRequest.struct_class = Types::AssociateResourceRequest
156
+
157
+ AssociateResourceResponse.struct_class = Types::AssociateResourceResponse
158
+
159
+ BadRequestException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
160
+ BadRequestException.struct_class = Types::BadRequestException
161
+
122
162
  BaseScreenshot.add_member(:screenshot_name, Shapes::ShapeRef.new(shape: String, required: true, location_name: "ScreenshotName"))
123
163
  BaseScreenshot.add_member(:ignore_coordinates, Shapes::ShapeRef.new(shape: BaseScreenshotIgnoreCoordinates, location_name: "IgnoreCoordinates"))
124
164
  BaseScreenshot.struct_class = Types::BaseScreenshot
@@ -233,12 +273,24 @@ module Aws::Synthetics
233
273
  CreateCanaryResponse.add_member(:canary, Shapes::ShapeRef.new(shape: Canary, location_name: "Canary"))
234
274
  CreateCanaryResponse.struct_class = Types::CreateCanaryResponse
235
275
 
276
+ CreateGroupRequest.add_member(:name, Shapes::ShapeRef.new(shape: GroupName, required: true, location_name: "Name"))
277
+ CreateGroupRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "Tags"))
278
+ CreateGroupRequest.struct_class = Types::CreateGroupRequest
279
+
280
+ CreateGroupResponse.add_member(:group, Shapes::ShapeRef.new(shape: Group, location_name: "Group"))
281
+ CreateGroupResponse.struct_class = Types::CreateGroupResponse
282
+
236
283
  DeleteCanaryRequest.add_member(:name, Shapes::ShapeRef.new(shape: CanaryName, required: true, location: "uri", location_name: "name"))
237
284
  DeleteCanaryRequest.add_member(:delete_lambda, Shapes::ShapeRef.new(shape: boolean, location: "querystring", location_name: "deleteLambda"))
238
285
  DeleteCanaryRequest.struct_class = Types::DeleteCanaryRequest
239
286
 
240
287
  DeleteCanaryResponse.struct_class = Types::DeleteCanaryResponse
241
288
 
289
+ DeleteGroupRequest.add_member(:group_identifier, Shapes::ShapeRef.new(shape: GroupIdentifier, required: true, location: "uri", location_name: "groupIdentifier"))
290
+ DeleteGroupRequest.struct_class = Types::DeleteGroupRequest
291
+
292
+ DeleteGroupResponse.struct_class = Types::DeleteGroupResponse
293
+
242
294
  DescribeCanariesLastRunNameFilter.member = Shapes::ShapeRef.new(shape: CanaryName)
243
295
 
244
296
  DescribeCanariesLastRunRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "NextToken"))
@@ -269,6 +321,12 @@ module Aws::Synthetics
269
321
  DescribeRuntimeVersionsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "NextToken"))
270
322
  DescribeRuntimeVersionsResponse.struct_class = Types::DescribeRuntimeVersionsResponse
271
323
 
324
+ DisassociateResourceRequest.add_member(:group_identifier, Shapes::ShapeRef.new(shape: GroupIdentifier, required: true, location: "uri", location_name: "groupIdentifier"))
325
+ DisassociateResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: CanaryArn, required: true, location_name: "ResourceArn"))
326
+ DisassociateResourceRequest.struct_class = Types::DisassociateResourceRequest
327
+
328
+ DisassociateResourceResponse.struct_class = Types::DisassociateResourceResponse
329
+
272
330
  EnvironmentVariablesMap.key = Shapes::ShapeRef.new(shape: EnvironmentVariableName)
273
331
  EnvironmentVariablesMap.value = Shapes::ShapeRef.new(shape: EnvironmentVariableValue)
274
332
 
@@ -287,15 +345,68 @@ module Aws::Synthetics
287
345
  GetCanaryRunsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "NextToken"))
288
346
  GetCanaryRunsResponse.struct_class = Types::GetCanaryRunsResponse
289
347
 
348
+ GetGroupRequest.add_member(:group_identifier, Shapes::ShapeRef.new(shape: GroupIdentifier, required: true, location: "uri", location_name: "groupIdentifier"))
349
+ GetGroupRequest.struct_class = Types::GetGroupRequest
350
+
351
+ GetGroupResponse.add_member(:group, Shapes::ShapeRef.new(shape: Group, location_name: "Group"))
352
+ GetGroupResponse.struct_class = Types::GetGroupResponse
353
+
354
+ Group.add_member(:id, Shapes::ShapeRef.new(shape: String, location_name: "Id"))
355
+ Group.add_member(:name, Shapes::ShapeRef.new(shape: GroupName, location_name: "Name"))
356
+ Group.add_member(:arn, Shapes::ShapeRef.new(shape: GroupArn, location_name: "Arn"))
357
+ Group.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "Tags"))
358
+ Group.add_member(:created_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CreatedTime"))
359
+ Group.add_member(:last_modified_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "LastModifiedTime"))
360
+ Group.struct_class = Types::Group
361
+
362
+ GroupSummary.add_member(:id, Shapes::ShapeRef.new(shape: String, location_name: "Id"))
363
+ GroupSummary.add_member(:name, Shapes::ShapeRef.new(shape: GroupName, location_name: "Name"))
364
+ GroupSummary.add_member(:arn, Shapes::ShapeRef.new(shape: GroupArn, location_name: "Arn"))
365
+ GroupSummary.struct_class = Types::GroupSummary
366
+
367
+ GroupSummaryList.member = Shapes::ShapeRef.new(shape: GroupSummary)
368
+
369
+ InternalFailureException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
370
+ InternalFailureException.struct_class = Types::InternalFailureException
371
+
290
372
  InternalServerException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
291
373
  InternalServerException.struct_class = Types::InternalServerException
292
374
 
293
- ListTagsForResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: CanaryArn, required: true, location: "uri", location_name: "resourceArn"))
375
+ ListAssociatedGroupsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
376
+ ListAssociatedGroupsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxGroupResults, location_name: "MaxResults"))
377
+ ListAssociatedGroupsRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: CanaryArn, required: true, location: "uri", location_name: "resourceArn"))
378
+ ListAssociatedGroupsRequest.struct_class = Types::ListAssociatedGroupsRequest
379
+
380
+ ListAssociatedGroupsResponse.add_member(:groups, Shapes::ShapeRef.new(shape: GroupSummaryList, location_name: "Groups"))
381
+ ListAssociatedGroupsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
382
+ ListAssociatedGroupsResponse.struct_class = Types::ListAssociatedGroupsResponse
383
+
384
+ ListGroupResourcesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
385
+ ListGroupResourcesRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxGroupResults, location_name: "MaxResults"))
386
+ ListGroupResourcesRequest.add_member(:group_identifier, Shapes::ShapeRef.new(shape: GroupIdentifier, required: true, location: "uri", location_name: "groupIdentifier"))
387
+ ListGroupResourcesRequest.struct_class = Types::ListGroupResourcesRequest
388
+
389
+ ListGroupResourcesResponse.add_member(:resources, Shapes::ShapeRef.new(shape: StringList, location_name: "Resources"))
390
+ ListGroupResourcesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
391
+ ListGroupResourcesResponse.struct_class = Types::ListGroupResourcesResponse
392
+
393
+ ListGroupsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
394
+ ListGroupsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxGroupResults, location_name: "MaxResults"))
395
+ ListGroupsRequest.struct_class = Types::ListGroupsRequest
396
+
397
+ ListGroupsResponse.add_member(:groups, Shapes::ShapeRef.new(shape: GroupSummaryList, location_name: "Groups"))
398
+ ListGroupsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: Token, location_name: "NextToken"))
399
+ ListGroupsResponse.struct_class = Types::ListGroupsResponse
400
+
401
+ ListTagsForResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: ResourceArn, required: true, location: "uri", location_name: "resourceArn"))
294
402
  ListTagsForResourceRequest.struct_class = Types::ListTagsForResourceRequest
295
403
 
296
404
  ListTagsForResourceResponse.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, location_name: "Tags"))
297
405
  ListTagsForResourceResponse.struct_class = Types::ListTagsForResourceResponse
298
406
 
407
+ NotFoundException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
408
+ NotFoundException.struct_class = Types::NotFoundException
409
+
299
410
  RequestEntityTooLargeException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
300
411
  RequestEntityTooLargeException.struct_class = Types::RequestEntityTooLargeException
301
412
 
@@ -316,6 +427,9 @@ module Aws::Synthetics
316
427
 
317
428
  SecurityGroupIds.member = Shapes::ShapeRef.new(shape: SecurityGroupId)
318
429
 
430
+ ServiceQuotaExceededException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
431
+ ServiceQuotaExceededException.struct_class = Types::ServiceQuotaExceededException
432
+
319
433
  StartCanaryRequest.add_member(:name, Shapes::ShapeRef.new(shape: CanaryName, required: true, location: "uri", location_name: "name"))
320
434
  StartCanaryRequest.struct_class = Types::StartCanaryRequest
321
435
 
@@ -326,6 +440,8 @@ module Aws::Synthetics
326
440
 
327
441
  StopCanaryResponse.struct_class = Types::StopCanaryResponse
328
442
 
443
+ StringList.member = Shapes::ShapeRef.new(shape: String)
444
+
329
445
  SubnetIds.member = Shapes::ShapeRef.new(shape: SubnetId)
330
446
 
331
447
  TagKeyList.member = Shapes::ShapeRef.new(shape: TagKey)
@@ -333,13 +449,16 @@ module Aws::Synthetics
333
449
  TagMap.key = Shapes::ShapeRef.new(shape: TagKey)
334
450
  TagMap.value = Shapes::ShapeRef.new(shape: TagValue)
335
451
 
336
- TagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: CanaryArn, required: true, location: "uri", location_name: "resourceArn"))
452
+ TagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: ResourceArn, required: true, location: "uri", location_name: "resourceArn"))
337
453
  TagResourceRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagMap, required: true, location_name: "Tags"))
338
454
  TagResourceRequest.struct_class = Types::TagResourceRequest
339
455
 
340
456
  TagResourceResponse.struct_class = Types::TagResourceResponse
341
457
 
342
- UntagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: CanaryArn, required: true, location: "uri", location_name: "resourceArn"))
458
+ TooManyRequestsException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
459
+ TooManyRequestsException.struct_class = Types::TooManyRequestsException
460
+
461
+ UntagResourceRequest.add_member(:resource_arn, Shapes::ShapeRef.new(shape: ResourceArn, required: true, location: "uri", location_name: "resourceArn"))
343
462
  UntagResourceRequest.add_member(:tag_keys, Shapes::ShapeRef.new(shape: TagKeyList, required: true, location: "querystring", location_name: "tagKeys"))
344
463
  UntagResourceRequest.struct_class = Types::UntagResourceRequest
345
464
 
@@ -400,6 +519,19 @@ module Aws::Synthetics
400
519
  "uid" => "synthetics-2017-10-11",
401
520
  }
402
521
 
522
+ api.add_operation(:associate_resource, Seahorse::Model::Operation.new.tap do |o|
523
+ o.name = "AssociateResource"
524
+ o.http_method = "PATCH"
525
+ o.http_request_uri = "/group/{groupIdentifier}/associate"
526
+ o.input = Shapes::ShapeRef.new(shape: AssociateResourceRequest)
527
+ o.output = Shapes::ShapeRef.new(shape: AssociateResourceResponse)
528
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
529
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
530
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
531
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
532
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
533
+ end)
534
+
403
535
  api.add_operation(:create_canary, Seahorse::Model::Operation.new.tap do |o|
404
536
  o.name = "CreateCanary"
405
537
  o.http_method = "POST"
@@ -411,6 +543,18 @@ module Aws::Synthetics
411
543
  o.errors << Shapes::ShapeRef.new(shape: RequestEntityTooLargeException)
412
544
  end)
413
545
 
546
+ api.add_operation(:create_group, Seahorse::Model::Operation.new.tap do |o|
547
+ o.name = "CreateGroup"
548
+ o.http_method = "POST"
549
+ o.http_request_uri = "/group"
550
+ o.input = Shapes::ShapeRef.new(shape: CreateGroupRequest)
551
+ o.output = Shapes::ShapeRef.new(shape: CreateGroupResponse)
552
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
553
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
554
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
555
+ o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
556
+ end)
557
+
414
558
  api.add_operation(:delete_canary, Seahorse::Model::Operation.new.tap do |o|
415
559
  o.name = "DeleteCanary"
416
560
  o.http_method = "DELETE"
@@ -423,6 +567,18 @@ module Aws::Synthetics
423
567
  o.errors << Shapes::ShapeRef.new(shape: ConflictException)
424
568
  end)
425
569
 
570
+ api.add_operation(:delete_group, Seahorse::Model::Operation.new.tap do |o|
571
+ o.name = "DeleteGroup"
572
+ o.http_method = "DELETE"
573
+ o.http_request_uri = "/group/{groupIdentifier}"
574
+ o.input = Shapes::ShapeRef.new(shape: DeleteGroupRequest)
575
+ o.output = Shapes::ShapeRef.new(shape: DeleteGroupResponse)
576
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
577
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
578
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
579
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
580
+ end)
581
+
426
582
  api.add_operation(:describe_canaries, Seahorse::Model::Operation.new.tap do |o|
427
583
  o.name = "DescribeCanaries"
428
584
  o.http_method = "POST"
@@ -471,6 +627,18 @@ module Aws::Synthetics
471
627
  )
472
628
  end)
473
629
 
630
+ api.add_operation(:disassociate_resource, Seahorse::Model::Operation.new.tap do |o|
631
+ o.name = "DisassociateResource"
632
+ o.http_method = "PATCH"
633
+ o.http_request_uri = "/group/{groupIdentifier}/disassociate"
634
+ o.input = Shapes::ShapeRef.new(shape: DisassociateResourceRequest)
635
+ o.output = Shapes::ShapeRef.new(shape: DisassociateResourceResponse)
636
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
637
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
638
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
639
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
640
+ end)
641
+
474
642
  api.add_operation(:get_canary, Seahorse::Model::Operation.new.tap do |o|
475
643
  o.name = "GetCanary"
476
644
  o.http_method = "GET"
@@ -498,15 +666,80 @@ module Aws::Synthetics
498
666
  )
499
667
  end)
500
668
 
669
+ api.add_operation(:get_group, Seahorse::Model::Operation.new.tap do |o|
670
+ o.name = "GetGroup"
671
+ o.http_method = "GET"
672
+ o.http_request_uri = "/group/{groupIdentifier}"
673
+ o.input = Shapes::ShapeRef.new(shape: GetGroupRequest)
674
+ o.output = Shapes::ShapeRef.new(shape: GetGroupResponse)
675
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
676
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
677
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
678
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
679
+ end)
680
+
681
+ api.add_operation(:list_associated_groups, Seahorse::Model::Operation.new.tap do |o|
682
+ o.name = "ListAssociatedGroups"
683
+ o.http_method = "POST"
684
+ o.http_request_uri = "/resource/{resourceArn}/groups"
685
+ o.input = Shapes::ShapeRef.new(shape: ListAssociatedGroupsRequest)
686
+ o.output = Shapes::ShapeRef.new(shape: ListAssociatedGroupsResponse)
687
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
688
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
689
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
690
+ o[:pager] = Aws::Pager.new(
691
+ limit_key: "max_results",
692
+ tokens: {
693
+ "next_token" => "next_token"
694
+ }
695
+ )
696
+ end)
697
+
698
+ api.add_operation(:list_group_resources, Seahorse::Model::Operation.new.tap do |o|
699
+ o.name = "ListGroupResources"
700
+ o.http_method = "POST"
701
+ o.http_request_uri = "/group/{groupIdentifier}/resources"
702
+ o.input = Shapes::ShapeRef.new(shape: ListGroupResourcesRequest)
703
+ o.output = Shapes::ShapeRef.new(shape: ListGroupResourcesResponse)
704
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
705
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
706
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
707
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
708
+ o[:pager] = Aws::Pager.new(
709
+ limit_key: "max_results",
710
+ tokens: {
711
+ "next_token" => "next_token"
712
+ }
713
+ )
714
+ end)
715
+
716
+ api.add_operation(:list_groups, Seahorse::Model::Operation.new.tap do |o|
717
+ o.name = "ListGroups"
718
+ o.http_method = "POST"
719
+ o.http_request_uri = "/groups"
720
+ o.input = Shapes::ShapeRef.new(shape: ListGroupsRequest)
721
+ o.output = Shapes::ShapeRef.new(shape: ListGroupsResponse)
722
+ o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
723
+ o.errors << Shapes::ShapeRef.new(shape: ValidationException)
724
+ o[:pager] = Aws::Pager.new(
725
+ limit_key: "max_results",
726
+ tokens: {
727
+ "next_token" => "next_token"
728
+ }
729
+ )
730
+ end)
731
+
501
732
  api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o|
502
733
  o.name = "ListTagsForResource"
503
734
  o.http_method = "GET"
504
735
  o.http_request_uri = "/tags/{resourceArn}"
505
736
  o.input = Shapes::ShapeRef.new(shape: ListTagsForResourceRequest)
506
737
  o.output = Shapes::ShapeRef.new(shape: ListTagsForResourceResponse)
507
- o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
508
- o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
509
- o.errors << Shapes::ShapeRef.new(shape: ValidationException)
738
+ o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
739
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
740
+ o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException)
741
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
742
+ o.errors << Shapes::ShapeRef.new(shape: InternalFailureException)
510
743
  end)
511
744
 
512
745
  api.add_operation(:start_canary, Seahorse::Model::Operation.new.tap do |o|
@@ -539,9 +772,11 @@ module Aws::Synthetics
539
772
  o.http_request_uri = "/tags/{resourceArn}"
540
773
  o.input = Shapes::ShapeRef.new(shape: TagResourceRequest)
541
774
  o.output = Shapes::ShapeRef.new(shape: TagResourceResponse)
542
- o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
543
- o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
544
- o.errors << Shapes::ShapeRef.new(shape: ValidationException)
775
+ o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
776
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
777
+ o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException)
778
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
779
+ o.errors << Shapes::ShapeRef.new(shape: InternalFailureException)
545
780
  end)
546
781
 
547
782
  api.add_operation(:untag_resource, Seahorse::Model::Operation.new.tap do |o|
@@ -550,9 +785,11 @@ module Aws::Synthetics
550
785
  o.http_request_uri = "/tags/{resourceArn}"
551
786
  o.input = Shapes::ShapeRef.new(shape: UntagResourceRequest)
552
787
  o.output = Shapes::ShapeRef.new(shape: UntagResourceResponse)
553
- o.errors << Shapes::ShapeRef.new(shape: InternalServerException)
554
- o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
555
- o.errors << Shapes::ShapeRef.new(shape: ValidationException)
788
+ o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
789
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
790
+ o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException)
791
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
792
+ o.errors << Shapes::ShapeRef.new(shape: InternalFailureException)
556
793
  end)
557
794
 
558
795
  api.add_operation(:update_canary, Seahorse::Model::Operation.new.tap do |o|
@@ -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::Synthetics
11
+ # Endpoint parameters used to influence endpoints per request.
12
+ #
13
+ # @!attribute region
14
+ # The AWS region used to dispatch the request.
15
+ #
16
+ # @return [String]
17
+ #
18
+ # @!attribute use_dual_stack
19
+ # When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
20
+ #
21
+ # @return [Boolean]
22
+ #
23
+ # @!attribute use_fips
24
+ # When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
25
+ #
26
+ # @return [Boolean]
27
+ #
28
+ # @!attribute endpoint
29
+ # Override the endpoint used to send this request
30
+ #
31
+ # @return [String]
32
+ #
33
+ EndpointParameters = Struct.new(
34
+ :region,
35
+ :use_dual_stack,
36
+ :use_fips,
37
+ :endpoint,
38
+ ) do
39
+ include Aws::Structure
40
+
41
+ # @api private
42
+ class << self
43
+ PARAM_MAP = {
44
+ 'Region' => :region,
45
+ 'UseDualStack' => :use_dual_stack,
46
+ 'UseFIPS' => :use_fips,
47
+ 'Endpoint' => :endpoint,
48
+ }.freeze
49
+ end
50
+
51
+ def initialize(options = {})
52
+ self[:region] = options[:region]
53
+ self[:use_dual_stack] = options[:use_dual_stack]
54
+ self[:use_dual_stack] = false if self[:use_dual_stack].nil?
55
+ if self[:use_dual_stack].nil?
56
+ raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack"
57
+ end
58
+ self[:use_fips] = options[:use_fips]
59
+ self[:use_fips] = false if self[:use_fips].nil?
60
+ if self[:use_fips].nil?
61
+ raise ArgumentError, "Missing required EndpointParameter: :use_fips"
62
+ end
63
+ self[:endpoint] = options[:endpoint]
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::Synthetics
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
+ dCI6eyJ1cmwiOiJodHRwczovL3N5bnRoZXRpY3MtZmlwcy57UmVnaW9ufS57
77
+ UGFydGl0aW9uUmVzdWx0I2R1YWxTdGFja0Ruc1N1ZmZpeH0iLCJwcm9wZXJ0
78
+ aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19LHsi
79
+ Y29uZGl0aW9ucyI6W10sImVycm9yIjoiRklQUyBhbmQgRHVhbFN0YWNrIGFy
80
+ ZSBlbmFibGVkLCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9y
81
+ dCBvbmUgb3IgYm90aCIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25z
82
+ IjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VG
83
+ SVBTIn0sdHJ1ZV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0
84
+ aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJm
85
+ biI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQi
86
+ fSwic3VwcG9ydHNGSVBTIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpb
87
+ eyJjb25kaXRpb25zIjpbXSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29u
88
+ ZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vc3ludGhl
89
+ dGljcy1maXBzLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZG5zU3VmZml4
90
+ fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRw
91
+ b2ludCJ9XX1dfSx7ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkZJUFMgaXMg
92
+ ZW5hYmxlZCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBG
93
+ SVBTIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoi
94
+ Ym9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxTdGFjayJ9
95
+ LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMi
96
+ Olt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4iOiJn
97
+ ZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0sInN1
98
+ cHBvcnRzRHVhbFN0YWNrIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpb
99
+ eyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9z
100
+ eW50aGV0aWNzLntSZWdpb259LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNr
101
+ RG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5
102
+ cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJE
103
+ dWFsU3RhY2sgaXMgZW5hYmxlZCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBu
104
+ b3Qgc3VwcG9ydCBEdWFsU3RhY2siLCJ0eXBlIjoiZXJyb3IifV19LHsiY29u
105
+ ZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vc3ludGhl
106
+ dGljcy57UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2Ruc1N1ZmZpeH0iLCJw
107
+ cm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQi
108
+ fV19XX0=
109
+
110
+ JSON
111
+ end
112
+ end