-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathopenapi.yaml
More file actions
214 lines (214 loc) · 7.59 KB
/
openapi.yaml
File metadata and controls
214 lines (214 loc) · 7.59 KB
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
openapi: 3.0.1
info:
title: Mailculator API
description: API for managing email queues and sending emails.
version: 1.0.0
paths:
/email-queues:
post:
summary: Create a new email queue
description: Receives email data and saves it to the mail queue.
operationId: createEmailQueue
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: string
description: "UUID of the message"
type:
type: string
enum: [email]
description: "The type of the resource"
from:
type: string
format: email
description: "Sender of the email"
reply_to:
type: string
format: email
description: "Reply-to address"
to:
type: string
format: email
description: "Recipient of the email"
subject:
type: string
description: "Subject of the email"
body_html:
type: string
description: "HTML body content of the email"
body_text:
type: string
description: "Plain text body content of the email"
attachments:
description: "Email attachments - can be array of strings (legacy) or array of objects (new format)"
oneOf:
- type: array
description: "Legacy format: array of file paths (filename will be extracted from path)"
items:
type: string
format: uri
- type: array
description: "New format: array of attachment objects with explicit path and name"
items:
type: object
required:
- path
- name
properties:
path:
type: string
format: uri
description: "Path or URL to the file"
name:
type: string
description: "Original filename as it should appear in the email"
custom_headers:
type: object
description: "Custom headers for the email"
additionalProperties:
type: string
callback_on_success:
type: string
description: "Callback command (curl) to call when email is delivered to ses"
callback_on_failure:
type: string
description: "Callback command (curl) to call when, for some reason, email could not be delivered to ses"
responses:
'201':
description: "Email queue created successfully"
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
type:
type: string
example: "mail-queue"
'400':
description: "Invalid request body or parameters"
'405':
description: "Invalid HTTP method"
'500':
description: "Internal server error"
/stale-emails:
get:
summary: Get stale emails
description: Returns a list of all emails that are stuck in a processing state for more than the configured threshold time (default 30 minutes).
operationId: getStaleEmails
responses:
'200':
description: "List of stale emails"
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/StaleEmail'
'500':
description: "Internal server error"
/emails/{id}/requeue:
post:
summary: Requeue a stale email
description: Requeues an email by deleting the stuck status record and updating the _META record Latest field based on the current status. Only works for emails in INTAKING, PROCESSING, CALLING-SENT-CALLBACK, or CALLING-FAILED-CALLBACK states.
operationId: requeueEmail
parameters:
- name: id
in: path
required: true
description: "UUID of the email to requeue"
schema:
type: string
format: uuid
responses:
'204':
description: "Email successfully requeued"
'400':
description: "Invalid request (missing or invalid ID)"
'500':
description: "Internal server error (e.g., email not found, invalid status for requeue)"
components:
schemas:
Email:
type: object
properties:
from:
type: string
format: email
reply_to:
type: string
format: email
to:
type: string
format: email
subject:
type: string
body_html:
type: string
body_text:
type: string
attachments:
description: "Email attachments - can be array of strings (legacy) or array of objects (new format)"
oneOf:
- type: array
description: "Legacy format: array of file paths (filename will be extracted from path)"
items:
type: string
format: uri
- type: array
description: "New format: array of attachment objects with explicit path and name"
items:
type: object
required:
- path
- name
properties:
path:
type: string
format: uri
name:
type: string
custom_headers:
type: object
additionalProperties:
type: string
callback_on_success:
type: string
callback_on_failure:
type: string
StaleEmail:
type: object
properties:
id:
type: string
format: uuid
description: "UUID of the email"
status:
type: string
enum: [INTAKING, PROCESSING, CALLING-SENT-CALLBACK, CALLING-FAILED-CALLBACK]
description: "Current processing status (mapped from Latest field)"
created_at:
type: string
format: date-time
description: "Timestamp when the email was created"
updated_at:
type: string
format: date-time
description: "Timestamp when the email was last updated"
required:
- id
- status
- created_at
- updated_at