aws-sdk-sesv2 1.29.0 → 1.30.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,6 +21,10 @@ module Aws::SESV2
21
21
  AmazonResourceName = Shapes::StringShape.new(name: 'AmazonResourceName')
22
22
  AttributesData = Shapes::StringShape.new(name: 'AttributesData')
23
23
  BadRequestException = Shapes::StructureShape.new(name: 'BadRequestException')
24
+ BatchGetMetricDataQueries = Shapes::ListShape.new(name: 'BatchGetMetricDataQueries')
25
+ BatchGetMetricDataQuery = Shapes::StructureShape.new(name: 'BatchGetMetricDataQuery')
26
+ BatchGetMetricDataRequest = Shapes::StructureShape.new(name: 'BatchGetMetricDataRequest')
27
+ BatchGetMetricDataResponse = Shapes::StructureShape.new(name: 'BatchGetMetricDataResponse')
24
28
  BehaviorOnMxFailure = Shapes::StringShape.new(name: 'BehaviorOnMxFailure')
25
29
  BlacklistEntries = Shapes::ListShape.new(name: 'BlacklistEntries')
26
30
  BlacklistEntry = Shapes::StructureShape.new(name: 'BlacklistEntry')
@@ -52,6 +56,7 @@ module Aws::SESV2
52
56
  ContactListImportAction = Shapes::StringShape.new(name: 'ContactListImportAction')
53
57
  ContactListName = Shapes::StringShape.new(name: 'ContactListName')
54
58
  Content = Shapes::StructureShape.new(name: 'Content')
59
+ Counter = Shapes::IntegerShape.new(name: 'Counter')
55
60
  CreateConfigurationSetEventDestinationRequest = Shapes::StructureShape.new(name: 'CreateConfigurationSetEventDestinationRequest')
56
61
  CreateConfigurationSetEventDestinationResponse = Shapes::StructureShape.new(name: 'CreateConfigurationSetEventDestinationResponse')
57
62
  CreateConfigurationSetRequest = Shapes::StructureShape.new(name: 'CreateConfigurationSetRequest')
@@ -79,6 +84,8 @@ module Aws::SESV2
79
84
  CustomVerificationEmailTemplatesList = Shapes::ListShape.new(name: 'CustomVerificationEmailTemplatesList')
80
85
  DailyVolume = Shapes::StructureShape.new(name: 'DailyVolume')
81
86
  DailyVolumes = Shapes::ListShape.new(name: 'DailyVolumes')
87
+ DashboardAttributes = Shapes::StructureShape.new(name: 'DashboardAttributes')
88
+ DashboardOptions = Shapes::StructureShape.new(name: 'DashboardOptions')
82
89
  DataFormat = Shapes::StringShape.new(name: 'DataFormat')
83
90
  DedicatedIp = Shapes::StructureShape.new(name: 'DedicatedIp')
84
91
  DedicatedIpList = Shapes::ListShape.new(name: 'DedicatedIpList')
@@ -114,6 +121,7 @@ module Aws::SESV2
114
121
  Destination = Shapes::StructureShape.new(name: 'Destination')
115
122
  DimensionName = Shapes::StringShape.new(name: 'DimensionName')
116
123
  DimensionValueSource = Shapes::StringShape.new(name: 'DimensionValueSource')
124
+ Dimensions = Shapes::MapShape.new(name: 'Dimensions')
117
125
  DisplayName = Shapes::StringShape.new(name: 'DisplayName')
118
126
  DkimAttributes = Shapes::StructureShape.new(name: 'DkimAttributes')
119
127
  DkimSigningAttributes = Shapes::StructureShape.new(name: 'DkimSigningAttributes')
@@ -155,6 +163,7 @@ module Aws::SESV2
155
163
  FailedRecordsS3Url = Shapes::StringShape.new(name: 'FailedRecordsS3Url')
156
164
  FailureInfo = Shapes::StructureShape.new(name: 'FailureInfo')
157
165
  FailureRedirectionURL = Shapes::StringShape.new(name: 'FailureRedirectionURL')
166
+ FeatureStatus = Shapes::StringShape.new(name: 'FeatureStatus')
158
167
  FeedbackId = Shapes::StringShape.new(name: 'FeedbackId')
159
168
  GeneralEnforcementStatus = Shapes::StringShape.new(name: 'GeneralEnforcementStatus')
160
169
  GetAccountRequest = Shapes::StructureShape.new(name: 'GetAccountRequest')
@@ -195,6 +204,8 @@ module Aws::SESV2
195
204
  GetImportJobResponse = Shapes::StructureShape.new(name: 'GetImportJobResponse')
196
205
  GetSuppressedDestinationRequest = Shapes::StructureShape.new(name: 'GetSuppressedDestinationRequest')
197
206
  GetSuppressedDestinationResponse = Shapes::StructureShape.new(name: 'GetSuppressedDestinationResponse')
207
+ GuardianAttributes = Shapes::StructureShape.new(name: 'GuardianAttributes')
208
+ GuardianOptions = Shapes::StructureShape.new(name: 'GuardianOptions')
198
209
  Identity = Shapes::StringShape.new(name: 'Identity')
199
210
  IdentityInfo = Shapes::StructureShape.new(name: 'IdentityInfo')
200
211
  IdentityInfoList = Shapes::ListShape.new(name: 'IdentityInfoList')
@@ -206,6 +217,7 @@ module Aws::SESV2
206
217
  ImportJobSummary = Shapes::StructureShape.new(name: 'ImportJobSummary')
207
218
  ImportJobSummaryList = Shapes::ListShape.new(name: 'ImportJobSummaryList')
208
219
  InboxPlacementTrackingOption = Shapes::StructureShape.new(name: 'InboxPlacementTrackingOption')
220
+ InternalServiceErrorException = Shapes::StructureShape.new(name: 'InternalServiceErrorException')
209
221
  InvalidNextTokenException = Shapes::StructureShape.new(name: 'InvalidNextTokenException')
210
222
  Ip = Shapes::StringShape.new(name: 'Ip')
211
223
  IpList = Shapes::ListShape.new(name: 'IpList')
@@ -243,6 +255,11 @@ module Aws::SESV2
243
255
  ListOfContactLists = Shapes::ListShape.new(name: 'ListOfContactLists')
244
256
  ListOfContacts = Shapes::ListShape.new(name: 'ListOfContacts')
245
257
  ListOfDedicatedIpPools = Shapes::ListShape.new(name: 'ListOfDedicatedIpPools')
258
+ ListRecommendationFilterValue = Shapes::StringShape.new(name: 'ListRecommendationFilterValue')
259
+ ListRecommendationsFilter = Shapes::MapShape.new(name: 'ListRecommendationsFilter')
260
+ ListRecommendationsFilterKey = Shapes::StringShape.new(name: 'ListRecommendationsFilterKey')
261
+ ListRecommendationsRequest = Shapes::StructureShape.new(name: 'ListRecommendationsRequest')
262
+ ListRecommendationsResponse = Shapes::StructureShape.new(name: 'ListRecommendationsResponse')
246
263
  ListSuppressedDestinationsRequest = Shapes::StructureShape.new(name: 'ListSuppressedDestinationsRequest')
247
264
  ListSuppressedDestinationsResponse = Shapes::StructureShape.new(name: 'ListSuppressedDestinationsResponse')
248
265
  ListTagsForResourceRequest = Shapes::StructureShape.new(name: 'ListTagsForResourceRequest')
@@ -263,6 +280,15 @@ module Aws::SESV2
263
280
  MessageTagList = Shapes::ListShape.new(name: 'MessageTagList')
264
281
  MessageTagName = Shapes::StringShape.new(name: 'MessageTagName')
265
282
  MessageTagValue = Shapes::StringShape.new(name: 'MessageTagValue')
283
+ Metric = Shapes::StringShape.new(name: 'Metric')
284
+ MetricDataError = Shapes::StructureShape.new(name: 'MetricDataError')
285
+ MetricDataErrorList = Shapes::ListShape.new(name: 'MetricDataErrorList')
286
+ MetricDataResult = Shapes::StructureShape.new(name: 'MetricDataResult')
287
+ MetricDataResultList = Shapes::ListShape.new(name: 'MetricDataResultList')
288
+ MetricDimensionName = Shapes::StringShape.new(name: 'MetricDimensionName')
289
+ MetricDimensionValue = Shapes::StringShape.new(name: 'MetricDimensionValue')
290
+ MetricNamespace = Shapes::StringShape.new(name: 'MetricNamespace')
291
+ MetricValueList = Shapes::ListShape.new(name: 'MetricValueList')
266
292
  NextToken = Shapes::StringShape.new(name: 'NextToken')
267
293
  NotFoundException = Shapes::StructureShape.new(name: 'NotFoundException')
268
294
  OutboundMessageId = Shapes::StringShape.new(name: 'OutboundMessageId')
@@ -285,6 +311,8 @@ module Aws::SESV2
285
311
  PutAccountSendingAttributesResponse = Shapes::StructureShape.new(name: 'PutAccountSendingAttributesResponse')
286
312
  PutAccountSuppressionAttributesRequest = Shapes::StructureShape.new(name: 'PutAccountSuppressionAttributesRequest')
287
313
  PutAccountSuppressionAttributesResponse = Shapes::StructureShape.new(name: 'PutAccountSuppressionAttributesResponse')
314
+ PutAccountVdmAttributesRequest = Shapes::StructureShape.new(name: 'PutAccountVdmAttributesRequest')
315
+ PutAccountVdmAttributesResponse = Shapes::StructureShape.new(name: 'PutAccountVdmAttributesResponse')
288
316
  PutConfigurationSetDeliveryOptionsRequest = Shapes::StructureShape.new(name: 'PutConfigurationSetDeliveryOptionsRequest')
289
317
  PutConfigurationSetDeliveryOptionsResponse = Shapes::StructureShape.new(name: 'PutConfigurationSetDeliveryOptionsResponse')
290
318
  PutConfigurationSetReputationOptionsRequest = Shapes::StructureShape.new(name: 'PutConfigurationSetReputationOptionsRequest')
@@ -295,6 +323,8 @@ module Aws::SESV2
295
323
  PutConfigurationSetSuppressionOptionsResponse = Shapes::StructureShape.new(name: 'PutConfigurationSetSuppressionOptionsResponse')
296
324
  PutConfigurationSetTrackingOptionsRequest = Shapes::StructureShape.new(name: 'PutConfigurationSetTrackingOptionsRequest')
297
325
  PutConfigurationSetTrackingOptionsResponse = Shapes::StructureShape.new(name: 'PutConfigurationSetTrackingOptionsResponse')
326
+ PutConfigurationSetVdmOptionsRequest = Shapes::StructureShape.new(name: 'PutConfigurationSetVdmOptionsRequest')
327
+ PutConfigurationSetVdmOptionsResponse = Shapes::StructureShape.new(name: 'PutConfigurationSetVdmOptionsResponse')
298
328
  PutDedicatedIpInPoolRequest = Shapes::StructureShape.new(name: 'PutDedicatedIpInPoolRequest')
299
329
  PutDedicatedIpInPoolResponse = Shapes::StructureShape.new(name: 'PutDedicatedIpInPoolResponse')
300
330
  PutDedicatedIpWarmupAttributesRequest = Shapes::StructureShape.new(name: 'PutDedicatedIpWarmupAttributesRequest')
@@ -313,9 +343,18 @@ module Aws::SESV2
313
343
  PutEmailIdentityMailFromAttributesResponse = Shapes::StructureShape.new(name: 'PutEmailIdentityMailFromAttributesResponse')
314
344
  PutSuppressedDestinationRequest = Shapes::StructureShape.new(name: 'PutSuppressedDestinationRequest')
315
345
  PutSuppressedDestinationResponse = Shapes::StructureShape.new(name: 'PutSuppressedDestinationResponse')
346
+ QueryErrorCode = Shapes::StringShape.new(name: 'QueryErrorCode')
347
+ QueryErrorMessage = Shapes::StringShape.new(name: 'QueryErrorMessage')
348
+ QueryIdentifier = Shapes::StringShape.new(name: 'QueryIdentifier')
316
349
  RawMessage = Shapes::StructureShape.new(name: 'RawMessage')
317
350
  RawMessageData = Shapes::BlobShape.new(name: 'RawMessageData')
318
351
  RblName = Shapes::StringShape.new(name: 'RblName')
352
+ Recommendation = Shapes::StructureShape.new(name: 'Recommendation')
353
+ RecommendationDescription = Shapes::StringShape.new(name: 'RecommendationDescription')
354
+ RecommendationImpact = Shapes::StringShape.new(name: 'RecommendationImpact')
355
+ RecommendationStatus = Shapes::StringShape.new(name: 'RecommendationStatus')
356
+ RecommendationType = Shapes::StringShape.new(name: 'RecommendationType')
357
+ RecommendationsList = Shapes::ListShape.new(name: 'RecommendationsList')
319
358
  RenderedEmailTemplate = Shapes::StringShape.new(name: 'RenderedEmailTemplate')
320
359
  ReplacementEmailContent = Shapes::StructureShape.new(name: 'ReplacementEmailContent')
321
360
  ReplacementTemplate = Shapes::StructureShape.new(name: 'ReplacementTemplate')
@@ -364,6 +403,7 @@ module Aws::SESV2
364
403
  TestRenderEmailTemplateRequest = Shapes::StructureShape.new(name: 'TestRenderEmailTemplateRequest')
365
404
  TestRenderEmailTemplateResponse = Shapes::StructureShape.new(name: 'TestRenderEmailTemplateResponse')
366
405
  Timestamp = Shapes::TimestampShape.new(name: 'Timestamp')
406
+ TimestampList = Shapes::ListShape.new(name: 'TimestampList')
367
407
  TlsPolicy = Shapes::StringShape.new(name: 'TlsPolicy')
368
408
  TooManyRequestsException = Shapes::StructureShape.new(name: 'TooManyRequestsException')
369
409
  Topic = Shapes::StructureShape.new(name: 'Topic')
@@ -390,6 +430,8 @@ module Aws::SESV2
390
430
  UpdateEmailTemplateResponse = Shapes::StructureShape.new(name: 'UpdateEmailTemplateResponse')
391
431
  UseCaseDescription = Shapes::StringShape.new(name: 'UseCaseDescription')
392
432
  UseDefaultIfPreferenceUnavailable = Shapes::BooleanShape.new(name: 'UseDefaultIfPreferenceUnavailable')
433
+ VdmAttributes = Shapes::StructureShape.new(name: 'VdmAttributes')
434
+ VdmOptions = Shapes::StructureShape.new(name: 'VdmOptions')
393
435
  VerificationStatus = Shapes::StringShape.new(name: 'VerificationStatus')
394
436
  Volume = Shapes::IntegerShape.new(name: 'Volume')
395
437
  VolumeStatistics = Shapes::StructureShape.new(name: 'VolumeStatistics')
@@ -412,6 +454,23 @@ module Aws::SESV2
412
454
 
413
455
  BadRequestException.struct_class = Types::BadRequestException
414
456
 
457
+ BatchGetMetricDataQueries.member = Shapes::ShapeRef.new(shape: BatchGetMetricDataQuery)
458
+
459
+ BatchGetMetricDataQuery.add_member(:id, Shapes::ShapeRef.new(shape: QueryIdentifier, required: true, location_name: "Id"))
460
+ BatchGetMetricDataQuery.add_member(:namespace, Shapes::ShapeRef.new(shape: MetricNamespace, required: true, location_name: "Namespace"))
461
+ BatchGetMetricDataQuery.add_member(:metric, Shapes::ShapeRef.new(shape: Metric, required: true, location_name: "Metric"))
462
+ BatchGetMetricDataQuery.add_member(:dimensions, Shapes::ShapeRef.new(shape: Dimensions, location_name: "Dimensions"))
463
+ BatchGetMetricDataQuery.add_member(:start_date, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "StartDate"))
464
+ BatchGetMetricDataQuery.add_member(:end_date, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "EndDate"))
465
+ BatchGetMetricDataQuery.struct_class = Types::BatchGetMetricDataQuery
466
+
467
+ BatchGetMetricDataRequest.add_member(:queries, Shapes::ShapeRef.new(shape: BatchGetMetricDataQueries, required: true, location_name: "Queries"))
468
+ BatchGetMetricDataRequest.struct_class = Types::BatchGetMetricDataRequest
469
+
470
+ BatchGetMetricDataResponse.add_member(:results, Shapes::ShapeRef.new(shape: MetricDataResultList, location_name: "Results"))
471
+ BatchGetMetricDataResponse.add_member(:errors, Shapes::ShapeRef.new(shape: MetricDataErrorList, location_name: "Errors"))
472
+ BatchGetMetricDataResponse.struct_class = Types::BatchGetMetricDataResponse
473
+
415
474
  BlacklistEntries.member = Shapes::ShapeRef.new(shape: BlacklistEntry)
416
475
 
417
476
  BlacklistEntry.add_member(:rbl_name, Shapes::ShapeRef.new(shape: RblName, location_name: "RblName"))
@@ -494,6 +553,7 @@ module Aws::SESV2
494
553
  CreateConfigurationSetRequest.add_member(:sending_options, Shapes::ShapeRef.new(shape: SendingOptions, location_name: "SendingOptions"))
495
554
  CreateConfigurationSetRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags"))
496
555
  CreateConfigurationSetRequest.add_member(:suppression_options, Shapes::ShapeRef.new(shape: SuppressionOptions, location_name: "SuppressionOptions"))
556
+ CreateConfigurationSetRequest.add_member(:vdm_options, Shapes::ShapeRef.new(shape: VdmOptions, location_name: "VdmOptions"))
497
557
  CreateConfigurationSetRequest.struct_class = Types::CreateConfigurationSetRequest
498
558
 
499
559
  CreateConfigurationSetResponse.struct_class = Types::CreateConfigurationSetResponse
@@ -589,6 +649,12 @@ module Aws::SESV2
589
649
 
590
650
  DailyVolumes.member = Shapes::ShapeRef.new(shape: DailyVolume)
591
651
 
652
+ DashboardAttributes.add_member(:engagement_metrics, Shapes::ShapeRef.new(shape: FeatureStatus, location_name: "EngagementMetrics"))
653
+ DashboardAttributes.struct_class = Types::DashboardAttributes
654
+
655
+ DashboardOptions.add_member(:engagement_metrics, Shapes::ShapeRef.new(shape: FeatureStatus, location_name: "EngagementMetrics"))
656
+ DashboardOptions.struct_class = Types::DashboardOptions
657
+
592
658
  DedicatedIp.add_member(:ip, Shapes::ShapeRef.new(shape: Ip, required: true, location_name: "Ip"))
593
659
  DedicatedIp.add_member(:warmup_status, Shapes::ShapeRef.new(shape: WarmupStatus, required: true, location_name: "WarmupStatus"))
594
660
  DedicatedIp.add_member(:warmup_percentage, Shapes::ShapeRef.new(shape: Percentage100Wrapper, required: true, location_name: "WarmupPercentage"))
@@ -673,6 +739,9 @@ module Aws::SESV2
673
739
  Destination.add_member(:bcc_addresses, Shapes::ShapeRef.new(shape: EmailAddressList, location_name: "BccAddresses"))
674
740
  Destination.struct_class = Types::Destination
675
741
 
742
+ Dimensions.key = Shapes::ShapeRef.new(shape: MetricDimensionName)
743
+ Dimensions.value = Shapes::ShapeRef.new(shape: MetricDimensionValue)
744
+
676
745
  DkimAttributes.add_member(:signing_enabled, Shapes::ShapeRef.new(shape: Enabled, location_name: "SigningEnabled"))
677
746
  DkimAttributes.add_member(:status, Shapes::ShapeRef.new(shape: DkimStatus, location_name: "Status"))
678
747
  DkimAttributes.add_member(:tokens, Shapes::ShapeRef.new(shape: DnsTokenList, location_name: "Tokens"))
@@ -777,6 +846,7 @@ module Aws::SESV2
777
846
  GetAccountResponse.add_member(:sending_enabled, Shapes::ShapeRef.new(shape: Enabled, location_name: "SendingEnabled"))
778
847
  GetAccountResponse.add_member(:suppression_attributes, Shapes::ShapeRef.new(shape: SuppressionAttributes, location_name: "SuppressionAttributes"))
779
848
  GetAccountResponse.add_member(:details, Shapes::ShapeRef.new(shape: AccountDetails, location_name: "Details"))
849
+ GetAccountResponse.add_member(:vdm_attributes, Shapes::ShapeRef.new(shape: VdmAttributes, location_name: "VdmAttributes"))
780
850
  GetAccountResponse.struct_class = Types::GetAccountResponse
781
851
 
782
852
  GetBlacklistReportsRequest.add_member(:blacklist_item_names, Shapes::ShapeRef.new(shape: BlacklistItemNames, required: true, location: "querystring", location_name: "BlacklistItemNames"))
@@ -801,6 +871,7 @@ module Aws::SESV2
801
871
  GetConfigurationSetResponse.add_member(:sending_options, Shapes::ShapeRef.new(shape: SendingOptions, location_name: "SendingOptions"))
802
872
  GetConfigurationSetResponse.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags"))
803
873
  GetConfigurationSetResponse.add_member(:suppression_options, Shapes::ShapeRef.new(shape: SuppressionOptions, location_name: "SuppressionOptions"))
874
+ GetConfigurationSetResponse.add_member(:vdm_options, Shapes::ShapeRef.new(shape: VdmOptions, location_name: "VdmOptions"))
804
875
  GetConfigurationSetResponse.struct_class = Types::GetConfigurationSetResponse
805
876
 
806
877
  GetContactListRequest.add_member(:contact_list_name, Shapes::ShapeRef.new(shape: ContactListName, required: true, location: "uri", location_name: "ContactListName"))
@@ -941,6 +1012,12 @@ module Aws::SESV2
941
1012
  GetSuppressedDestinationResponse.add_member(:suppressed_destination, Shapes::ShapeRef.new(shape: SuppressedDestination, required: true, location_name: "SuppressedDestination"))
942
1013
  GetSuppressedDestinationResponse.struct_class = Types::GetSuppressedDestinationResponse
943
1014
 
1015
+ GuardianAttributes.add_member(:optimized_shared_delivery, Shapes::ShapeRef.new(shape: FeatureStatus, location_name: "OptimizedSharedDelivery"))
1016
+ GuardianAttributes.struct_class = Types::GuardianAttributes
1017
+
1018
+ GuardianOptions.add_member(:optimized_shared_delivery, Shapes::ShapeRef.new(shape: FeatureStatus, location_name: "OptimizedSharedDelivery"))
1019
+ GuardianOptions.struct_class = Types::GuardianOptions
1020
+
944
1021
  IdentityInfo.add_member(:identity_type, Shapes::ShapeRef.new(shape: IdentityType, location_name: "IdentityType"))
945
1022
  IdentityInfo.add_member(:identity_name, Shapes::ShapeRef.new(shape: Identity, location_name: "IdentityName"))
946
1023
  IdentityInfo.add_member(:sending_enabled, Shapes::ShapeRef.new(shape: Enabled, location_name: "SendingEnabled"))
@@ -971,6 +1048,8 @@ module Aws::SESV2
971
1048
  InboxPlacementTrackingOption.add_member(:tracked_isps, Shapes::ShapeRef.new(shape: IspNameList, location_name: "TrackedIsps"))
972
1049
  InboxPlacementTrackingOption.struct_class = Types::InboxPlacementTrackingOption
973
1050
 
1051
+ InternalServiceErrorException.struct_class = Types::InternalServiceErrorException
1052
+
974
1053
  InvalidNextTokenException.struct_class = Types::InvalidNextTokenException
975
1054
 
976
1055
  IpList.member = Shapes::ShapeRef.new(shape: Ip)
@@ -1089,6 +1168,18 @@ module Aws::SESV2
1089
1168
 
1090
1169
  ListOfDedicatedIpPools.member = Shapes::ShapeRef.new(shape: PoolName)
1091
1170
 
1171
+ ListRecommendationsFilter.key = Shapes::ShapeRef.new(shape: ListRecommendationsFilterKey)
1172
+ ListRecommendationsFilter.value = Shapes::ShapeRef.new(shape: ListRecommendationFilterValue)
1173
+
1174
+ ListRecommendationsRequest.add_member(:filter, Shapes::ShapeRef.new(shape: ListRecommendationsFilter, location_name: "Filter"))
1175
+ ListRecommendationsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
1176
+ ListRecommendationsRequest.add_member(:page_size, Shapes::ShapeRef.new(shape: MaxItems, location_name: "PageSize"))
1177
+ ListRecommendationsRequest.struct_class = Types::ListRecommendationsRequest
1178
+
1179
+ ListRecommendationsResponse.add_member(:recommendations, Shapes::ShapeRef.new(shape: RecommendationsList, location_name: "Recommendations"))
1180
+ ListRecommendationsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
1181
+ ListRecommendationsResponse.struct_class = Types::ListRecommendationsResponse
1182
+
1092
1183
  ListSuppressedDestinationsRequest.add_member(:reasons, Shapes::ShapeRef.new(shape: SuppressionListReasons, location: "querystring", location_name: "Reason"))
1093
1184
  ListSuppressedDestinationsRequest.add_member(:start_date, Shapes::ShapeRef.new(shape: Timestamp, location: "querystring", location_name: "StartDate"))
1094
1185
  ListSuppressedDestinationsRequest.add_member(:end_date, Shapes::ShapeRef.new(shape: Timestamp, location: "querystring", location_name: "EndDate"))
@@ -1125,6 +1216,22 @@ module Aws::SESV2
1125
1216
 
1126
1217
  MessageTagList.member = Shapes::ShapeRef.new(shape: MessageTag)
1127
1218
 
1219
+ MetricDataError.add_member(:id, Shapes::ShapeRef.new(shape: QueryIdentifier, location_name: "Id"))
1220
+ MetricDataError.add_member(:code, Shapes::ShapeRef.new(shape: QueryErrorCode, location_name: "Code"))
1221
+ MetricDataError.add_member(:message, Shapes::ShapeRef.new(shape: QueryErrorMessage, location_name: "Message"))
1222
+ MetricDataError.struct_class = Types::MetricDataError
1223
+
1224
+ MetricDataErrorList.member = Shapes::ShapeRef.new(shape: MetricDataError)
1225
+
1226
+ MetricDataResult.add_member(:id, Shapes::ShapeRef.new(shape: QueryIdentifier, location_name: "Id"))
1227
+ MetricDataResult.add_member(:timestamps, Shapes::ShapeRef.new(shape: TimestampList, location_name: "Timestamps"))
1228
+ MetricDataResult.add_member(:values, Shapes::ShapeRef.new(shape: MetricValueList, location_name: "Values"))
1229
+ MetricDataResult.struct_class = Types::MetricDataResult
1230
+
1231
+ MetricDataResultList.member = Shapes::ShapeRef.new(shape: MetricDataResult)
1232
+
1233
+ MetricValueList.member = Shapes::ShapeRef.new(shape: Counter)
1234
+
1128
1235
  NotFoundException.struct_class = Types::NotFoundException
1129
1236
 
1130
1237
  OverallVolume.add_member(:volume_statistics, Shapes::ShapeRef.new(shape: VolumeStatistics, location_name: "VolumeStatistics"))
@@ -1170,6 +1277,11 @@ module Aws::SESV2
1170
1277
 
1171
1278
  PutAccountSuppressionAttributesResponse.struct_class = Types::PutAccountSuppressionAttributesResponse
1172
1279
 
1280
+ PutAccountVdmAttributesRequest.add_member(:vdm_attributes, Shapes::ShapeRef.new(shape: VdmAttributes, required: true, location_name: "VdmAttributes"))
1281
+ PutAccountVdmAttributesRequest.struct_class = Types::PutAccountVdmAttributesRequest
1282
+
1283
+ PutAccountVdmAttributesResponse.struct_class = Types::PutAccountVdmAttributesResponse
1284
+
1173
1285
  PutConfigurationSetDeliveryOptionsRequest.add_member(:configuration_set_name, Shapes::ShapeRef.new(shape: ConfigurationSetName, required: true, location: "uri", location_name: "ConfigurationSetName"))
1174
1286
  PutConfigurationSetDeliveryOptionsRequest.add_member(:tls_policy, Shapes::ShapeRef.new(shape: TlsPolicy, location_name: "TlsPolicy"))
1175
1287
  PutConfigurationSetDeliveryOptionsRequest.add_member(:sending_pool_name, Shapes::ShapeRef.new(shape: SendingPoolName, location_name: "SendingPoolName"))
@@ -1201,6 +1313,12 @@ module Aws::SESV2
1201
1313
 
1202
1314
  PutConfigurationSetTrackingOptionsResponse.struct_class = Types::PutConfigurationSetTrackingOptionsResponse
1203
1315
 
1316
+ PutConfigurationSetVdmOptionsRequest.add_member(:configuration_set_name, Shapes::ShapeRef.new(shape: ConfigurationSetName, required: true, location: "uri", location_name: "ConfigurationSetName"))
1317
+ PutConfigurationSetVdmOptionsRequest.add_member(:vdm_options, Shapes::ShapeRef.new(shape: VdmOptions, location_name: "VdmOptions"))
1318
+ PutConfigurationSetVdmOptionsRequest.struct_class = Types::PutConfigurationSetVdmOptionsRequest
1319
+
1320
+ PutConfigurationSetVdmOptionsResponse.struct_class = Types::PutConfigurationSetVdmOptionsResponse
1321
+
1204
1322
  PutDedicatedIpInPoolRequest.add_member(:ip, Shapes::ShapeRef.new(shape: Ip, required: true, location: "uri", location_name: "IP"))
1205
1323
  PutDedicatedIpInPoolRequest.add_member(:destination_pool_name, Shapes::ShapeRef.new(shape: PoolName, required: true, location_name: "DestinationPoolName"))
1206
1324
  PutDedicatedIpInPoolRequest.struct_class = Types::PutDedicatedIpInPoolRequest
@@ -1262,6 +1380,17 @@ module Aws::SESV2
1262
1380
  RawMessage.add_member(:data, Shapes::ShapeRef.new(shape: RawMessageData, required: true, location_name: "Data"))
1263
1381
  RawMessage.struct_class = Types::RawMessage
1264
1382
 
1383
+ Recommendation.add_member(:resource_arn, Shapes::ShapeRef.new(shape: AmazonResourceName, location_name: "ResourceArn"))
1384
+ Recommendation.add_member(:type, Shapes::ShapeRef.new(shape: RecommendationType, location_name: "Type"))
1385
+ Recommendation.add_member(:description, Shapes::ShapeRef.new(shape: RecommendationDescription, location_name: "Description"))
1386
+ Recommendation.add_member(:status, Shapes::ShapeRef.new(shape: RecommendationStatus, location_name: "Status"))
1387
+ Recommendation.add_member(:created_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CreatedTimestamp"))
1388
+ Recommendation.add_member(:last_updated_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "LastUpdatedTimestamp"))
1389
+ Recommendation.add_member(:impact, Shapes::ShapeRef.new(shape: RecommendationImpact, location_name: "Impact"))
1390
+ Recommendation.struct_class = Types::Recommendation
1391
+
1392
+ RecommendationsList.member = Shapes::ShapeRef.new(shape: Recommendation)
1393
+
1265
1394
  ReplacementEmailContent.add_member(:replacement_template, Shapes::ShapeRef.new(shape: ReplacementTemplate, location_name: "ReplacementTemplate"))
1266
1395
  ReplacementEmailContent.struct_class = Types::ReplacementEmailContent
1267
1396
 
@@ -1380,6 +1509,8 @@ module Aws::SESV2
1380
1509
  TestRenderEmailTemplateResponse.add_member(:rendered_template, Shapes::ShapeRef.new(shape: RenderedEmailTemplate, required: true, location_name: "RenderedTemplate"))
1381
1510
  TestRenderEmailTemplateResponse.struct_class = Types::TestRenderEmailTemplateResponse
1382
1511
 
1512
+ TimestampList.member = Shapes::ShapeRef.new(shape: Timestamp)
1513
+
1383
1514
  TooManyRequestsException.struct_class = Types::TooManyRequestsException
1384
1515
 
1385
1516
  Topic.add_member(:topic_name, Shapes::ShapeRef.new(shape: TopicName, required: true, location_name: "TopicName"))
@@ -1455,6 +1586,15 @@ module Aws::SESV2
1455
1586
 
1456
1587
  UpdateEmailTemplateResponse.struct_class = Types::UpdateEmailTemplateResponse
1457
1588
 
1589
+ VdmAttributes.add_member(:vdm_enabled, Shapes::ShapeRef.new(shape: FeatureStatus, required: true, location_name: "VdmEnabled"))
1590
+ VdmAttributes.add_member(:dashboard_attributes, Shapes::ShapeRef.new(shape: DashboardAttributes, location_name: "DashboardAttributes"))
1591
+ VdmAttributes.add_member(:guardian_attributes, Shapes::ShapeRef.new(shape: GuardianAttributes, location_name: "GuardianAttributes"))
1592
+ VdmAttributes.struct_class = Types::VdmAttributes
1593
+
1594
+ VdmOptions.add_member(:dashboard_options, Shapes::ShapeRef.new(shape: DashboardOptions, location_name: "DashboardOptions"))
1595
+ VdmOptions.add_member(:guardian_options, Shapes::ShapeRef.new(shape: GuardianOptions, location_name: "GuardianOptions"))
1596
+ VdmOptions.struct_class = Types::VdmOptions
1597
+
1458
1598
  VolumeStatistics.add_member(:inbox_raw_count, Shapes::ShapeRef.new(shape: Volume, location_name: "InboxRawCount"))
1459
1599
  VolumeStatistics.add_member(:spam_raw_count, Shapes::ShapeRef.new(shape: Volume, location_name: "SpamRawCount"))
1460
1600
  VolumeStatistics.add_member(:projected_inbox, Shapes::ShapeRef.new(shape: Volume, location_name: "ProjectedInbox"))
@@ -1480,6 +1620,18 @@ module Aws::SESV2
1480
1620
  "uid" => "sesv2-2019-09-27",
1481
1621
  }
1482
1622
 
1623
+ api.add_operation(:batch_get_metric_data, Seahorse::Model::Operation.new.tap do |o|
1624
+ o.name = "BatchGetMetricData"
1625
+ o.http_method = "POST"
1626
+ o.http_request_uri = "/v2/email/metrics/batch"
1627
+ o.input = Shapes::ShapeRef.new(shape: BatchGetMetricDataRequest)
1628
+ o.output = Shapes::ShapeRef.new(shape: BatchGetMetricDataResponse)
1629
+ o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
1630
+ o.errors << Shapes::ShapeRef.new(shape: InternalServiceErrorException)
1631
+ o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException)
1632
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
1633
+ end)
1634
+
1483
1635
  api.add_operation(:create_configuration_set, Seahorse::Model::Operation.new.tap do |o|
1484
1636
  o.name = "CreateConfigurationSet"
1485
1637
  o.http_method = "POST"
@@ -2115,6 +2267,23 @@ module Aws::SESV2
2115
2267
  )
2116
2268
  end)
2117
2269
 
2270
+ api.add_operation(:list_recommendations, Seahorse::Model::Operation.new.tap do |o|
2271
+ o.name = "ListRecommendations"
2272
+ o.http_method = "POST"
2273
+ o.http_request_uri = "/v2/email/vdm/recommendations"
2274
+ o.input = Shapes::ShapeRef.new(shape: ListRecommendationsRequest)
2275
+ o.output = Shapes::ShapeRef.new(shape: ListRecommendationsResponse)
2276
+ o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException)
2277
+ o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
2278
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
2279
+ o[:pager] = Aws::Pager.new(
2280
+ limit_key: "page_size",
2281
+ tokens: {
2282
+ "next_token" => "next_token"
2283
+ }
2284
+ )
2285
+ end)
2286
+
2118
2287
  api.add_operation(:list_suppressed_destinations, Seahorse::Model::Operation.new.tap do |o|
2119
2288
  o.name = "ListSuppressedDestinations"
2120
2289
  o.http_method = "GET"
@@ -2184,6 +2353,16 @@ module Aws::SESV2
2184
2353
  o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
2185
2354
  end)
2186
2355
 
2356
+ api.add_operation(:put_account_vdm_attributes, Seahorse::Model::Operation.new.tap do |o|
2357
+ o.name = "PutAccountVdmAttributes"
2358
+ o.http_method = "PUT"
2359
+ o.http_request_uri = "/v2/email/account/vdm"
2360
+ o.input = Shapes::ShapeRef.new(shape: PutAccountVdmAttributesRequest)
2361
+ o.output = Shapes::ShapeRef.new(shape: PutAccountVdmAttributesResponse)
2362
+ o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
2363
+ o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException)
2364
+ end)
2365
+
2187
2366
  api.add_operation(:put_configuration_set_delivery_options, Seahorse::Model::Operation.new.tap do |o|
2188
2367
  o.name = "PutConfigurationSetDeliveryOptions"
2189
2368
  o.http_method = "PUT"
@@ -2239,6 +2418,17 @@ module Aws::SESV2
2239
2418
  o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
2240
2419
  end)
2241
2420
 
2421
+ api.add_operation(:put_configuration_set_vdm_options, Seahorse::Model::Operation.new.tap do |o|
2422
+ o.name = "PutConfigurationSetVdmOptions"
2423
+ o.http_method = "PUT"
2424
+ o.http_request_uri = "/v2/email/configuration-sets/{ConfigurationSetName}/vdm-options"
2425
+ o.input = Shapes::ShapeRef.new(shape: PutConfigurationSetVdmOptionsRequest)
2426
+ o.output = Shapes::ShapeRef.new(shape: PutConfigurationSetVdmOptionsResponse)
2427
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
2428
+ o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException)
2429
+ o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
2430
+ end)
2431
+
2242
2432
  api.add_operation(:put_dedicated_ip_in_pool, Seahorse::Model::Operation.new.tap do |o|
2243
2433
  o.name = "PutDedicatedIpInPool"
2244
2434
  o.http_method = "PUT"
@@ -50,9 +50,6 @@ module Aws::SESV2
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
56
53
  self[:use_dual_stack] = options[:use_dual_stack]
57
54
  self[:use_dual_stack] = false if self[:use_dual_stack].nil?
58
55
  if self[:use_dual_stack].nil?
@@ -29,82 +29,82 @@ module Aws::SESV2
29
29
  # @api private
30
30
  RULES = <<-JSON
31
31
  eyJ2ZXJzaW9uIjoiMS4wIiwicGFyYW1ldGVycyI6eyJSZWdpb24iOnsiYnVp
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
- c1NldCIsImFyZ3YiOlt7InJlZiI6IkVuZHBvaW50In1dfSx7ImZuIjoicGFy
54
- c2VVUkwiLCJhcmd2IjpbeyJyZWYiOiJFbmRwb2ludCJ9XSwiYXNzaWduIjoi
55
- dXJsIn1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpb
56
- eyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VGSVBT
57
- In0sdHJ1ZV19XSwiZXJyb3IiOiJJbnZhbGlkIENvbmZpZ3VyYXRpb246IEZJ
58
- UFMgYW5kIGN1c3RvbSBlbmRwb2ludCBhcmUgbm90IHN1cHBvcnRlZCIsInR5
59
- cGUiOiJlcnJvciJ9LHsiY29uZGl0aW9ucyI6W10sInR5cGUiOiJ0cmVlIiwi
60
- cnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIs
61
- ImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxTdGFjayJ9LHRydWVdfV0sImVycm9y
62
- IjoiSW52YWxpZCBDb25maWd1cmF0aW9uOiBEdWFsc3RhY2sgYW5kIGN1c3Rv
63
- bSBlbmRwb2ludCBhcmUgbm90IHN1cHBvcnRlZCIsInR5cGUiOiJlcnJvciJ9
64
- LHsiY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6eyJyZWYiOiJF
65
- bmRwb2ludCJ9LCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBl
66
- IjoiZW5kcG9pbnQifV19XX0seyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xl
67
- YW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VGSVBTIn0sdHJ1ZV19LHsi
68
- Zm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRHVhbFN0
69
- YWNrIn0sdHJ1ZV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0
70
- aW9ucyI6W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJm
71
- biI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQi
72
- fSwic3VwcG9ydHNGSVBTIl19XX0seyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJh
73
- cmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBh
74
- cnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0R1YWxTdGFjayJdfV19XSwidHlw
75
- ZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W10sImVuZHBvaW50
76
- Ijp7InVybCI6Imh0dHBzOi8vZW1haWwtZmlwcy57UmVnaW9ufS57UGFydGl0
77
- aW9uUmVzdWx0I2R1YWxTdGFja0Ruc1N1ZmZpeH0iLCJwcm9wZXJ0aWVzIjp7
78
- fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19LHsiY29uZGl0
79
- aW9ucyI6W10sImVycm9yIjoiRklQUyBhbmQgRHVhbFN0YWNrIGFyZSBlbmFi
80
- bGVkLCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBvbmUg
81
- b3IgYm90aCIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25zIjpbeyJm
82
- biI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VGSVBTIn0s
83
- dHJ1ZV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6
84
- W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJmbiI6Imdl
85
- dEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQifSwic3Vw
86
- cG9ydHNGSVBTIl19XX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25k
87
- aXRpb25zIjpbXSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9u
88
- cyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vZW1haWwtZmlwcy57
89
- UmVnaW9ufS57UGFydGl0aW9uUmVzdWx0I2Ruc1N1ZmZpeH0iLCJwcm9wZXJ0
90
- aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19XX0s
91
- eyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJGSVBTIGlzIGVuYWJsZWQgYnV0
92
- IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQgRklQUyIsInR5cGUi
93
- OiJlcnJvciJ9XX0seyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVh
94
- bHMiLCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1dLCJ0
95
- eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJv
96
- b2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7ImZuIjoiZ2V0QXR0ciIsImFy
97
- Z3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3VsdCJ9LCJzdXBwb3J0c0R1YWxT
98
- dGFjayJdfV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9u
99
- cyI6W10sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vZW1haWwue1JlZ2lv
100
- bn0ue1BhcnRpdGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZmaXh9IiwicHJv
101
- cGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1d
102
- fSx7ImNvbmRpdGlvbnMiOltdLCJlcnJvciI6IkR1YWxTdGFjayBpcyBlbmFi
103
- bGVkIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IER1YWxT
104
- dGFjayIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRpb25zIjpbXSwiZW5k
105
- cG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9lbWFpbC57UmVnaW9ufS57UGFydGl0
106
- aW9uUmVzdWx0I2Ruc1N1ZmZpeH0iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVy
107
- cyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifV19XX0=
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
+ dCI6eyJ1cmwiOiJodHRwczovL2VtYWlsLWZpcHMue1JlZ2lvbn0ue1BhcnRp
77
+ dGlvblJlc3VsdCNkdWFsU3RhY2tEbnNTdWZmaXh9IiwicHJvcGVydGllcyI6
78
+ e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfSx7ImNvbmRp
79
+ dGlvbnMiOltdLCJlcnJvciI6IkZJUFMgYW5kIER1YWxTdGFjayBhcmUgZW5h
80
+ YmxlZCwgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMgbm90IHN1cHBvcnQgb25l
81
+ IG9yIGJvdGgiLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W3si
82
+ Zm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQUyJ9
83
+ LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMi
84
+ Olt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsiZm4iOiJn
85
+ ZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0In0sInN1
86
+ cHBvcnRzRklQUyJdfV19XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29u
87
+ ZGl0aW9ucyI6W10sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlv
88
+ bnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL2VtYWlsLWZpcHMu
89
+ e1JlZ2lvbn0ue1BhcnRpdGlvblJlc3VsdCNkbnNTdWZmaXh9IiwicHJvcGVy
90
+ dGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfV19
91
+ LHsiY29uZGl0aW9ucyI6W10sImVycm9yIjoiRklQUyBpcyBlbmFibGVkIGJ1
92
+ dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBwb3J0IEZJUFMiLCJ0eXBl
93
+ IjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W3siZm4iOiJib29sZWFuRXF1
94
+ YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRHVhbFN0YWNrIn0sdHJ1ZV19XSwi
95
+ dHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W3siZm4iOiJi
96
+ b29sZWFuRXF1YWxzIiwiYXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJh
97
+ cmd2IjpbeyJyZWYiOiJQYXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNEdWFs
98
+ U3RhY2siXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlv
99
+ bnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRwczovL2VtYWlsLntSZWdp
100
+ b259LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInBy
101
+ b3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9
102
+ XX0seyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJEdWFsU3RhY2sgaXMgZW5h
103
+ YmxlZCBidXQgdGhpcyBwYXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBEdWFs
104
+ U3RhY2siLCJ0eXBlIjoiZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W10sImVu
105
+ ZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vZW1haWwue1JlZ2lvbn0ue1BhcnRp
106
+ dGlvblJlc3VsdCNkbnNTdWZmaXh9IiwicHJvcGVydGllcyI6e30sImhlYWRl
107
+ cnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In1dfV19
108
108
 
109
109
  JSON
110
110
  end