aws-sdk-sesv2 1.37.0 → 1.39.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.
@@ -33,6 +33,9 @@ module Aws::SESV2
33
33
  BlacklistReport = Shapes::MapShape.new(name: 'BlacklistReport')
34
34
  BlacklistingDescription = Shapes::StringShape.new(name: 'BlacklistingDescription')
35
35
  Body = Shapes::StructureShape.new(name: 'Body')
36
+ Bounce = Shapes::StructureShape.new(name: 'Bounce')
37
+ BounceSubType = Shapes::StringShape.new(name: 'BounceSubType')
38
+ BounceType = Shapes::StringShape.new(name: 'BounceType')
36
39
  BulkEmailContent = Shapes::StructureShape.new(name: 'BulkEmailContent')
37
40
  BulkEmailEntry = Shapes::StructureShape.new(name: 'BulkEmailEntry')
38
41
  BulkEmailEntryList = Shapes::ListShape.new(name: 'BulkEmailEntryList')
@@ -40,11 +43,16 @@ module Aws::SESV2
40
43
  BulkEmailEntryResultList = Shapes::ListShape.new(name: 'BulkEmailEntryResultList')
41
44
  BulkEmailStatus = Shapes::StringShape.new(name: 'BulkEmailStatus')
42
45
  CampaignId = Shapes::StringShape.new(name: 'CampaignId')
46
+ CancelExportJobRequest = Shapes::StructureShape.new(name: 'CancelExportJobRequest')
47
+ CancelExportJobResponse = Shapes::StructureShape.new(name: 'CancelExportJobResponse')
43
48
  CaseId = Shapes::StringShape.new(name: 'CaseId')
44
49
  Charset = Shapes::StringShape.new(name: 'Charset')
45
50
  CloudWatchDestination = Shapes::StructureShape.new(name: 'CloudWatchDestination')
46
51
  CloudWatchDimensionConfiguration = Shapes::StructureShape.new(name: 'CloudWatchDimensionConfiguration')
47
52
  CloudWatchDimensionConfigurations = Shapes::ListShape.new(name: 'CloudWatchDimensionConfigurations')
53
+ Complaint = Shapes::StructureShape.new(name: 'Complaint')
54
+ ComplaintFeedbackType = Shapes::StringShape.new(name: 'ComplaintFeedbackType')
55
+ ComplaintSubType = Shapes::StringShape.new(name: 'ComplaintSubType')
48
56
  ConcurrentModificationException = Shapes::StructureShape.new(name: 'ConcurrentModificationException')
49
57
  ConfigurationSetName = Shapes::StringShape.new(name: 'ConfigurationSetName')
50
58
  ConfigurationSetNameList = Shapes::ListShape.new(name: 'ConfigurationSetNameList')
@@ -77,6 +85,8 @@ module Aws::SESV2
77
85
  CreateEmailIdentityResponse = Shapes::StructureShape.new(name: 'CreateEmailIdentityResponse')
78
86
  CreateEmailTemplateRequest = Shapes::StructureShape.new(name: 'CreateEmailTemplateRequest')
79
87
  CreateEmailTemplateResponse = Shapes::StructureShape.new(name: 'CreateEmailTemplateResponse')
88
+ CreateExportJobRequest = Shapes::StructureShape.new(name: 'CreateExportJobRequest')
89
+ CreateExportJobResponse = Shapes::StructureShape.new(name: 'CreateExportJobResponse')
80
90
  CreateImportJobRequest = Shapes::StructureShape.new(name: 'CreateImportJobRequest')
81
91
  CreateImportJobResponse = Shapes::StructureShape.new(name: 'CreateImportJobResponse')
82
92
  CustomRedirectDomain = Shapes::StringShape.new(name: 'CustomRedirectDomain')
@@ -116,9 +126,11 @@ module Aws::SESV2
116
126
  DeliverabilityTestReports = Shapes::ListShape.new(name: 'DeliverabilityTestReports')
117
127
  DeliverabilityTestStatus = Shapes::StringShape.new(name: 'DeliverabilityTestStatus')
118
128
  DeliverabilityTestSubject = Shapes::StringShape.new(name: 'DeliverabilityTestSubject')
129
+ DeliveryEventType = Shapes::StringShape.new(name: 'DeliveryEventType')
119
130
  DeliveryOptions = Shapes::StructureShape.new(name: 'DeliveryOptions')
120
131
  Description = Shapes::StringShape.new(name: 'Description')
121
132
  Destination = Shapes::StructureShape.new(name: 'Destination')
133
+ DiagnosticCode = Shapes::StringShape.new(name: 'DiagnosticCode')
122
134
  DimensionName = Shapes::StringShape.new(name: 'DimensionName')
123
135
  DimensionValueSource = Shapes::StringShape.new(name: 'DimensionValueSource')
124
136
  Dimensions = Shapes::MapShape.new(name: 'Dimensions')
@@ -138,8 +150,13 @@ module Aws::SESV2
138
150
  DomainIspPlacement = Shapes::StructureShape.new(name: 'DomainIspPlacement')
139
151
  DomainIspPlacements = Shapes::ListShape.new(name: 'DomainIspPlacements')
140
152
  EmailAddress = Shapes::StringShape.new(name: 'EmailAddress')
153
+ EmailAddressFilterList = Shapes::ListShape.new(name: 'EmailAddressFilterList')
141
154
  EmailAddressList = Shapes::ListShape.new(name: 'EmailAddressList')
142
155
  EmailContent = Shapes::StructureShape.new(name: 'EmailContent')
156
+ EmailInsights = Shapes::StructureShape.new(name: 'EmailInsights')
157
+ EmailInsightsList = Shapes::ListShape.new(name: 'EmailInsightsList')
158
+ EmailSubject = Shapes::StringShape.new(name: 'EmailSubject')
159
+ EmailSubjectFilterList = Shapes::ListShape.new(name: 'EmailSubjectFilterList')
143
160
  EmailTemplateContent = Shapes::StructureShape.new(name: 'EmailTemplateContent')
144
161
  EmailTemplateData = Shapes::StringShape.new(name: 'EmailTemplateData')
145
162
  EmailTemplateHtml = Shapes::StringShape.new(name: 'EmailTemplateHtml')
@@ -150,6 +167,7 @@ module Aws::SESV2
150
167
  EmailTemplateText = Shapes::StringShape.new(name: 'EmailTemplateText')
151
168
  Enabled = Shapes::BooleanShape.new(name: 'Enabled')
152
169
  EnabledWrapper = Shapes::BooleanShape.new(name: 'EnabledWrapper')
170
+ EngagementEventType = Shapes::StringShape.new(name: 'EngagementEventType')
153
171
  ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage')
154
172
  Esp = Shapes::StringShape.new(name: 'Esp')
155
173
  Esps = Shapes::ListShape.new(name: 'Esps')
@@ -157,8 +175,20 @@ module Aws::SESV2
157
175
  EventDestinationDefinition = Shapes::StructureShape.new(name: 'EventDestinationDefinition')
158
176
  EventDestinationName = Shapes::StringShape.new(name: 'EventDestinationName')
159
177
  EventDestinations = Shapes::ListShape.new(name: 'EventDestinations')
178
+ EventDetails = Shapes::StructureShape.new(name: 'EventDetails')
160
179
  EventType = Shapes::StringShape.new(name: 'EventType')
161
180
  EventTypes = Shapes::ListShape.new(name: 'EventTypes')
181
+ ExportDataSource = Shapes::StructureShape.new(name: 'ExportDataSource')
182
+ ExportDestination = Shapes::StructureShape.new(name: 'ExportDestination')
183
+ ExportDimensionValue = Shapes::ListShape.new(name: 'ExportDimensionValue')
184
+ ExportDimensions = Shapes::MapShape.new(name: 'ExportDimensions')
185
+ ExportJobSummary = Shapes::StructureShape.new(name: 'ExportJobSummary')
186
+ ExportJobSummaryList = Shapes::ListShape.new(name: 'ExportJobSummaryList')
187
+ ExportMetric = Shapes::StructureShape.new(name: 'ExportMetric')
188
+ ExportMetrics = Shapes::ListShape.new(name: 'ExportMetrics')
189
+ ExportSourceType = Shapes::StringShape.new(name: 'ExportSourceType')
190
+ ExportStatistics = Shapes::StructureShape.new(name: 'ExportStatistics')
191
+ ExportedRecordsCount = Shapes::IntegerShape.new(name: 'ExportedRecordsCount')
162
192
  FailedRecordsCount = Shapes::IntegerShape.new(name: 'FailedRecordsCount')
163
193
  FailedRecordsS3Url = Shapes::StringShape.new(name: 'FailedRecordsS3Url')
164
194
  FailureInfo = Shapes::StructureShape.new(name: 'FailureInfo')
@@ -200,8 +230,12 @@ module Aws::SESV2
200
230
  GetEmailIdentityResponse = Shapes::StructureShape.new(name: 'GetEmailIdentityResponse')
201
231
  GetEmailTemplateRequest = Shapes::StructureShape.new(name: 'GetEmailTemplateRequest')
202
232
  GetEmailTemplateResponse = Shapes::StructureShape.new(name: 'GetEmailTemplateResponse')
233
+ GetExportJobRequest = Shapes::StructureShape.new(name: 'GetExportJobRequest')
234
+ GetExportJobResponse = Shapes::StructureShape.new(name: 'GetExportJobResponse')
203
235
  GetImportJobRequest = Shapes::StructureShape.new(name: 'GetImportJobRequest')
204
236
  GetImportJobResponse = Shapes::StructureShape.new(name: 'GetImportJobResponse')
237
+ GetMessageInsightsRequest = Shapes::StructureShape.new(name: 'GetMessageInsightsRequest')
238
+ GetMessageInsightsResponse = Shapes::StructureShape.new(name: 'GetMessageInsightsResponse')
205
239
  GetSuppressedDestinationRequest = Shapes::StructureShape.new(name: 'GetSuppressedDestinationRequest')
206
240
  GetSuppressedDestinationResponse = Shapes::StructureShape.new(name: 'GetSuppressedDestinationResponse')
207
241
  GuardianAttributes = Shapes::StructureShape.new(name: 'GuardianAttributes')
@@ -217,10 +251,15 @@ module Aws::SESV2
217
251
  ImportJobSummary = Shapes::StructureShape.new(name: 'ImportJobSummary')
218
252
  ImportJobSummaryList = Shapes::ListShape.new(name: 'ImportJobSummaryList')
219
253
  InboxPlacementTrackingOption = Shapes::StructureShape.new(name: 'InboxPlacementTrackingOption')
254
+ InsightsEmailAddress = Shapes::StringShape.new(name: 'InsightsEmailAddress')
255
+ InsightsEvent = Shapes::StructureShape.new(name: 'InsightsEvent')
256
+ InsightsEvents = Shapes::ListShape.new(name: 'InsightsEvents')
220
257
  InternalServiceErrorException = Shapes::StructureShape.new(name: 'InternalServiceErrorException')
221
258
  InvalidNextTokenException = Shapes::StructureShape.new(name: 'InvalidNextTokenException')
222
259
  Ip = Shapes::StringShape.new(name: 'Ip')
223
260
  IpList = Shapes::ListShape.new(name: 'IpList')
261
+ Isp = Shapes::StringShape.new(name: 'Isp')
262
+ IspFilterList = Shapes::ListShape.new(name: 'IspFilterList')
224
263
  IspName = Shapes::StringShape.new(name: 'IspName')
225
264
  IspNameList = Shapes::ListShape.new(name: 'IspNameList')
226
265
  IspPlacement = Shapes::StructureShape.new(name: 'IspPlacement')
@@ -228,6 +267,8 @@ module Aws::SESV2
228
267
  JobId = Shapes::StringShape.new(name: 'JobId')
229
268
  JobStatus = Shapes::StringShape.new(name: 'JobStatus')
230
269
  KinesisFirehoseDestination = Shapes::StructureShape.new(name: 'KinesisFirehoseDestination')
270
+ LastDeliveryEventList = Shapes::ListShape.new(name: 'LastDeliveryEventList')
271
+ LastEngagementEventList = Shapes::ListShape.new(name: 'LastEngagementEventList')
231
272
  LastFreshStart = Shapes::TimestampShape.new(name: 'LastFreshStart')
232
273
  LimitExceededException = Shapes::StructureShape.new(name: 'LimitExceededException')
233
274
  ListConfigurationSetsRequest = Shapes::StructureShape.new(name: 'ListConfigurationSetsRequest')
@@ -249,6 +290,8 @@ module Aws::SESV2
249
290
  ListEmailIdentitiesResponse = Shapes::StructureShape.new(name: 'ListEmailIdentitiesResponse')
250
291
  ListEmailTemplatesRequest = Shapes::StructureShape.new(name: 'ListEmailTemplatesRequest')
251
292
  ListEmailTemplatesResponse = Shapes::StructureShape.new(name: 'ListEmailTemplatesResponse')
293
+ ListExportJobsRequest = Shapes::StructureShape.new(name: 'ListExportJobsRequest')
294
+ ListExportJobsResponse = Shapes::StructureShape.new(name: 'ListExportJobsResponse')
252
295
  ListImportJobsRequest = Shapes::StructureShape.new(name: 'ListImportJobsRequest')
253
296
  ListImportJobsResponse = Shapes::StructureShape.new(name: 'ListImportJobsResponse')
254
297
  ListManagementOptions = Shapes::StructureShape.new(name: 'ListManagementOptions')
@@ -275,12 +318,16 @@ module Aws::SESV2
275
318
  Message = Shapes::StructureShape.new(name: 'Message')
276
319
  MessageContent = Shapes::StringShape.new(name: 'MessageContent')
277
320
  MessageData = Shapes::StringShape.new(name: 'MessageData')
321
+ MessageInsightsDataSource = Shapes::StructureShape.new(name: 'MessageInsightsDataSource')
322
+ MessageInsightsExportMaxResults = Shapes::IntegerShape.new(name: 'MessageInsightsExportMaxResults')
323
+ MessageInsightsFilters = Shapes::StructureShape.new(name: 'MessageInsightsFilters')
278
324
  MessageRejected = Shapes::StructureShape.new(name: 'MessageRejected')
279
325
  MessageTag = Shapes::StructureShape.new(name: 'MessageTag')
280
326
  MessageTagList = Shapes::ListShape.new(name: 'MessageTagList')
281
327
  MessageTagName = Shapes::StringShape.new(name: 'MessageTagName')
282
328
  MessageTagValue = Shapes::StringShape.new(name: 'MessageTagValue')
283
329
  Metric = Shapes::StringShape.new(name: 'Metric')
330
+ MetricAggregation = Shapes::StringShape.new(name: 'MetricAggregation')
284
331
  MetricDataError = Shapes::StructureShape.new(name: 'MetricDataError')
285
332
  MetricDataErrorList = Shapes::ListShape.new(name: 'MetricDataErrorList')
286
333
  MetricDataResult = Shapes::StructureShape.new(name: 'MetricDataResult')
@@ -289,6 +336,7 @@ module Aws::SESV2
289
336
  MetricDimensionValue = Shapes::StringShape.new(name: 'MetricDimensionValue')
290
337
  MetricNamespace = Shapes::StringShape.new(name: 'MetricNamespace')
291
338
  MetricValueList = Shapes::ListShape.new(name: 'MetricValueList')
339
+ MetricsDataSource = Shapes::StructureShape.new(name: 'MetricsDataSource')
292
340
  NextToken = Shapes::StringShape.new(name: 'NextToken')
293
341
  NotFoundException = Shapes::StructureShape.new(name: 'NotFoundException')
294
342
  OutboundMessageId = Shapes::StringShape.new(name: 'OutboundMessageId')
@@ -489,6 +537,11 @@ module Aws::SESV2
489
537
  Body.add_member(:html, Shapes::ShapeRef.new(shape: Content, location_name: "Html"))
490
538
  Body.struct_class = Types::Body
491
539
 
540
+ Bounce.add_member(:bounce_type, Shapes::ShapeRef.new(shape: BounceType, location_name: "BounceType"))
541
+ Bounce.add_member(:bounce_sub_type, Shapes::ShapeRef.new(shape: BounceSubType, location_name: "BounceSubType"))
542
+ Bounce.add_member(:diagnostic_code, Shapes::ShapeRef.new(shape: DiagnosticCode, location_name: "DiagnosticCode"))
543
+ Bounce.struct_class = Types::Bounce
544
+
492
545
  BulkEmailContent.add_member(:template, Shapes::ShapeRef.new(shape: Template, location_name: "Template"))
493
546
  BulkEmailContent.struct_class = Types::BulkEmailContent
494
547
 
@@ -506,6 +559,11 @@ module Aws::SESV2
506
559
 
507
560
  BulkEmailEntryResultList.member = Shapes::ShapeRef.new(shape: BulkEmailEntryResult)
508
561
 
562
+ CancelExportJobRequest.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, required: true, location: "uri", location_name: "JobId"))
563
+ CancelExportJobRequest.struct_class = Types::CancelExportJobRequest
564
+
565
+ CancelExportJobResponse.struct_class = Types::CancelExportJobResponse
566
+
509
567
  CloudWatchDestination.add_member(:dimension_configurations, Shapes::ShapeRef.new(shape: CloudWatchDimensionConfigurations, required: true, location_name: "DimensionConfigurations"))
510
568
  CloudWatchDestination.struct_class = Types::CloudWatchDestination
511
569
 
@@ -516,6 +574,10 @@ module Aws::SESV2
516
574
 
517
575
  CloudWatchDimensionConfigurations.member = Shapes::ShapeRef.new(shape: CloudWatchDimensionConfiguration)
518
576
 
577
+ Complaint.add_member(:complaint_sub_type, Shapes::ShapeRef.new(shape: ComplaintSubType, location_name: "ComplaintSubType"))
578
+ Complaint.add_member(:complaint_feedback_type, Shapes::ShapeRef.new(shape: ComplaintFeedbackType, location_name: "ComplaintFeedbackType"))
579
+ Complaint.struct_class = Types::Complaint
580
+
519
581
  ConcurrentModificationException.struct_class = Types::ConcurrentModificationException
520
582
 
521
583
  ConfigurationSetNameList.member = Shapes::ShapeRef.new(shape: ConfigurationSetName)
@@ -628,6 +690,13 @@ module Aws::SESV2
628
690
 
629
691
  CreateEmailTemplateResponse.struct_class = Types::CreateEmailTemplateResponse
630
692
 
693
+ CreateExportJobRequest.add_member(:export_data_source, Shapes::ShapeRef.new(shape: ExportDataSource, required: true, location_name: "ExportDataSource"))
694
+ CreateExportJobRequest.add_member(:export_destination, Shapes::ShapeRef.new(shape: ExportDestination, required: true, location_name: "ExportDestination"))
695
+ CreateExportJobRequest.struct_class = Types::CreateExportJobRequest
696
+
697
+ CreateExportJobResponse.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, location_name: "JobId"))
698
+ CreateExportJobResponse.struct_class = Types::CreateExportJobResponse
699
+
631
700
  CreateImportJobRequest.add_member(:import_destination, Shapes::ShapeRef.new(shape: ImportDestination, required: true, location_name: "ImportDestination"))
632
701
  CreateImportJobRequest.add_member(:import_data_source, Shapes::ShapeRef.new(shape: ImportDataSource, required: true, location_name: "ImportDataSource"))
633
702
  CreateImportJobRequest.struct_class = Types::CreateImportJobRequest
@@ -794,6 +863,8 @@ module Aws::SESV2
794
863
 
795
864
  DomainIspPlacements.member = Shapes::ShapeRef.new(shape: DomainIspPlacement)
796
865
 
866
+ EmailAddressFilterList.member = Shapes::ShapeRef.new(shape: InsightsEmailAddress)
867
+
797
868
  EmailAddressList.member = Shapes::ShapeRef.new(shape: EmailAddress)
798
869
 
799
870
  EmailContent.add_member(:simple, Shapes::ShapeRef.new(shape: Message, location_name: "Simple"))
@@ -801,6 +872,15 @@ module Aws::SESV2
801
872
  EmailContent.add_member(:template, Shapes::ShapeRef.new(shape: Template, location_name: "Template"))
802
873
  EmailContent.struct_class = Types::EmailContent
803
874
 
875
+ EmailInsights.add_member(:destination, Shapes::ShapeRef.new(shape: InsightsEmailAddress, location_name: "Destination"))
876
+ EmailInsights.add_member(:isp, Shapes::ShapeRef.new(shape: Isp, location_name: "Isp"))
877
+ EmailInsights.add_member(:events, Shapes::ShapeRef.new(shape: InsightsEvents, location_name: "Events"))
878
+ EmailInsights.struct_class = Types::EmailInsights
879
+
880
+ EmailInsightsList.member = Shapes::ShapeRef.new(shape: EmailInsights)
881
+
882
+ EmailSubjectFilterList.member = Shapes::ShapeRef.new(shape: EmailSubject)
883
+
804
884
  EmailTemplateContent.add_member(:subject, Shapes::ShapeRef.new(shape: EmailTemplateSubject, location_name: "Subject"))
805
885
  EmailTemplateContent.add_member(:text, Shapes::ShapeRef.new(shape: EmailTemplateText, location_name: "Text"))
806
886
  EmailTemplateContent.add_member(:html, Shapes::ShapeRef.new(shape: EmailTemplateHtml, location_name: "Html"))
@@ -833,8 +913,44 @@ module Aws::SESV2
833
913
 
834
914
  EventDestinations.member = Shapes::ShapeRef.new(shape: EventDestination)
835
915
 
916
+ EventDetails.add_member(:bounce, Shapes::ShapeRef.new(shape: Bounce, location_name: "Bounce"))
917
+ EventDetails.add_member(:complaint, Shapes::ShapeRef.new(shape: Complaint, location_name: "Complaint"))
918
+ EventDetails.struct_class = Types::EventDetails
919
+
836
920
  EventTypes.member = Shapes::ShapeRef.new(shape: EventType)
837
921
 
922
+ ExportDataSource.add_member(:metrics_data_source, Shapes::ShapeRef.new(shape: MetricsDataSource, location_name: "MetricsDataSource"))
923
+ ExportDataSource.add_member(:message_insights_data_source, Shapes::ShapeRef.new(shape: MessageInsightsDataSource, location_name: "MessageInsightsDataSource"))
924
+ ExportDataSource.struct_class = Types::ExportDataSource
925
+
926
+ ExportDestination.add_member(:data_format, Shapes::ShapeRef.new(shape: DataFormat, required: true, location_name: "DataFormat"))
927
+ ExportDestination.add_member(:s3_url, Shapes::ShapeRef.new(shape: S3Url, location_name: "S3Url"))
928
+ ExportDestination.struct_class = Types::ExportDestination
929
+
930
+ ExportDimensionValue.member = Shapes::ShapeRef.new(shape: MetricDimensionValue)
931
+
932
+ ExportDimensions.key = Shapes::ShapeRef.new(shape: MetricDimensionName)
933
+ ExportDimensions.value = Shapes::ShapeRef.new(shape: ExportDimensionValue)
934
+
935
+ ExportJobSummary.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, location_name: "JobId"))
936
+ ExportJobSummary.add_member(:export_source_type, Shapes::ShapeRef.new(shape: ExportSourceType, location_name: "ExportSourceType"))
937
+ ExportJobSummary.add_member(:job_status, Shapes::ShapeRef.new(shape: JobStatus, location_name: "JobStatus"))
938
+ ExportJobSummary.add_member(:created_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CreatedTimestamp"))
939
+ ExportJobSummary.add_member(:completed_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CompletedTimestamp"))
940
+ ExportJobSummary.struct_class = Types::ExportJobSummary
941
+
942
+ ExportJobSummaryList.member = Shapes::ShapeRef.new(shape: ExportJobSummary)
943
+
944
+ ExportMetric.add_member(:name, Shapes::ShapeRef.new(shape: Metric, location_name: "Name"))
945
+ ExportMetric.add_member(:aggregation, Shapes::ShapeRef.new(shape: MetricAggregation, location_name: "Aggregation"))
946
+ ExportMetric.struct_class = Types::ExportMetric
947
+
948
+ ExportMetrics.member = Shapes::ShapeRef.new(shape: ExportMetric)
949
+
950
+ ExportStatistics.add_member(:processed_records_count, Shapes::ShapeRef.new(shape: ProcessedRecordsCount, location_name: "ProcessedRecordsCount"))
951
+ ExportStatistics.add_member(:exported_records_count, Shapes::ShapeRef.new(shape: ExportedRecordsCount, location_name: "ExportedRecordsCount"))
952
+ ExportStatistics.struct_class = Types::ExportStatistics
953
+
838
954
  FailureInfo.add_member(:failed_records_s3_url, Shapes::ShapeRef.new(shape: FailedRecordsS3Url, location_name: "FailedRecordsS3Url"))
839
955
  FailureInfo.add_member(:error_message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "ErrorMessage"))
840
956
  FailureInfo.struct_class = Types::FailureInfo
@@ -994,6 +1110,20 @@ module Aws::SESV2
994
1110
  GetEmailTemplateResponse.add_member(:template_content, Shapes::ShapeRef.new(shape: EmailTemplateContent, required: true, location_name: "TemplateContent"))
995
1111
  GetEmailTemplateResponse.struct_class = Types::GetEmailTemplateResponse
996
1112
 
1113
+ GetExportJobRequest.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, required: true, location: "uri", location_name: "JobId"))
1114
+ GetExportJobRequest.struct_class = Types::GetExportJobRequest
1115
+
1116
+ GetExportJobResponse.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, location_name: "JobId"))
1117
+ GetExportJobResponse.add_member(:export_source_type, Shapes::ShapeRef.new(shape: ExportSourceType, location_name: "ExportSourceType"))
1118
+ GetExportJobResponse.add_member(:job_status, Shapes::ShapeRef.new(shape: JobStatus, location_name: "JobStatus"))
1119
+ GetExportJobResponse.add_member(:export_destination, Shapes::ShapeRef.new(shape: ExportDestination, location_name: "ExportDestination"))
1120
+ GetExportJobResponse.add_member(:export_data_source, Shapes::ShapeRef.new(shape: ExportDataSource, location_name: "ExportDataSource"))
1121
+ GetExportJobResponse.add_member(:created_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CreatedTimestamp"))
1122
+ GetExportJobResponse.add_member(:completed_timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CompletedTimestamp"))
1123
+ GetExportJobResponse.add_member(:failure_info, Shapes::ShapeRef.new(shape: FailureInfo, location_name: "FailureInfo"))
1124
+ GetExportJobResponse.add_member(:statistics, Shapes::ShapeRef.new(shape: ExportStatistics, location_name: "Statistics"))
1125
+ GetExportJobResponse.struct_class = Types::GetExportJobResponse
1126
+
997
1127
  GetImportJobRequest.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, required: true, location: "uri", location_name: "JobId"))
998
1128
  GetImportJobRequest.struct_class = Types::GetImportJobRequest
999
1129
 
@@ -1008,6 +1138,16 @@ module Aws::SESV2
1008
1138
  GetImportJobResponse.add_member(:failed_records_count, Shapes::ShapeRef.new(shape: FailedRecordsCount, location_name: "FailedRecordsCount"))
1009
1139
  GetImportJobResponse.struct_class = Types::GetImportJobResponse
1010
1140
 
1141
+ GetMessageInsightsRequest.add_member(:message_id, Shapes::ShapeRef.new(shape: OutboundMessageId, required: true, location: "uri", location_name: "MessageId"))
1142
+ GetMessageInsightsRequest.struct_class = Types::GetMessageInsightsRequest
1143
+
1144
+ GetMessageInsightsResponse.add_member(:message_id, Shapes::ShapeRef.new(shape: OutboundMessageId, location_name: "MessageId"))
1145
+ GetMessageInsightsResponse.add_member(:from_email_address, Shapes::ShapeRef.new(shape: InsightsEmailAddress, location_name: "FromEmailAddress"))
1146
+ GetMessageInsightsResponse.add_member(:subject, Shapes::ShapeRef.new(shape: EmailSubject, location_name: "Subject"))
1147
+ GetMessageInsightsResponse.add_member(:email_tags, Shapes::ShapeRef.new(shape: MessageTagList, location_name: "EmailTags"))
1148
+ GetMessageInsightsResponse.add_member(:insights, Shapes::ShapeRef.new(shape: EmailInsightsList, location_name: "Insights"))
1149
+ GetMessageInsightsResponse.struct_class = Types::GetMessageInsightsResponse
1150
+
1011
1151
  GetSuppressedDestinationRequest.add_member(:email_address, Shapes::ShapeRef.new(shape: EmailAddress, required: true, location: "uri", location_name: "EmailAddress"))
1012
1152
  GetSuppressedDestinationRequest.struct_class = Types::GetSuppressedDestinationRequest
1013
1153
 
@@ -1050,12 +1190,21 @@ module Aws::SESV2
1050
1190
  InboxPlacementTrackingOption.add_member(:tracked_isps, Shapes::ShapeRef.new(shape: IspNameList, location_name: "TrackedIsps"))
1051
1191
  InboxPlacementTrackingOption.struct_class = Types::InboxPlacementTrackingOption
1052
1192
 
1193
+ InsightsEvent.add_member(:timestamp, Shapes::ShapeRef.new(shape: Timestamp, location_name: "Timestamp"))
1194
+ InsightsEvent.add_member(:type, Shapes::ShapeRef.new(shape: EventType, location_name: "Type"))
1195
+ InsightsEvent.add_member(:details, Shapes::ShapeRef.new(shape: EventDetails, location_name: "Details"))
1196
+ InsightsEvent.struct_class = Types::InsightsEvent
1197
+
1198
+ InsightsEvents.member = Shapes::ShapeRef.new(shape: InsightsEvent)
1199
+
1053
1200
  InternalServiceErrorException.struct_class = Types::InternalServiceErrorException
1054
1201
 
1055
1202
  InvalidNextTokenException.struct_class = Types::InvalidNextTokenException
1056
1203
 
1057
1204
  IpList.member = Shapes::ShapeRef.new(shape: Ip)
1058
1205
 
1206
+ IspFilterList.member = Shapes::ShapeRef.new(shape: Isp)
1207
+
1059
1208
  IspNameList.member = Shapes::ShapeRef.new(shape: IspName)
1060
1209
 
1061
1210
  IspPlacement.add_member(:isp_name, Shapes::ShapeRef.new(shape: IspName, location_name: "IspName"))
@@ -1068,6 +1217,10 @@ module Aws::SESV2
1068
1217
  KinesisFirehoseDestination.add_member(:delivery_stream_arn, Shapes::ShapeRef.new(shape: AmazonResourceName, required: true, location_name: "DeliveryStreamArn"))
1069
1218
  KinesisFirehoseDestination.struct_class = Types::KinesisFirehoseDestination
1070
1219
 
1220
+ LastDeliveryEventList.member = Shapes::ShapeRef.new(shape: DeliveryEventType)
1221
+
1222
+ LastEngagementEventList.member = Shapes::ShapeRef.new(shape: EngagementEventType)
1223
+
1071
1224
  LimitExceededException.struct_class = Types::LimitExceededException
1072
1225
 
1073
1226
  ListConfigurationSetsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location: "querystring", location_name: "NextToken"))
@@ -1151,6 +1304,16 @@ module Aws::SESV2
1151
1304
  ListEmailTemplatesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
1152
1305
  ListEmailTemplatesResponse.struct_class = Types::ListEmailTemplatesResponse
1153
1306
 
1307
+ ListExportJobsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
1308
+ ListExportJobsRequest.add_member(:page_size, Shapes::ShapeRef.new(shape: MaxItems, location_name: "PageSize"))
1309
+ ListExportJobsRequest.add_member(:export_source_type, Shapes::ShapeRef.new(shape: ExportSourceType, location_name: "ExportSourceType"))
1310
+ ListExportJobsRequest.add_member(:job_status, Shapes::ShapeRef.new(shape: JobStatus, location_name: "JobStatus"))
1311
+ ListExportJobsRequest.struct_class = Types::ListExportJobsRequest
1312
+
1313
+ ListExportJobsResponse.add_member(:export_jobs, Shapes::ShapeRef.new(shape: ExportJobSummaryList, location_name: "ExportJobs"))
1314
+ ListExportJobsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
1315
+ ListExportJobsResponse.struct_class = Types::ListExportJobsResponse
1316
+
1154
1317
  ListImportJobsRequest.add_member(:import_destination_type, Shapes::ShapeRef.new(shape: ImportDestinationType, location_name: "ImportDestinationType"))
1155
1318
  ListImportJobsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location: "querystring", location_name: "NextToken"))
1156
1319
  ListImportJobsRequest.add_member(:page_size, Shapes::ShapeRef.new(shape: MaxItems, location: "querystring", location_name: "PageSize"))
@@ -1210,6 +1373,21 @@ module Aws::SESV2
1210
1373
  Message.add_member(:body, Shapes::ShapeRef.new(shape: Body, required: true, location_name: "Body"))
1211
1374
  Message.struct_class = Types::Message
1212
1375
 
1376
+ MessageInsightsDataSource.add_member(:start_date, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "StartDate"))
1377
+ MessageInsightsDataSource.add_member(:end_date, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "EndDate"))
1378
+ MessageInsightsDataSource.add_member(:include, Shapes::ShapeRef.new(shape: MessageInsightsFilters, location_name: "Include"))
1379
+ MessageInsightsDataSource.add_member(:exclude, Shapes::ShapeRef.new(shape: MessageInsightsFilters, location_name: "Exclude"))
1380
+ MessageInsightsDataSource.add_member(:max_results, Shapes::ShapeRef.new(shape: MessageInsightsExportMaxResults, location_name: "MaxResults"))
1381
+ MessageInsightsDataSource.struct_class = Types::MessageInsightsDataSource
1382
+
1383
+ MessageInsightsFilters.add_member(:from_email_address, Shapes::ShapeRef.new(shape: EmailAddressFilterList, location_name: "FromEmailAddress"))
1384
+ MessageInsightsFilters.add_member(:destination, Shapes::ShapeRef.new(shape: EmailAddressFilterList, location_name: "Destination"))
1385
+ MessageInsightsFilters.add_member(:subject, Shapes::ShapeRef.new(shape: EmailSubjectFilterList, location_name: "Subject"))
1386
+ MessageInsightsFilters.add_member(:isp, Shapes::ShapeRef.new(shape: IspFilterList, location_name: "Isp"))
1387
+ MessageInsightsFilters.add_member(:last_delivery_event, Shapes::ShapeRef.new(shape: LastDeliveryEventList, location_name: "LastDeliveryEvent"))
1388
+ MessageInsightsFilters.add_member(:last_engagement_event, Shapes::ShapeRef.new(shape: LastEngagementEventList, location_name: "LastEngagementEvent"))
1389
+ MessageInsightsFilters.struct_class = Types::MessageInsightsFilters
1390
+
1213
1391
  MessageRejected.struct_class = Types::MessageRejected
1214
1392
 
1215
1393
  MessageTag.add_member(:name, Shapes::ShapeRef.new(shape: MessageTagName, required: true, location_name: "Name"))
@@ -1234,6 +1412,13 @@ module Aws::SESV2
1234
1412
 
1235
1413
  MetricValueList.member = Shapes::ShapeRef.new(shape: Counter)
1236
1414
 
1415
+ MetricsDataSource.add_member(:dimensions, Shapes::ShapeRef.new(shape: ExportDimensions, required: true, location_name: "Dimensions"))
1416
+ MetricsDataSource.add_member(:namespace, Shapes::ShapeRef.new(shape: MetricNamespace, required: true, location_name: "Namespace"))
1417
+ MetricsDataSource.add_member(:metrics, Shapes::ShapeRef.new(shape: ExportMetrics, required: true, location_name: "Metrics"))
1418
+ MetricsDataSource.add_member(:start_date, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "StartDate"))
1419
+ MetricsDataSource.add_member(:end_date, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "EndDate"))
1420
+ MetricsDataSource.struct_class = Types::MetricsDataSource
1421
+
1237
1422
  NotFoundException.struct_class = Types::NotFoundException
1238
1423
 
1239
1424
  OverallVolume.add_member(:volume_statistics, Shapes::ShapeRef.new(shape: VolumeStatistics, location_name: "VolumeStatistics"))
@@ -1640,6 +1825,17 @@ module Aws::SESV2
1640
1825
  o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
1641
1826
  end)
1642
1827
 
1828
+ api.add_operation(:cancel_export_job, Seahorse::Model::Operation.new.tap do |o|
1829
+ o.name = "CancelExportJob"
1830
+ o.http_method = "PUT"
1831
+ o.http_request_uri = "/v2/email/export-jobs/{JobId}/cancel"
1832
+ o.input = Shapes::ShapeRef.new(shape: CancelExportJobRequest)
1833
+ o.output = Shapes::ShapeRef.new(shape: CancelExportJobResponse)
1834
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
1835
+ o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
1836
+ o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException)
1837
+ end)
1838
+
1643
1839
  api.add_operation(:create_configuration_set, Seahorse::Model::Operation.new.tap do |o|
1644
1840
  o.name = "CreateConfigurationSet"
1645
1841
  o.http_method = "POST"
@@ -1773,6 +1969,18 @@ module Aws::SESV2
1773
1969
  o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
1774
1970
  end)
1775
1971
 
1972
+ api.add_operation(:create_export_job, Seahorse::Model::Operation.new.tap do |o|
1973
+ o.name = "CreateExportJob"
1974
+ o.http_method = "POST"
1975
+ o.http_request_uri = "/v2/email/export-jobs"
1976
+ o.input = Shapes::ShapeRef.new(shape: CreateExportJobRequest)
1977
+ o.output = Shapes::ShapeRef.new(shape: CreateExportJobResponse)
1978
+ o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
1979
+ o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException)
1980
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
1981
+ o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
1982
+ end)
1983
+
1776
1984
  api.add_operation(:create_import_job, Seahorse::Model::Operation.new.tap do |o|
1777
1985
  o.name = "CreateImportJob"
1778
1986
  o.http_method = "POST"
@@ -2090,6 +2298,17 @@ module Aws::SESV2
2090
2298
  o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
2091
2299
  end)
2092
2300
 
2301
+ api.add_operation(:get_export_job, Seahorse::Model::Operation.new.tap do |o|
2302
+ o.name = "GetExportJob"
2303
+ o.http_method = "GET"
2304
+ o.http_request_uri = "/v2/email/export-jobs/{JobId}"
2305
+ o.input = Shapes::ShapeRef.new(shape: GetExportJobRequest)
2306
+ o.output = Shapes::ShapeRef.new(shape: GetExportJobResponse)
2307
+ o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
2308
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
2309
+ o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException)
2310
+ end)
2311
+
2093
2312
  api.add_operation(:get_import_job, Seahorse::Model::Operation.new.tap do |o|
2094
2313
  o.name = "GetImportJob"
2095
2314
  o.http_method = "GET"
@@ -2101,6 +2320,17 @@ module Aws::SESV2
2101
2320
  o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException)
2102
2321
  end)
2103
2322
 
2323
+ api.add_operation(:get_message_insights, Seahorse::Model::Operation.new.tap do |o|
2324
+ o.name = "GetMessageInsights"
2325
+ o.http_method = "GET"
2326
+ o.http_request_uri = "/v2/email/insights/{MessageId}/"
2327
+ o.input = Shapes::ShapeRef.new(shape: GetMessageInsightsRequest)
2328
+ o.output = Shapes::ShapeRef.new(shape: GetMessageInsightsResponse)
2329
+ o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
2330
+ o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException)
2331
+ o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
2332
+ end)
2333
+
2104
2334
  api.add_operation(:get_suppressed_destination, Seahorse::Model::Operation.new.tap do |o|
2105
2335
  o.name = "GetSuppressedDestination"
2106
2336
  o.http_method = "GET"
@@ -2259,6 +2489,22 @@ module Aws::SESV2
2259
2489
  )
2260
2490
  end)
2261
2491
 
2492
+ api.add_operation(:list_export_jobs, Seahorse::Model::Operation.new.tap do |o|
2493
+ o.name = "ListExportJobs"
2494
+ o.http_method = "POST"
2495
+ o.http_request_uri = "/v2/email/list-export-jobs"
2496
+ o.input = Shapes::ShapeRef.new(shape: ListExportJobsRequest)
2497
+ o.output = Shapes::ShapeRef.new(shape: ListExportJobsResponse)
2498
+ o.errors << Shapes::ShapeRef.new(shape: TooManyRequestsException)
2499
+ o.errors << Shapes::ShapeRef.new(shape: BadRequestException)
2500
+ o[:pager] = Aws::Pager.new(
2501
+ limit_key: "page_size",
2502
+ tokens: {
2503
+ "next_token" => "next_token"
2504
+ }
2505
+ )
2506
+ end)
2507
+
2262
2508
  api.add_operation(:list_import_jobs, Seahorse::Model::Operation.new.tap do |o|
2263
2509
  o.name = "ListImportJobs"
2264
2510
  o.http_method = "GET"
@@ -26,6 +26,20 @@ module Aws::SESV2
26
26
  end
27
27
  end
28
28
 
29
+ class CancelExportJob
30
+ def self.build(context)
31
+ unless context.config.regional_endpoint
32
+ endpoint = context.config.endpoint.to_s
33
+ end
34
+ Aws::SESV2::EndpointParameters.new(
35
+ region: context.config.region,
36
+ use_dual_stack: context.config.use_dualstack_endpoint,
37
+ use_fips: context.config.use_fips_endpoint,
38
+ endpoint: endpoint,
39
+ )
40
+ end
41
+ end
42
+
29
43
  class CreateConfigurationSet
30
44
  def self.build(context)
31
45
  unless context.config.regional_endpoint
@@ -166,6 +180,20 @@ module Aws::SESV2
166
180
  end
167
181
  end
168
182
 
183
+ class CreateExportJob
184
+ def self.build(context)
185
+ unless context.config.regional_endpoint
186
+ endpoint = context.config.endpoint.to_s
187
+ end
188
+ Aws::SESV2::EndpointParameters.new(
189
+ region: context.config.region,
190
+ use_dual_stack: context.config.use_dualstack_endpoint,
191
+ use_fips: context.config.use_fips_endpoint,
192
+ endpoint: endpoint,
193
+ )
194
+ end
195
+ end
196
+
169
197
  class CreateImportJob
170
198
  def self.build(context)
171
199
  unless context.config.regional_endpoint
@@ -558,6 +586,20 @@ module Aws::SESV2
558
586
  end
559
587
  end
560
588
 
589
+ class GetExportJob
590
+ def self.build(context)
591
+ unless context.config.regional_endpoint
592
+ endpoint = context.config.endpoint.to_s
593
+ end
594
+ Aws::SESV2::EndpointParameters.new(
595
+ region: context.config.region,
596
+ use_dual_stack: context.config.use_dualstack_endpoint,
597
+ use_fips: context.config.use_fips_endpoint,
598
+ endpoint: endpoint,
599
+ )
600
+ end
601
+ end
602
+
561
603
  class GetImportJob
562
604
  def self.build(context)
563
605
  unless context.config.regional_endpoint
@@ -572,6 +614,20 @@ module Aws::SESV2
572
614
  end
573
615
  end
574
616
 
617
+ class GetMessageInsights
618
+ def self.build(context)
619
+ unless context.config.regional_endpoint
620
+ endpoint = context.config.endpoint.to_s
621
+ end
622
+ Aws::SESV2::EndpointParameters.new(
623
+ region: context.config.region,
624
+ use_dual_stack: context.config.use_dualstack_endpoint,
625
+ use_fips: context.config.use_fips_endpoint,
626
+ endpoint: endpoint,
627
+ )
628
+ end
629
+ end
630
+
575
631
  class GetSuppressedDestination
576
632
  def self.build(context)
577
633
  unless context.config.regional_endpoint
@@ -712,6 +768,20 @@ module Aws::SESV2
712
768
  end
713
769
  end
714
770
 
771
+ class ListExportJobs
772
+ def self.build(context)
773
+ unless context.config.regional_endpoint
774
+ endpoint = context.config.endpoint.to_s
775
+ end
776
+ Aws::SESV2::EndpointParameters.new(
777
+ region: context.config.region,
778
+ use_dual_stack: context.config.use_dualstack_endpoint,
779
+ use_fips: context.config.use_fips_endpoint,
780
+ endpoint: endpoint,
781
+ )
782
+ end
783
+ end
784
+
715
785
  class ListImportJobs
716
786
  def self.build(context)
717
787
  unless context.config.regional_endpoint
@@ -58,6 +58,8 @@ module Aws::SESV2
58
58
  case context.operation_name
59
59
  when :batch_get_metric_data
60
60
  Aws::SESV2::Endpoints::BatchGetMetricData.build(context)
61
+ when :cancel_export_job
62
+ Aws::SESV2::Endpoints::CancelExportJob.build(context)
61
63
  when :create_configuration_set
62
64
  Aws::SESV2::Endpoints::CreateConfigurationSet.build(context)
63
65
  when :create_configuration_set_event_destination
@@ -78,6 +80,8 @@ module Aws::SESV2
78
80
  Aws::SESV2::Endpoints::CreateEmailIdentityPolicy.build(context)
79
81
  when :create_email_template
80
82
  Aws::SESV2::Endpoints::CreateEmailTemplate.build(context)
83
+ when :create_export_job
84
+ Aws::SESV2::Endpoints::CreateExportJob.build(context)
81
85
  when :create_import_job
82
86
  Aws::SESV2::Endpoints::CreateImportJob.build(context)
83
87
  when :delete_configuration_set
@@ -134,8 +138,12 @@ module Aws::SESV2
134
138
  Aws::SESV2::Endpoints::GetEmailIdentityPolicies.build(context)
135
139
  when :get_email_template
136
140
  Aws::SESV2::Endpoints::GetEmailTemplate.build(context)
141
+ when :get_export_job
142
+ Aws::SESV2::Endpoints::GetExportJob.build(context)
137
143
  when :get_import_job
138
144
  Aws::SESV2::Endpoints::GetImportJob.build(context)
145
+ when :get_message_insights
146
+ Aws::SESV2::Endpoints::GetMessageInsights.build(context)
139
147
  when :get_suppressed_destination
140
148
  Aws::SESV2::Endpoints::GetSuppressedDestination.build(context)
141
149
  when :list_configuration_sets
@@ -156,6 +164,8 @@ module Aws::SESV2
156
164
  Aws::SESV2::Endpoints::ListEmailIdentities.build(context)
157
165
  when :list_email_templates
158
166
  Aws::SESV2::Endpoints::ListEmailTemplates.build(context)
167
+ when :list_export_jobs
168
+ Aws::SESV2::Endpoints::ListExportJobs.build(context)
159
169
  when :list_import_jobs
160
170
  Aws::SESV2::Endpoints::ListImportJobs.build(context)
161
171
  when :list_recommendations