@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Amazon Simple Email Service
@version 2019-09-27
@auth AWS SigV4
@endpoints 92
@hint download_for_search
@toc email(92)

@endpoint POST /v2/email/metrics/batch
@required {Queries: [BatchGetMetricDataQuery]}
@returns(200) {Results: [MetricDataResult]?, Errors: [MetricDataError]?}

@endpoint PUT /v2/email/export-jobs/{JobId}/cancel
@required {JobId: str}

@endpoint POST /v2/email/configuration-sets
@required {ConfigurationSetName: str}
@optional {TrackingOptions: TrackingOptions, DeliveryOptions: DeliveryOptions, ReputationOptions: ReputationOptions, SendingOptions: SendingOptions, Tags: [Tag], SuppressionOptions: SuppressionOptions, VdmOptions: VdmOptions}

@endpoint POST /v2/email/configuration-sets/{ConfigurationSetName}/event-destinations
@required {ConfigurationSetName: str, EventDestinationName: str, EventDestination: EventDestinationDefinition}

@endpoint POST /v2/email/contact-lists/{ContactListName}/contacts
@required {ContactListName: str, EmailAddress: str}
@optional {TopicPreferences: [TopicPreference], UnsubscribeAll: bool, AttributesData: str}

@endpoint POST /v2/email/contact-lists
@required {ContactListName: str}
@optional {Topics: [Topic], Description: str, Tags: [Tag]}

@endpoint POST /v2/email/custom-verification-email-templates
@required {TemplateName: str, FromEmailAddress: str, TemplateSubject: str, TemplateContent: str, SuccessRedirectionURL: str, FailureRedirectionURL: str}

@endpoint POST /v2/email/dedicated-ip-pools
@required {PoolName: str}
@optional {Tags: [Tag], ScalingMode: str}

@endpoint POST /v2/email/deliverability-dashboard/test
@required {FromEmailAddress: str, Content: EmailContent}
@optional {ReportName: str, Tags: [Tag]}
@returns(200) {ReportId: str, DeliverabilityTestStatus: str}

@endpoint POST /v2/email/identities
@required {EmailIdentity: str}
@optional {Tags: [Tag], DkimSigningAttributes: DkimSigningAttributes, ConfigurationSetName: str}
@returns(200) {IdentityType: str?, VerifiedForSendingStatus: bool?, DkimAttributes: DkimAttributes?{SigningEnabled: bool?, Status: str?, Tokens: [str]?, SigningAttributesOrigin: str?, NextSigningKeyLength: str?, CurrentSigningKeyLength: str?, LastKeyGenerationTimestamp: str(timestamp)?}}

@endpoint POST /v2/email/identities/{EmailIdentity}/policies/{PolicyName}
@required {EmailIdentity: str, PolicyName: str, Policy: str}

@endpoint POST /v2/email/templates
@required {TemplateName: str, TemplateContent: EmailTemplateContent}

@endpoint POST /v2/email/export-jobs
@required {ExportDataSource: ExportDataSource, ExportDestination: ExportDestination}
@returns(200) {JobId: str?}

@endpoint POST /v2/email/import-jobs
@required {ImportDestination: ImportDestination, ImportDataSource: ImportDataSource}
@returns(200) {JobId: str?}

@endpoint DELETE /v2/email/configuration-sets/{ConfigurationSetName}
@required {ConfigurationSetName: str}

@endpoint DELETE /v2/email/configuration-sets/{ConfigurationSetName}/event-destinations/{EventDestinationName}
@required {ConfigurationSetName: str, EventDestinationName: str}

@endpoint DELETE /v2/email/contact-lists/{ContactListName}/contacts/{EmailAddress}
@required {ContactListName: str, EmailAddress: str}

@endpoint DELETE /v2/email/contact-lists/{ContactListName}
@required {ContactListName: str}

@endpoint DELETE /v2/email/custom-verification-email-templates/{TemplateName}
@required {TemplateName: str}

@endpoint DELETE /v2/email/dedicated-ip-pools/{PoolName}
@required {PoolName: str}

@endpoint DELETE /v2/email/identities/{EmailIdentity}
@required {EmailIdentity: str}

@endpoint DELETE /v2/email/identities/{EmailIdentity}/policies/{PolicyName}
@required {EmailIdentity: str, PolicyName: str}

@endpoint DELETE /v2/email/templates/{TemplateName}
@required {TemplateName: str}

@endpoint DELETE /v2/email/suppression/addresses/{EmailAddress}
@required {EmailAddress: str}

@endpoint GET /v2/email/account
@returns(200) {DedicatedIpAutoWarmupEnabled: bool?, EnforcementStatus: str?, ProductionAccessEnabled: bool?, SendQuota: SendQuota?{Max24HourSend: num(f64)?, MaxSendRate: num(f64)?, SentLast24Hours: num(f64)?}, SendingEnabled: bool?, SuppressionAttributes: SuppressionAttributes?{SuppressedReasons: [str]?}, Details: AccountDetails?{MailType: str?, WebsiteURL: str?, ContactLanguage: str?, UseCaseDescription: str?, AdditionalContactEmailAddresses: [str]?, ReviewDetails: ReviewDetails?{Status: str?, CaseId: str?}}, VdmAttributes: VdmAttributes?{VdmEnabled: str, DashboardAttributes: DashboardAttributes?{EngagementMetrics: str?}, GuardianAttributes: GuardianAttributes?{OptimizedSharedDelivery: str?}}}

@endpoint GET /v2/email/deliverability-dashboard/blacklist-report
@required {BlacklistItemNames: [str]}
@returns(200) {BlacklistReport: map<str,[BlacklistEntry]>}

@endpoint GET /v2/email/configuration-sets/{ConfigurationSetName}
@required {ConfigurationSetName: str}
@returns(200) {ConfigurationSetName: str?, TrackingOptions: TrackingOptions?{CustomRedirectDomain: str}, DeliveryOptions: DeliveryOptions?{TlsPolicy: str?, SendingPoolName: str?}, ReputationOptions: ReputationOptions?{ReputationMetricsEnabled: bool?, LastFreshStart: str(timestamp)?}, SendingOptions: SendingOptions?{SendingEnabled: bool?}, Tags: [Tag]?, SuppressionOptions: SuppressionOptions?{SuppressedReasons: [str]?}, VdmOptions: VdmOptions?{DashboardOptions: DashboardOptions?{EngagementMetrics: str?}, GuardianOptions: GuardianOptions?{OptimizedSharedDelivery: str?}}}

@endpoint GET /v2/email/configuration-sets/{ConfigurationSetName}/event-destinations
@required {ConfigurationSetName: str}
@returns(200) {EventDestinations: [EventDestination]?}

@endpoint GET /v2/email/contact-lists/{ContactListName}/contacts/{EmailAddress}
@required {ContactListName: str, EmailAddress: str}
@returns(200) {ContactListName: str?, EmailAddress: str?, TopicPreferences: [TopicPreference]?, TopicDefaultPreferences: [TopicPreference]?, UnsubscribeAll: bool?, AttributesData: str?, CreatedTimestamp: str(timestamp)?, LastUpdatedTimestamp: str(timestamp)?}

@endpoint GET /v2/email/contact-lists/{ContactListName}
@required {ContactListName: str}
@returns(200) {ContactListName: str?, Topics: [Topic]?, Description: str?, CreatedTimestamp: str(timestamp)?, LastUpdatedTimestamp: str(timestamp)?, Tags: [Tag]?}

@endpoint GET /v2/email/custom-verification-email-templates/{TemplateName}
@required {TemplateName: str}
@returns(200) {TemplateName: str?, FromEmailAddress: str?, TemplateSubject: str?, TemplateContent: str?, SuccessRedirectionURL: str?, FailureRedirectionURL: str?}

@endpoint GET /v2/email/dedicated-ips/{IP}
@required {Ip: str}
@returns(200) {DedicatedIp: DedicatedIp?{Ip: str, WarmupStatus: str, WarmupPercentage: int, PoolName: str?}}

@endpoint GET /v2/email/dedicated-ip-pools/{PoolName}
@required {PoolName: str}
@returns(200) {DedicatedIpPool: DedicatedIpPool?{PoolName: str, ScalingMode: str}}

@endpoint GET /v2/email/dedicated-ips
@optional {PoolName: str, NextToken: str, PageSize: int}
@returns(200) {DedicatedIps: [DedicatedIp]?, NextToken: str?}

@endpoint GET /v2/email/deliverability-dashboard
@returns(200) {DashboardEnabled: bool, SubscriptionExpiryDate: str(timestamp)?, AccountStatus: str?, ActiveSubscribedDomains: [DomainDeliverabilityTrackingOption]?, PendingExpirationSubscribedDomains: [DomainDeliverabilityTrackingOption]?}

@endpoint GET /v2/email/deliverability-dashboard/test-reports/{ReportId}
@required {ReportId: str}
@returns(200) {DeliverabilityTestReport: DeliverabilityTestReport{ReportId: str?, ReportName: str?, Subject: str?, FromEmailAddress: str?, CreateDate: str(timestamp)?, DeliverabilityTestStatus: str?}, OverallPlacement: PlacementStatistics{InboxPercentage: num(f64)?, SpamPercentage: num(f64)?, MissingPercentage: num(f64)?, SpfPercentage: num(f64)?, DkimPercentage: num(f64)?}, IspPlacements: [IspPlacement], Message: str?, Tags: [Tag]?}

@endpoint GET /v2/email/deliverability-dashboard/campaigns/{CampaignId}
@required {CampaignId: str}
@returns(200) {DomainDeliverabilityCampaign: DomainDeliverabilityCampaign{CampaignId: str?, ImageUrl: str?, Subject: str?, FromAddress: str?, SendingIps: [str]?, FirstSeenDateTime: str(timestamp)?, LastSeenDateTime: str(timestamp)?, InboxCount: int(i64)?, SpamCount: int(i64)?, ReadRate: num(f64)?, DeleteRate: num(f64)?, ReadDeleteRate: num(f64)?, ProjectedVolume: int(i64)?, Esps: [str]?}}

@endpoint GET /v2/email/deliverability-dashboard/statistics-report/{Domain}
@required {Domain: str, StartDate: str(timestamp), EndDate: str(timestamp)}
@returns(200) {OverallVolume: OverallVolume{VolumeStatistics: VolumeStatistics?{InboxRawCount: int(i64)?, SpamRawCount: int(i64)?, ProjectedInbox: int(i64)?, ProjectedSpam: int(i64)?}, ReadRatePercent: num(f64)?, DomainIspPlacements: [DomainIspPlacement]?}, DailyVolumes: [DailyVolume]}

@endpoint GET /v2/email/identities/{EmailIdentity}
@required {EmailIdentity: str}
@returns(200) {IdentityType: str?, FeedbackForwardingStatus: bool?, VerifiedForSendingStatus: bool?, DkimAttributes: DkimAttributes?{SigningEnabled: bool?, Status: str?, Tokens: [str]?, SigningAttributesOrigin: str?, NextSigningKeyLength: str?, CurrentSigningKeyLength: str?, LastKeyGenerationTimestamp: str(timestamp)?}, MailFromAttributes: MailFromAttributes?{MailFromDomain: str, MailFromDomainStatus: str, BehaviorOnMxFailure: str}, Policies: map<str,str>?, Tags: [Tag]?, ConfigurationSetName: str?, VerificationStatus: str?, VerificationInfo: VerificationInfo?{LastCheckedTimestamp: str(timestamp)?, LastSuccessTimestamp: str(timestamp)?, ErrorType: str?, SOARecord: SOARecord?{PrimaryNameServer: str?, AdminEmail: str?, SerialNumber: int(i64)?}}}

@endpoint GET /v2/email/identities/{EmailIdentity}/policies
@required {EmailIdentity: str}
@returns(200) {Policies: map<str,str>?}

@endpoint GET /v2/email/templates/{TemplateName}
@required {TemplateName: str}
@returns(200) {TemplateName: str, TemplateContent: EmailTemplateContent{Subject: str?, Text: str?, Html: str?}}

@endpoint GET /v2/email/export-jobs/{JobId}
@required {JobId: str}
@returns(200) {JobId: str?, ExportSourceType: str?, JobStatus: str?, ExportDestination: ExportDestination?{DataFormat: str, S3Url: str?}, ExportDataSource: ExportDataSource?{MetricsDataSource: MetricsDataSource?{Dimensions: map<str,[str]>, Namespace: str, Metrics: [ExportMetric], StartDate: str(timestamp), EndDate: str(timestamp)}, MessageInsightsDataSource: MessageInsightsDataSource?{StartDate: str(timestamp), EndDate: str(timestamp), Include: MessageInsightsFilters?{FromEmailAddress: [str]?, Destination: [str]?, Subject: [str]?, Isp: [str]?, LastDeliveryEvent: [str]?, LastEngagementEvent: [str]?}, Exclude: MessageInsightsFilters?{FromEmailAddress: [str]?, Destination: [str]?, Subject: [str]?, Isp: [str]?, LastDeliveryEvent: [str]?, LastEngagementEvent: [str]?}, MaxResults: int?}}, CreatedTimestamp: str(timestamp)?, CompletedTimestamp: str(timestamp)?, FailureInfo: FailureInfo?{FailedRecordsS3Url: str?, ErrorMessage: str?}, Statistics: ExportStatistics?{ProcessedRecordsCount: int?, ExportedRecordsCount: int?}}

@endpoint GET /v2/email/import-jobs/{JobId}
@required {JobId: str}
@returns(200) {JobId: str?, ImportDestination: ImportDestination?{SuppressionListDestination: SuppressionListDestination?{SuppressionListImportAction: str}, ContactListDestination: ContactListDestination?{ContactListName: str, ContactListImportAction: str}}, ImportDataSource: ImportDataSource?{S3Url: str, DataFormat: str}, FailureInfo: FailureInfo?{FailedRecordsS3Url: str?, ErrorMessage: str?}, JobStatus: str?, CreatedTimestamp: str(timestamp)?, CompletedTimestamp: str(timestamp)?, ProcessedRecordsCount: int?, FailedRecordsCount: int?}

@endpoint GET /v2/email/insights/{MessageId}/
@required {MessageId: str}
@returns(200) {MessageId: str?, FromEmailAddress: str?, Subject: str?, EmailTags: [MessageTag]?, Insights: [EmailInsights]?}

@endpoint GET /v2/email/suppression/addresses/{EmailAddress}
@required {EmailAddress: str}
@returns(200) {SuppressedDestination: SuppressedDestination{EmailAddress: str, Reason: str, LastUpdateTime: str(timestamp), Attributes: SuppressedDestinationAttributes?{MessageId: str?, FeedbackId: str?}}}

@endpoint GET /v2/email/configuration-sets
@optional {NextToken: str, PageSize: int}
@returns(200) {ConfigurationSets: [str]?, NextToken: str?}

@endpoint GET /v2/email/contact-lists
@optional {PageSize: int, NextToken: str}
@returns(200) {ContactLists: [ContactList]?, NextToken: str?}

@endpoint POST /v2/email/contact-lists/{ContactListName}/contacts/list
@required {ContactListName: str}
@optional {Filter: ListContactsFilter, PageSize: int, NextToken: str}
@returns(200) {Contacts: [Contact]?, NextToken: str?}

@endpoint GET /v2/email/custom-verification-email-templates
@optional {NextToken: str, PageSize: int}
@returns(200) {CustomVerificationEmailTemplates: [CustomVerificationEmailTemplateMetadata]?, NextToken: str?}

@endpoint GET /v2/email/dedicated-ip-pools
@optional {NextToken: str, PageSize: int}
@returns(200) {DedicatedIpPools: [str]?, NextToken: str?}

@endpoint GET /v2/email/deliverability-dashboard/test-reports
@optional {NextToken: str, PageSize: int}
@returns(200) {DeliverabilityTestReports: [DeliverabilityTestReport], NextToken: str?}

@endpoint GET /v2/email/deliverability-dashboard/domains/{SubscribedDomain}/campaigns
@required {StartDate: str(timestamp), EndDate: str(timestamp), SubscribedDomain: str}
@optional {NextToken: str, PageSize: int}
@returns(200) {DomainDeliverabilityCampaigns: [DomainDeliverabilityCampaign], NextToken: str?}

@endpoint GET /v2/email/identities
@optional {NextToken: str, PageSize: int}
@returns(200) {EmailIdentities: [IdentityInfo]?, NextToken: str?}

@endpoint GET /v2/email/templates
@optional {NextToken: str, PageSize: int}
@returns(200) {TemplatesMetadata: [EmailTemplateMetadata]?, NextToken: str?}

@endpoint POST /v2/email/list-export-jobs
@optional {NextToken: str, PageSize: int, ExportSourceType: str, JobStatus: str}
@returns(200) {ExportJobs: [ExportJobSummary]?, NextToken: str?}

@endpoint POST /v2/email/import-jobs/list
@optional {ImportDestinationType: str, NextToken: str, PageSize: int}
@returns(200) {ImportJobs: [ImportJobSummary]?, NextToken: str?}

@endpoint POST /v2/email/vdm/recommendations
@optional {Filter: map<str,str>, NextToken: str, PageSize: int}
@returns(200) {Recommendations: [Recommendation]?, NextToken: str?}

@endpoint GET /v2/email/suppression/addresses
@optional {Reason: [str], StartDate: str(timestamp), EndDate: str(timestamp), NextToken: str, PageSize: int}
@returns(200) {SuppressedDestinationSummaries: [SuppressedDestinationSummary]?, NextToken: str?}

@endpoint GET /v2/email/tags
@required {ResourceArn: str}
@returns(200) {Tags: [Tag]}

@endpoint PUT /v2/email/account/dedicated-ips/warmup
@optional {AutoWarmupEnabled: bool}

@endpoint POST /v2/email/account/details
@required {MailType: str, WebsiteURL: str}
@optional {ContactLanguage: str, UseCaseDescription: str, AdditionalContactEmailAddresses: [str], ProductionAccessEnabled: bool}

@endpoint PUT /v2/email/account/sending
@optional {SendingEnabled: bool}

@endpoint PUT /v2/email/account/suppression
@optional {SuppressedReasons: [str]}

@endpoint PUT /v2/email/account/vdm
@required {VdmAttributes: VdmAttributes}

@endpoint PUT /v2/email/configuration-sets/{ConfigurationSetName}/delivery-options
@required {ConfigurationSetName: str}
@optional {TlsPolicy: str, SendingPoolName: str}

@endpoint PUT /v2/email/configuration-sets/{ConfigurationSetName}/reputation-options
@required {ConfigurationSetName: str}
@optional {ReputationMetricsEnabled: bool}

@endpoint PUT /v2/email/configuration-sets/{ConfigurationSetName}/sending
@required {ConfigurationSetName: str}
@optional {SendingEnabled: bool}

@endpoint PUT /v2/email/configuration-sets/{ConfigurationSetName}/suppression-options
@required {ConfigurationSetName: str}
@optional {SuppressedReasons: [str]}

@endpoint PUT /v2/email/configuration-sets/{ConfigurationSetName}/tracking-options
@required {ConfigurationSetName: str}
@optional {CustomRedirectDomain: str}

@endpoint PUT /v2/email/configuration-sets/{ConfigurationSetName}/vdm-options
@required {ConfigurationSetName: str}
@optional {VdmOptions: VdmOptions}

@endpoint PUT /v2/email/dedicated-ips/{IP}/pool
@required {Ip: str, DestinationPoolName: str}

@endpoint PUT /v2/email/dedicated-ip-pools/{PoolName}/scaling
@required {PoolName: str, ScalingMode: str}

@endpoint PUT /v2/email/dedicated-ips/{IP}/warmup
@required {Ip: str, WarmupPercentage: int}

@endpoint PUT /v2/email/deliverability-dashboard
@required {DashboardEnabled: bool}
@optional {SubscribedDomains: [DomainDeliverabilityTrackingOption]}

@endpoint PUT /v2/email/identities/{EmailIdentity}/configuration-set
@required {EmailIdentity: str}
@optional {ConfigurationSetName: str}

@endpoint PUT /v2/email/identities/{EmailIdentity}/dkim
@required {EmailIdentity: str}
@optional {SigningEnabled: bool}

@endpoint PUT /v1/email/identities/{EmailIdentity}/dkim/signing
@required {EmailIdentity: str, SigningAttributesOrigin: str}
@optional {SigningAttributes: DkimSigningAttributes}
@returns(200) {DkimStatus: str?, DkimTokens: [str]?}

@endpoint PUT /v2/email/identities/{EmailIdentity}/feedback
@required {EmailIdentity: str}
@optional {EmailForwardingEnabled: bool}

@endpoint PUT /v2/email/identities/{EmailIdentity}/mail-from
@required {EmailIdentity: str}
@optional {MailFromDomain: str, BehaviorOnMxFailure: str}

@endpoint PUT /v2/email/suppression/addresses
@required {EmailAddress: str, Reason: str}

@endpoint POST /v2/email/outbound-bulk-emails
@required {DefaultContent: BulkEmailContent, BulkEmailEntries: [BulkEmailEntry]}
@optional {FromEmailAddress: str, FromEmailAddressIdentityArn: str, ReplyToAddresses: [str], FeedbackForwardingEmailAddress: str, FeedbackForwardingEmailAddressIdentityArn: str, DefaultEmailTags: [MessageTag], ConfigurationSetName: str}
@returns(200) {BulkEmailEntryResults: [BulkEmailEntryResult]}

@endpoint POST /v2/email/outbound-custom-verification-emails
@required {EmailAddress: str, TemplateName: str}
@optional {ConfigurationSetName: str}
@returns(200) {MessageId: str?}

@endpoint POST /v2/email/outbound-emails
@required {Content: EmailContent}
@optional {FromEmailAddress: str, FromEmailAddressIdentityArn: str, Destination: Destination, ReplyToAddresses: [str], FeedbackForwardingEmailAddress: str, FeedbackForwardingEmailAddressIdentityArn: str, EmailTags: [MessageTag], ConfigurationSetName: str, ListManagementOptions: ListManagementOptions}
@returns(200) {MessageId: str?}

@endpoint POST /v2/email/tags
@required {ResourceArn: str, Tags: [Tag]}

@endpoint POST /v2/email/templates/{TemplateName}/render
@required {TemplateName: str, TemplateData: str}
@returns(200) {RenderedTemplate: str}

@endpoint DELETE /v2/email/tags
@required {ResourceArn: str, TagKeys: [str]}

@endpoint PUT /v2/email/configuration-sets/{ConfigurationSetName}/event-destinations/{EventDestinationName}
@required {ConfigurationSetName: str, EventDestinationName: str, EventDestination: EventDestinationDefinition}

@endpoint PUT /v2/email/contact-lists/{ContactListName}/contacts/{EmailAddress}
@required {ContactListName: str, EmailAddress: str}
@optional {TopicPreferences: [TopicPreference], UnsubscribeAll: bool, AttributesData: str}

@endpoint PUT /v2/email/contact-lists/{ContactListName}
@required {ContactListName: str}
@optional {Topics: [Topic], Description: str}

@endpoint PUT /v2/email/custom-verification-email-templates/{TemplateName}
@required {TemplateName: str, FromEmailAddress: str, TemplateSubject: str, TemplateContent: str, SuccessRedirectionURL: str, FailureRedirectionURL: str}

@endpoint PUT /v2/email/identities/{EmailIdentity}/policies/{PolicyName}
@required {EmailIdentity: str, PolicyName: str, Policy: str}

@endpoint PUT /v2/email/templates/{TemplateName}
@required {TemplateName: str, TemplateContent: EmailTemplateContent}

@end
