1 | import { Handler } from '../handler';
|
2 |
|
3 | export type SESHandler = Handler<SESEvent, void>;
|
4 |
|
5 |
|
6 | export interface SESMailHeader {
|
7 | name: string;
|
8 | value: string;
|
9 | }
|
10 |
|
11 | export interface SESMailCommonHeaders {
|
12 | returnPath: string;
|
13 | from?: string[] | undefined;
|
14 | date: string;
|
15 | to?: string[] | undefined;
|
16 | cc?: string[] | undefined;
|
17 | bcc?: string[] | undefined;
|
18 | sender?: string[] | undefined;
|
19 | replyTo?: string[] | undefined;
|
20 | messageId: string;
|
21 | subject?: string | undefined;
|
22 | }
|
23 |
|
24 | export interface SESMail {
|
25 | timestamp: string;
|
26 | source: string;
|
27 | messageId: string;
|
28 | destination: string[];
|
29 | headersTruncated: boolean;
|
30 | headers: SESMailHeader[];
|
31 | commonHeaders: SESMailCommonHeaders;
|
32 | }
|
33 |
|
34 | export interface SESReceiptStatus {
|
35 | status: 'PASS' | 'FAIL' | 'GRAY' | 'PROCESSING_FAILED' | 'DISABLED';
|
36 | }
|
37 |
|
38 | export interface SESReceiptS3Action {
|
39 | type: 'S3';
|
40 | topicArn?: string | undefined;
|
41 | bucketName: string;
|
42 | objectKey: string;
|
43 | }
|
44 |
|
45 | export interface SESReceiptSnsAction {
|
46 | type: 'SNS';
|
47 | topicArn: string;
|
48 | }
|
49 |
|
50 | export interface SESReceiptBounceAction {
|
51 | type: 'Bounce';
|
52 | topicArn?: string | undefined;
|
53 | smtpReplyCode: string;
|
54 | statusCode: string;
|
55 | message: string;
|
56 | sender: string;
|
57 | }
|
58 |
|
59 | export interface SESReceiptLambdaAction {
|
60 | type: 'Lambda';
|
61 | topicArn?: string | undefined;
|
62 | functionArn: string;
|
63 | invocationType: string;
|
64 | }
|
65 |
|
66 | export interface SESReceiptStopAction {
|
67 | type: 'Stop';
|
68 | topicArn?: string | undefined;
|
69 | }
|
70 |
|
71 | export interface SESReceiptWorkMailAction {
|
72 | type: 'WorkMail';
|
73 | topicArn?: string | undefined;
|
74 | organizationArn: string;
|
75 | }
|
76 |
|
77 | export interface SESReceipt {
|
78 | timestamp: string;
|
79 | processingTimeMillis: number;
|
80 | recipients: string[];
|
81 | spamVerdict: SESReceiptStatus;
|
82 | virusVerdict: SESReceiptStatus;
|
83 | spfVerdict: SESReceiptStatus;
|
84 | dkimVerdict: SESReceiptStatus;
|
85 | dmarcVerdict: SESReceiptStatus;
|
86 | dmarcPolicy?: 'none' | 'quarantine' | 'reject' | undefined;
|
87 | action: SESReceiptS3Action | SESReceiptSnsAction | SESReceiptBounceAction | SESReceiptLambdaAction | SESReceiptStopAction | SESReceiptWorkMailAction;
|
88 | }
|
89 |
|
90 | export interface SESMessage {
|
91 | mail: SESMail;
|
92 | receipt: SESReceipt;
|
93 | }
|
94 |
|
95 | export interface SESEventRecord {
|
96 | eventSource: string;
|
97 | eventVersion: string;
|
98 | ses: SESMessage;
|
99 | }
|
100 |
|
101 | export interface SESEvent {
|
102 | Records: SESEventRecord[];
|
103 | }
|