forked from aws-powertools/powertools-lambda-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathses.py
72 lines (52 loc) · 1.59 KB
/
ses.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel, Field
from pydantic.networks import EmailStr
from pydantic.types import PositiveInt
from ..types import Literal
class SesReceiptVerdict(BaseModel):
status: Literal["PASS", "FAIL", "GRAY", "PROCESSING_FAILED"]
class SesReceiptAction(BaseModel):
type: Literal["Lambda"] # noqa A003,VNE003
invocationType: Literal["Event"]
functionArn: str
class SesReceipt(BaseModel):
timestamp: datetime
processingTimeMillis: PositiveInt
recipients: List[EmailStr]
spamVerdict: SesReceiptVerdict
virusVerdict: SesReceiptVerdict
spfVerdict: SesReceiptVerdict
dmarcVerdict: SesReceiptVerdict
action: SesReceiptAction
class SesMailHeaders(BaseModel):
name: str
value: str
class SesMailCommonHeaders(BaseModel):
header_from: List[str] = Field(None, alias="from")
to: List[str]
cc: Optional[List[str]]
bcc: Optional[List[str]]
sender: Optional[List[str]]
reply_to: Optional[List[str]] = Field(None, alias="reply-to")
returnPath: EmailStr
messageId: str
date: str
subject: str
class SesMail(BaseModel):
timestamp: datetime
source: EmailStr
messageId: str
destination: List[EmailStr]
headersTruncated: bool
headers: List[SesMailHeaders]
commonHeaders: SesMailCommonHeaders
class SesMessage(BaseModel):
mail: SesMail
receipt: SesReceipt
class SesRecordModel(BaseModel):
eventSource: Literal["aws:ses"]
eventVersion: str
ses: SesMessage
class SesModel(BaseModel):
Records: List[SesRecordModel]