@coldbirds/mcp-server 1.0.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.
- package/dist/client.js +1 -0
- package/dist/index.js +3 -0
- package/dist/json-schema-to-zod.js +1 -0
- package/dist/manifest.js +2 -0
- package/dist/mcp.fallback.json +3018 -0
- package/dist/tools.js +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,3018 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "coldbirds-sequence",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Control your cold email campaigns, contacts, and mailboxes from AI assistants like Claude Desktop, Cursor, and Windsurf.",
|
|
5
|
+
"command": "npx",
|
|
6
|
+
"args": [
|
|
7
|
+
"-y",
|
|
8
|
+
"@coldbirds/mcp-server"
|
|
9
|
+
],
|
|
10
|
+
"capabilities": {
|
|
11
|
+
"tools": {
|
|
12
|
+
"listChanged": false
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"env": {
|
|
16
|
+
"COLDBIRDS_API_KEY": {
|
|
17
|
+
"description": "Your API key from Settings → API Keys (format: sk_live_...)",
|
|
18
|
+
"required": true
|
|
19
|
+
},
|
|
20
|
+
"COLDBIRDS_API_URL": {
|
|
21
|
+
"description": "API base URL (defaults to https://sequencer.coldbirds.com)",
|
|
22
|
+
"required": false,
|
|
23
|
+
"default": "https://sequencer.coldbirds.com"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"tools": [
|
|
27
|
+
{
|
|
28
|
+
"name": "get_account",
|
|
29
|
+
"title": "Get Account",
|
|
30
|
+
"description": "Returns the authenticated account (name, email, ID) for the current API key.",
|
|
31
|
+
"inputSchema": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"additionalProperties": false
|
|
34
|
+
},
|
|
35
|
+
"outputSchema": {
|
|
36
|
+
"type": "object",
|
|
37
|
+
"properties": {
|
|
38
|
+
"id": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"description": "Account ID."
|
|
41
|
+
},
|
|
42
|
+
"name": {
|
|
43
|
+
"type": [
|
|
44
|
+
"string",
|
|
45
|
+
"null"
|
|
46
|
+
],
|
|
47
|
+
"description": "Display name."
|
|
48
|
+
},
|
|
49
|
+
"email": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"format": "email",
|
|
52
|
+
"description": "Account email."
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"required": [
|
|
56
|
+
"id",
|
|
57
|
+
"email"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"annotations": {
|
|
61
|
+
"readOnlyHint": true,
|
|
62
|
+
"destructiveHint": false,
|
|
63
|
+
"idempotentHint": true,
|
|
64
|
+
"openWorldHint": false
|
|
65
|
+
},
|
|
66
|
+
"_http": {
|
|
67
|
+
"method": "GET",
|
|
68
|
+
"path": "/api/v1/me"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "list_campaigns",
|
|
73
|
+
"title": "List Campaigns",
|
|
74
|
+
"description": "Lists email campaigns for the account. Supports filtering by status and cursor-based pagination. Pass the returned nextCursor to fetch the next page.",
|
|
75
|
+
"inputSchema": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"properties": {
|
|
78
|
+
"status": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"enum": [
|
|
81
|
+
"DRAFT",
|
|
82
|
+
"ACTIVE",
|
|
83
|
+
"PAUSED",
|
|
84
|
+
"COMPLETED",
|
|
85
|
+
"ARCHIVED"
|
|
86
|
+
],
|
|
87
|
+
"description": "Filter campaigns by status."
|
|
88
|
+
},
|
|
89
|
+
"cursor": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"description": "Pagination cursor from the previous response's nextCursor."
|
|
92
|
+
},
|
|
93
|
+
"limit": {
|
|
94
|
+
"type": "integer",
|
|
95
|
+
"minimum": 1,
|
|
96
|
+
"maximum": 100,
|
|
97
|
+
"default": 25,
|
|
98
|
+
"description": "Number of campaigns to return per page."
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"additionalProperties": false
|
|
102
|
+
},
|
|
103
|
+
"outputSchema": {
|
|
104
|
+
"type": "object",
|
|
105
|
+
"properties": {
|
|
106
|
+
"data": {
|
|
107
|
+
"type": "array",
|
|
108
|
+
"items": {
|
|
109
|
+
"type": "object",
|
|
110
|
+
"properties": {
|
|
111
|
+
"id": {
|
|
112
|
+
"type": "string"
|
|
113
|
+
},
|
|
114
|
+
"name": {
|
|
115
|
+
"type": "string"
|
|
116
|
+
},
|
|
117
|
+
"status": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"enum": [
|
|
120
|
+
"DRAFT",
|
|
121
|
+
"ACTIVE",
|
|
122
|
+
"PAUSED",
|
|
123
|
+
"COMPLETED",
|
|
124
|
+
"ARCHIVED"
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
"createdAt": {
|
|
128
|
+
"type": "string",
|
|
129
|
+
"format": "date-time"
|
|
130
|
+
},
|
|
131
|
+
"updatedAt": {
|
|
132
|
+
"type": "string",
|
|
133
|
+
"format": "date-time"
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"required": [
|
|
137
|
+
"id",
|
|
138
|
+
"name",
|
|
139
|
+
"status",
|
|
140
|
+
"createdAt",
|
|
141
|
+
"updatedAt"
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"pagination": {
|
|
146
|
+
"type": "object",
|
|
147
|
+
"properties": {
|
|
148
|
+
"nextCursor": {
|
|
149
|
+
"type": [
|
|
150
|
+
"string",
|
|
151
|
+
"null"
|
|
152
|
+
],
|
|
153
|
+
"description": "Pass this value as the cursor parameter to fetch the next page. Null when no more pages."
|
|
154
|
+
},
|
|
155
|
+
"hasMore": {
|
|
156
|
+
"type": "boolean"
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"required": [
|
|
160
|
+
"nextCursor",
|
|
161
|
+
"hasMore"
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"required": [
|
|
166
|
+
"data"
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
"annotations": {
|
|
170
|
+
"readOnlyHint": true,
|
|
171
|
+
"destructiveHint": false,
|
|
172
|
+
"idempotentHint": true,
|
|
173
|
+
"openWorldHint": false
|
|
174
|
+
},
|
|
175
|
+
"_http": {
|
|
176
|
+
"method": "GET",
|
|
177
|
+
"path": "/api/v1/campaigns"
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"name": "get_campaign",
|
|
182
|
+
"title": "Get Campaign",
|
|
183
|
+
"description": "Returns full details of a single campaign by ID including configuration, steps count, and scheduling settings.",
|
|
184
|
+
"inputSchema": {
|
|
185
|
+
"type": "object",
|
|
186
|
+
"properties": {
|
|
187
|
+
"id": {
|
|
188
|
+
"type": "string",
|
|
189
|
+
"description": "Campaign ID."
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
"required": [
|
|
193
|
+
"id"
|
|
194
|
+
],
|
|
195
|
+
"additionalProperties": false
|
|
196
|
+
},
|
|
197
|
+
"outputSchema": {
|
|
198
|
+
"type": "object",
|
|
199
|
+
"properties": {
|
|
200
|
+
"id": {
|
|
201
|
+
"type": "string"
|
|
202
|
+
},
|
|
203
|
+
"name": {
|
|
204
|
+
"type": "string"
|
|
205
|
+
},
|
|
206
|
+
"status": {
|
|
207
|
+
"type": "string",
|
|
208
|
+
"enum": [
|
|
209
|
+
"DRAFT",
|
|
210
|
+
"ACTIVE",
|
|
211
|
+
"PAUSED",
|
|
212
|
+
"COMPLETED",
|
|
213
|
+
"ARCHIVED"
|
|
214
|
+
]
|
|
215
|
+
},
|
|
216
|
+
"stepsCount": {
|
|
217
|
+
"type": "integer"
|
|
218
|
+
},
|
|
219
|
+
"dailyLimit": {
|
|
220
|
+
"type": "integer"
|
|
221
|
+
},
|
|
222
|
+
"trackOpens": {
|
|
223
|
+
"type": "boolean"
|
|
224
|
+
},
|
|
225
|
+
"trackClicks": {
|
|
226
|
+
"type": "boolean"
|
|
227
|
+
},
|
|
228
|
+
"tags": {
|
|
229
|
+
"type": "array",
|
|
230
|
+
"items": {
|
|
231
|
+
"type": "string"
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
"createdAt": {
|
|
235
|
+
"type": "string",
|
|
236
|
+
"format": "date-time"
|
|
237
|
+
},
|
|
238
|
+
"updatedAt": {
|
|
239
|
+
"type": "string",
|
|
240
|
+
"format": "date-time"
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
"required": [
|
|
244
|
+
"id",
|
|
245
|
+
"name",
|
|
246
|
+
"status",
|
|
247
|
+
"createdAt"
|
|
248
|
+
]
|
|
249
|
+
},
|
|
250
|
+
"annotations": {
|
|
251
|
+
"readOnlyHint": true,
|
|
252
|
+
"destructiveHint": false,
|
|
253
|
+
"idempotentHint": true,
|
|
254
|
+
"openWorldHint": false
|
|
255
|
+
},
|
|
256
|
+
"_http": {
|
|
257
|
+
"method": "GET",
|
|
258
|
+
"path": "/api/v1/campaigns/{id}"
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"name": "get_campaign_stats",
|
|
263
|
+
"title": "Get Campaign Stats",
|
|
264
|
+
"description": "Returns aggregate email performance metrics for a campaign: sent, opened, clicked, replied, bounced counts and calculated rates.",
|
|
265
|
+
"inputSchema": {
|
|
266
|
+
"type": "object",
|
|
267
|
+
"properties": {
|
|
268
|
+
"id": {
|
|
269
|
+
"type": "string",
|
|
270
|
+
"description": "Campaign ID."
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
"required": [
|
|
274
|
+
"id"
|
|
275
|
+
],
|
|
276
|
+
"additionalProperties": false
|
|
277
|
+
},
|
|
278
|
+
"outputSchema": {
|
|
279
|
+
"type": "object",
|
|
280
|
+
"properties": {
|
|
281
|
+
"campaignId": {
|
|
282
|
+
"type": "string"
|
|
283
|
+
},
|
|
284
|
+
"sent": {
|
|
285
|
+
"type": "integer",
|
|
286
|
+
"description": "Total emails sent."
|
|
287
|
+
},
|
|
288
|
+
"opened": {
|
|
289
|
+
"type": "integer",
|
|
290
|
+
"description": "Unique opens."
|
|
291
|
+
},
|
|
292
|
+
"clicked": {
|
|
293
|
+
"type": "integer",
|
|
294
|
+
"description": "Unique clicks."
|
|
295
|
+
},
|
|
296
|
+
"replied": {
|
|
297
|
+
"type": "integer",
|
|
298
|
+
"description": "Reply count."
|
|
299
|
+
},
|
|
300
|
+
"bounced": {
|
|
301
|
+
"type": "integer",
|
|
302
|
+
"description": "Bounce count."
|
|
303
|
+
},
|
|
304
|
+
"openRate": {
|
|
305
|
+
"type": "number",
|
|
306
|
+
"description": "Open rate as percentage (0-100)."
|
|
307
|
+
},
|
|
308
|
+
"clickRate": {
|
|
309
|
+
"type": "number",
|
|
310
|
+
"description": "Click rate as percentage (0-100)."
|
|
311
|
+
},
|
|
312
|
+
"replyRate": {
|
|
313
|
+
"type": "number",
|
|
314
|
+
"description": "Reply rate as percentage (0-100)."
|
|
315
|
+
},
|
|
316
|
+
"bounceRate": {
|
|
317
|
+
"type": "number",
|
|
318
|
+
"description": "Bounce rate as percentage (0-100)."
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
"required": [
|
|
322
|
+
"campaignId",
|
|
323
|
+
"sent",
|
|
324
|
+
"opened",
|
|
325
|
+
"clicked",
|
|
326
|
+
"replied",
|
|
327
|
+
"bounced",
|
|
328
|
+
"openRate",
|
|
329
|
+
"clickRate",
|
|
330
|
+
"replyRate",
|
|
331
|
+
"bounceRate"
|
|
332
|
+
]
|
|
333
|
+
},
|
|
334
|
+
"annotations": {
|
|
335
|
+
"readOnlyHint": true,
|
|
336
|
+
"destructiveHint": false,
|
|
337
|
+
"idempotentHint": true,
|
|
338
|
+
"openWorldHint": false
|
|
339
|
+
},
|
|
340
|
+
"_http": {
|
|
341
|
+
"method": "GET",
|
|
342
|
+
"path": "/api/v1/campaigns/{id}/stats"
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"name": "pause_campaign",
|
|
347
|
+
"title": "Pause Campaign",
|
|
348
|
+
"description": "Transitions an ACTIVE campaign to PAUSED. All pending sends are held until resumed.",
|
|
349
|
+
"inputSchema": {
|
|
350
|
+
"type": "object",
|
|
351
|
+
"properties": {
|
|
352
|
+
"id": {
|
|
353
|
+
"type": "string",
|
|
354
|
+
"description": "Campaign ID to pause."
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
"required": [
|
|
358
|
+
"id"
|
|
359
|
+
],
|
|
360
|
+
"additionalProperties": false
|
|
361
|
+
},
|
|
362
|
+
"outputSchema": {
|
|
363
|
+
"type": "object",
|
|
364
|
+
"properties": {
|
|
365
|
+
"id": {
|
|
366
|
+
"type": "string"
|
|
367
|
+
},
|
|
368
|
+
"status": {
|
|
369
|
+
"type": "string",
|
|
370
|
+
"enum": [
|
|
371
|
+
"PAUSED"
|
|
372
|
+
]
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
"required": [
|
|
376
|
+
"id",
|
|
377
|
+
"status"
|
|
378
|
+
]
|
|
379
|
+
},
|
|
380
|
+
"annotations": {
|
|
381
|
+
"readOnlyHint": false,
|
|
382
|
+
"destructiveHint": false,
|
|
383
|
+
"idempotentHint": true,
|
|
384
|
+
"openWorldHint": false
|
|
385
|
+
},
|
|
386
|
+
"_http": {
|
|
387
|
+
"method": "POST",
|
|
388
|
+
"path": "/api/v1/campaigns/{id}/pause"
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"name": "resume_campaign",
|
|
393
|
+
"title": "Resume Campaign",
|
|
394
|
+
"description": "Transitions a PAUSED campaign back to ACTIVE. Sending resumes from where it left off.",
|
|
395
|
+
"inputSchema": {
|
|
396
|
+
"type": "object",
|
|
397
|
+
"properties": {
|
|
398
|
+
"id": {
|
|
399
|
+
"type": "string",
|
|
400
|
+
"description": "Campaign ID to resume."
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
"required": [
|
|
404
|
+
"id"
|
|
405
|
+
],
|
|
406
|
+
"additionalProperties": false
|
|
407
|
+
},
|
|
408
|
+
"outputSchema": {
|
|
409
|
+
"type": "object",
|
|
410
|
+
"properties": {
|
|
411
|
+
"id": {
|
|
412
|
+
"type": "string"
|
|
413
|
+
},
|
|
414
|
+
"status": {
|
|
415
|
+
"type": "string",
|
|
416
|
+
"enum": [
|
|
417
|
+
"ACTIVE"
|
|
418
|
+
]
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
"required": [
|
|
422
|
+
"id",
|
|
423
|
+
"status"
|
|
424
|
+
]
|
|
425
|
+
},
|
|
426
|
+
"annotations": {
|
|
427
|
+
"readOnlyHint": false,
|
|
428
|
+
"destructiveHint": false,
|
|
429
|
+
"idempotentHint": true,
|
|
430
|
+
"openWorldHint": false
|
|
431
|
+
},
|
|
432
|
+
"_http": {
|
|
433
|
+
"method": "POST",
|
|
434
|
+
"path": "/api/v1/campaigns/{id}/resume"
|
|
435
|
+
}
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"name": "duplicate_campaign",
|
|
439
|
+
"title": "Duplicate Campaign",
|
|
440
|
+
"description": "Creates a DRAFT copy of an existing campaign including all primary steps. Variants are not copied.",
|
|
441
|
+
"inputSchema": {
|
|
442
|
+
"type": "object",
|
|
443
|
+
"properties": {
|
|
444
|
+
"id": {
|
|
445
|
+
"type": "string",
|
|
446
|
+
"description": "Campaign ID to duplicate."
|
|
447
|
+
}
|
|
448
|
+
},
|
|
449
|
+
"required": [
|
|
450
|
+
"id"
|
|
451
|
+
],
|
|
452
|
+
"additionalProperties": false
|
|
453
|
+
},
|
|
454
|
+
"outputSchema": {
|
|
455
|
+
"type": "object",
|
|
456
|
+
"properties": {
|
|
457
|
+
"id": {
|
|
458
|
+
"type": "string",
|
|
459
|
+
"description": "New campaign ID."
|
|
460
|
+
},
|
|
461
|
+
"name": {
|
|
462
|
+
"type": "string",
|
|
463
|
+
"description": "Name with ' (copy)' suffix."
|
|
464
|
+
},
|
|
465
|
+
"status": {
|
|
466
|
+
"type": "string",
|
|
467
|
+
"enum": [
|
|
468
|
+
"DRAFT"
|
|
469
|
+
]
|
|
470
|
+
},
|
|
471
|
+
"createdAt": {
|
|
472
|
+
"type": "string",
|
|
473
|
+
"format": "date-time"
|
|
474
|
+
}
|
|
475
|
+
},
|
|
476
|
+
"required": [
|
|
477
|
+
"id",
|
|
478
|
+
"name",
|
|
479
|
+
"status",
|
|
480
|
+
"createdAt"
|
|
481
|
+
]
|
|
482
|
+
},
|
|
483
|
+
"annotations": {
|
|
484
|
+
"readOnlyHint": false,
|
|
485
|
+
"destructiveHint": false,
|
|
486
|
+
"idempotentHint": false,
|
|
487
|
+
"openWorldHint": false
|
|
488
|
+
},
|
|
489
|
+
"_http": {
|
|
490
|
+
"method": "POST",
|
|
491
|
+
"path": "/api/v1/campaigns/{id}/duplicate"
|
|
492
|
+
}
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"name": "list_contacts",
|
|
496
|
+
"title": "List Contacts",
|
|
497
|
+
"description": "Lists contacts with optional filtering by email substring or status. Supports cursor-based pagination. Pass the returned nextCursor to fetch the next page.",
|
|
498
|
+
"inputSchema": {
|
|
499
|
+
"type": "object",
|
|
500
|
+
"properties": {
|
|
501
|
+
"email": {
|
|
502
|
+
"type": "string",
|
|
503
|
+
"description": "Case-insensitive email substring filter."
|
|
504
|
+
},
|
|
505
|
+
"status": {
|
|
506
|
+
"type": "string",
|
|
507
|
+
"description": "Filter contacts by status."
|
|
508
|
+
},
|
|
509
|
+
"cursor": {
|
|
510
|
+
"type": "string",
|
|
511
|
+
"description": "Pagination cursor from the previous response."
|
|
512
|
+
},
|
|
513
|
+
"limit": {
|
|
514
|
+
"type": "integer",
|
|
515
|
+
"minimum": 1,
|
|
516
|
+
"maximum": 100,
|
|
517
|
+
"default": 25,
|
|
518
|
+
"description": "Number of contacts to return per page."
|
|
519
|
+
}
|
|
520
|
+
},
|
|
521
|
+
"additionalProperties": false
|
|
522
|
+
},
|
|
523
|
+
"outputSchema": {
|
|
524
|
+
"type": "object",
|
|
525
|
+
"properties": {
|
|
526
|
+
"data": {
|
|
527
|
+
"type": "array",
|
|
528
|
+
"items": {
|
|
529
|
+
"type": "object",
|
|
530
|
+
"properties": {
|
|
531
|
+
"id": {
|
|
532
|
+
"type": "string"
|
|
533
|
+
},
|
|
534
|
+
"email": {
|
|
535
|
+
"type": "string",
|
|
536
|
+
"format": "email"
|
|
537
|
+
},
|
|
538
|
+
"firstName": {
|
|
539
|
+
"type": [
|
|
540
|
+
"string",
|
|
541
|
+
"null"
|
|
542
|
+
]
|
|
543
|
+
},
|
|
544
|
+
"lastName": {
|
|
545
|
+
"type": [
|
|
546
|
+
"string",
|
|
547
|
+
"null"
|
|
548
|
+
]
|
|
549
|
+
},
|
|
550
|
+
"company": {
|
|
551
|
+
"type": [
|
|
552
|
+
"string",
|
|
553
|
+
"null"
|
|
554
|
+
]
|
|
555
|
+
},
|
|
556
|
+
"title": {
|
|
557
|
+
"type": [
|
|
558
|
+
"string",
|
|
559
|
+
"null"
|
|
560
|
+
]
|
|
561
|
+
},
|
|
562
|
+
"status": {
|
|
563
|
+
"type": "string"
|
|
564
|
+
},
|
|
565
|
+
"customFields": {
|
|
566
|
+
"type": [
|
|
567
|
+
"object",
|
|
568
|
+
"null"
|
|
569
|
+
],
|
|
570
|
+
"additionalProperties": true
|
|
571
|
+
},
|
|
572
|
+
"createdAt": {
|
|
573
|
+
"type": "string",
|
|
574
|
+
"format": "date-time"
|
|
575
|
+
},
|
|
576
|
+
"updatedAt": {
|
|
577
|
+
"type": "string",
|
|
578
|
+
"format": "date-time"
|
|
579
|
+
}
|
|
580
|
+
},
|
|
581
|
+
"required": [
|
|
582
|
+
"id",
|
|
583
|
+
"email",
|
|
584
|
+
"status",
|
|
585
|
+
"createdAt",
|
|
586
|
+
"updatedAt"
|
|
587
|
+
]
|
|
588
|
+
}
|
|
589
|
+
},
|
|
590
|
+
"pagination": {
|
|
591
|
+
"type": "object",
|
|
592
|
+
"properties": {
|
|
593
|
+
"nextCursor": {
|
|
594
|
+
"type": [
|
|
595
|
+
"string",
|
|
596
|
+
"null"
|
|
597
|
+
],
|
|
598
|
+
"description": "Pass this value as cursor to fetch the next page. Null when no more pages."
|
|
599
|
+
},
|
|
600
|
+
"hasMore": {
|
|
601
|
+
"type": "boolean"
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
"required": [
|
|
605
|
+
"nextCursor",
|
|
606
|
+
"hasMore"
|
|
607
|
+
]
|
|
608
|
+
}
|
|
609
|
+
},
|
|
610
|
+
"required": [
|
|
611
|
+
"data",
|
|
612
|
+
"pagination"
|
|
613
|
+
]
|
|
614
|
+
},
|
|
615
|
+
"annotations": {
|
|
616
|
+
"readOnlyHint": true,
|
|
617
|
+
"destructiveHint": false,
|
|
618
|
+
"idempotentHint": true,
|
|
619
|
+
"openWorldHint": false
|
|
620
|
+
},
|
|
621
|
+
"_http": {
|
|
622
|
+
"method": "GET",
|
|
623
|
+
"path": "/api/v1/contacts"
|
|
624
|
+
}
|
|
625
|
+
},
|
|
626
|
+
{
|
|
627
|
+
"name": "get_contact",
|
|
628
|
+
"title": "Get Contact",
|
|
629
|
+
"description": "Returns a single contact by ID including all fields and custom fields.",
|
|
630
|
+
"inputSchema": {
|
|
631
|
+
"type": "object",
|
|
632
|
+
"properties": {
|
|
633
|
+
"id": {
|
|
634
|
+
"type": "string",
|
|
635
|
+
"description": "Contact ID."
|
|
636
|
+
}
|
|
637
|
+
},
|
|
638
|
+
"required": [
|
|
639
|
+
"id"
|
|
640
|
+
],
|
|
641
|
+
"additionalProperties": false
|
|
642
|
+
},
|
|
643
|
+
"outputSchema": {
|
|
644
|
+
"type": "object",
|
|
645
|
+
"properties": {
|
|
646
|
+
"id": {
|
|
647
|
+
"type": "string"
|
|
648
|
+
},
|
|
649
|
+
"email": {
|
|
650
|
+
"type": "string",
|
|
651
|
+
"format": "email"
|
|
652
|
+
},
|
|
653
|
+
"firstName": {
|
|
654
|
+
"type": [
|
|
655
|
+
"string",
|
|
656
|
+
"null"
|
|
657
|
+
]
|
|
658
|
+
},
|
|
659
|
+
"lastName": {
|
|
660
|
+
"type": [
|
|
661
|
+
"string",
|
|
662
|
+
"null"
|
|
663
|
+
]
|
|
664
|
+
},
|
|
665
|
+
"company": {
|
|
666
|
+
"type": [
|
|
667
|
+
"string",
|
|
668
|
+
"null"
|
|
669
|
+
]
|
|
670
|
+
},
|
|
671
|
+
"title": {
|
|
672
|
+
"type": [
|
|
673
|
+
"string",
|
|
674
|
+
"null"
|
|
675
|
+
]
|
|
676
|
+
},
|
|
677
|
+
"status": {
|
|
678
|
+
"type": "string"
|
|
679
|
+
},
|
|
680
|
+
"customFields": {
|
|
681
|
+
"type": [
|
|
682
|
+
"object",
|
|
683
|
+
"null"
|
|
684
|
+
],
|
|
685
|
+
"additionalProperties": true
|
|
686
|
+
},
|
|
687
|
+
"createdAt": {
|
|
688
|
+
"type": "string",
|
|
689
|
+
"format": "date-time"
|
|
690
|
+
},
|
|
691
|
+
"updatedAt": {
|
|
692
|
+
"type": "string",
|
|
693
|
+
"format": "date-time"
|
|
694
|
+
}
|
|
695
|
+
},
|
|
696
|
+
"required": [
|
|
697
|
+
"id",
|
|
698
|
+
"email",
|
|
699
|
+
"status",
|
|
700
|
+
"createdAt",
|
|
701
|
+
"updatedAt"
|
|
702
|
+
]
|
|
703
|
+
},
|
|
704
|
+
"annotations": {
|
|
705
|
+
"readOnlyHint": true,
|
|
706
|
+
"destructiveHint": false,
|
|
707
|
+
"idempotentHint": true,
|
|
708
|
+
"openWorldHint": false
|
|
709
|
+
},
|
|
710
|
+
"_http": {
|
|
711
|
+
"method": "GET",
|
|
712
|
+
"path": "/api/v1/contacts/{id}"
|
|
713
|
+
}
|
|
714
|
+
},
|
|
715
|
+
{
|
|
716
|
+
"name": "create_contact",
|
|
717
|
+
"title": "Create Contact",
|
|
718
|
+
"description": "Creates a single contact. Returns 409 if a contact with the same email already exists.",
|
|
719
|
+
"inputSchema": {
|
|
720
|
+
"type": "object",
|
|
721
|
+
"properties": {
|
|
722
|
+
"email": {
|
|
723
|
+
"type": "string",
|
|
724
|
+
"format": "email",
|
|
725
|
+
"description": "Contact email address. Must be unique."
|
|
726
|
+
},
|
|
727
|
+
"firstName": {
|
|
728
|
+
"type": "string",
|
|
729
|
+
"description": "First name."
|
|
730
|
+
},
|
|
731
|
+
"lastName": {
|
|
732
|
+
"type": "string",
|
|
733
|
+
"description": "Last name."
|
|
734
|
+
},
|
|
735
|
+
"company": {
|
|
736
|
+
"type": "string",
|
|
737
|
+
"description": "Company name."
|
|
738
|
+
},
|
|
739
|
+
"title": {
|
|
740
|
+
"type": "string",
|
|
741
|
+
"description": "Job title."
|
|
742
|
+
},
|
|
743
|
+
"customFields": {
|
|
744
|
+
"type": "object",
|
|
745
|
+
"additionalProperties": true,
|
|
746
|
+
"description": "Arbitrary key-value custom fields."
|
|
747
|
+
}
|
|
748
|
+
},
|
|
749
|
+
"required": [
|
|
750
|
+
"email"
|
|
751
|
+
],
|
|
752
|
+
"additionalProperties": false
|
|
753
|
+
},
|
|
754
|
+
"outputSchema": {
|
|
755
|
+
"type": "object",
|
|
756
|
+
"properties": {
|
|
757
|
+
"id": {
|
|
758
|
+
"type": "string"
|
|
759
|
+
},
|
|
760
|
+
"email": {
|
|
761
|
+
"type": "string",
|
|
762
|
+
"format": "email"
|
|
763
|
+
},
|
|
764
|
+
"firstName": {
|
|
765
|
+
"type": [
|
|
766
|
+
"string",
|
|
767
|
+
"null"
|
|
768
|
+
]
|
|
769
|
+
},
|
|
770
|
+
"lastName": {
|
|
771
|
+
"type": [
|
|
772
|
+
"string",
|
|
773
|
+
"null"
|
|
774
|
+
]
|
|
775
|
+
},
|
|
776
|
+
"company": {
|
|
777
|
+
"type": [
|
|
778
|
+
"string",
|
|
779
|
+
"null"
|
|
780
|
+
]
|
|
781
|
+
},
|
|
782
|
+
"title": {
|
|
783
|
+
"type": [
|
|
784
|
+
"string",
|
|
785
|
+
"null"
|
|
786
|
+
]
|
|
787
|
+
},
|
|
788
|
+
"status": {
|
|
789
|
+
"type": "string"
|
|
790
|
+
},
|
|
791
|
+
"createdAt": {
|
|
792
|
+
"type": "string",
|
|
793
|
+
"format": "date-time"
|
|
794
|
+
},
|
|
795
|
+
"updatedAt": {
|
|
796
|
+
"type": "string",
|
|
797
|
+
"format": "date-time"
|
|
798
|
+
}
|
|
799
|
+
},
|
|
800
|
+
"required": [
|
|
801
|
+
"id",
|
|
802
|
+
"email",
|
|
803
|
+
"status",
|
|
804
|
+
"createdAt",
|
|
805
|
+
"updatedAt"
|
|
806
|
+
]
|
|
807
|
+
},
|
|
808
|
+
"annotations": {
|
|
809
|
+
"readOnlyHint": false,
|
|
810
|
+
"destructiveHint": false,
|
|
811
|
+
"idempotentHint": false,
|
|
812
|
+
"openWorldHint": false
|
|
813
|
+
},
|
|
814
|
+
"_http": {
|
|
815
|
+
"method": "POST",
|
|
816
|
+
"path": "/api/v1/contacts"
|
|
817
|
+
}
|
|
818
|
+
},
|
|
819
|
+
{
|
|
820
|
+
"name": "update_contact",
|
|
821
|
+
"title": "Update Contact",
|
|
822
|
+
"description": "Updates mutable fields on a contact. Only provided fields are changed; omitted fields are left untouched.",
|
|
823
|
+
"inputSchema": {
|
|
824
|
+
"type": "object",
|
|
825
|
+
"properties": {
|
|
826
|
+
"id": {
|
|
827
|
+
"type": "string",
|
|
828
|
+
"description": "Contact ID to update."
|
|
829
|
+
},
|
|
830
|
+
"firstName": {
|
|
831
|
+
"type": [
|
|
832
|
+
"string",
|
|
833
|
+
"null"
|
|
834
|
+
],
|
|
835
|
+
"description": "New first name, or null to clear."
|
|
836
|
+
},
|
|
837
|
+
"lastName": {
|
|
838
|
+
"type": [
|
|
839
|
+
"string",
|
|
840
|
+
"null"
|
|
841
|
+
],
|
|
842
|
+
"description": "New last name, or null to clear."
|
|
843
|
+
},
|
|
844
|
+
"company": {
|
|
845
|
+
"type": [
|
|
846
|
+
"string",
|
|
847
|
+
"null"
|
|
848
|
+
],
|
|
849
|
+
"description": "New company, or null to clear."
|
|
850
|
+
},
|
|
851
|
+
"title": {
|
|
852
|
+
"type": [
|
|
853
|
+
"string",
|
|
854
|
+
"null"
|
|
855
|
+
],
|
|
856
|
+
"description": "New job title, or null to clear."
|
|
857
|
+
},
|
|
858
|
+
"customFields": {
|
|
859
|
+
"type": [
|
|
860
|
+
"object",
|
|
861
|
+
"null"
|
|
862
|
+
],
|
|
863
|
+
"additionalProperties": true,
|
|
864
|
+
"description": "Replace custom fields object."
|
|
865
|
+
}
|
|
866
|
+
},
|
|
867
|
+
"required": [
|
|
868
|
+
"id"
|
|
869
|
+
],
|
|
870
|
+
"additionalProperties": false
|
|
871
|
+
},
|
|
872
|
+
"outputSchema": {
|
|
873
|
+
"type": "object",
|
|
874
|
+
"properties": {
|
|
875
|
+
"id": {
|
|
876
|
+
"type": "string"
|
|
877
|
+
},
|
|
878
|
+
"email": {
|
|
879
|
+
"type": "string",
|
|
880
|
+
"format": "email"
|
|
881
|
+
},
|
|
882
|
+
"firstName": {
|
|
883
|
+
"type": [
|
|
884
|
+
"string",
|
|
885
|
+
"null"
|
|
886
|
+
]
|
|
887
|
+
},
|
|
888
|
+
"lastName": {
|
|
889
|
+
"type": [
|
|
890
|
+
"string",
|
|
891
|
+
"null"
|
|
892
|
+
]
|
|
893
|
+
},
|
|
894
|
+
"company": {
|
|
895
|
+
"type": [
|
|
896
|
+
"string",
|
|
897
|
+
"null"
|
|
898
|
+
]
|
|
899
|
+
},
|
|
900
|
+
"title": {
|
|
901
|
+
"type": [
|
|
902
|
+
"string",
|
|
903
|
+
"null"
|
|
904
|
+
]
|
|
905
|
+
},
|
|
906
|
+
"status": {
|
|
907
|
+
"type": "string"
|
|
908
|
+
},
|
|
909
|
+
"customFields": {
|
|
910
|
+
"type": [
|
|
911
|
+
"object",
|
|
912
|
+
"null"
|
|
913
|
+
],
|
|
914
|
+
"additionalProperties": true
|
|
915
|
+
},
|
|
916
|
+
"createdAt": {
|
|
917
|
+
"type": "string",
|
|
918
|
+
"format": "date-time"
|
|
919
|
+
},
|
|
920
|
+
"updatedAt": {
|
|
921
|
+
"type": "string",
|
|
922
|
+
"format": "date-time"
|
|
923
|
+
}
|
|
924
|
+
},
|
|
925
|
+
"required": [
|
|
926
|
+
"id",
|
|
927
|
+
"email",
|
|
928
|
+
"status",
|
|
929
|
+
"createdAt",
|
|
930
|
+
"updatedAt"
|
|
931
|
+
]
|
|
932
|
+
},
|
|
933
|
+
"annotations": {
|
|
934
|
+
"readOnlyHint": false,
|
|
935
|
+
"destructiveHint": false,
|
|
936
|
+
"idempotentHint": true,
|
|
937
|
+
"openWorldHint": false
|
|
938
|
+
},
|
|
939
|
+
"_http": {
|
|
940
|
+
"method": "PATCH",
|
|
941
|
+
"path": "/api/v1/contacts/{id}"
|
|
942
|
+
}
|
|
943
|
+
},
|
|
944
|
+
{
|
|
945
|
+
"name": "delete_contact",
|
|
946
|
+
"title": "Delete Contact",
|
|
947
|
+
"description": "Soft-deletes a contact. The contact is hidden from lists but retained internally for audit. Returns 204 with no body on success.",
|
|
948
|
+
"inputSchema": {
|
|
949
|
+
"type": "object",
|
|
950
|
+
"properties": {
|
|
951
|
+
"id": {
|
|
952
|
+
"type": "string",
|
|
953
|
+
"description": "Contact ID to delete."
|
|
954
|
+
}
|
|
955
|
+
},
|
|
956
|
+
"required": [
|
|
957
|
+
"id"
|
|
958
|
+
],
|
|
959
|
+
"additionalProperties": false
|
|
960
|
+
},
|
|
961
|
+
"annotations": {
|
|
962
|
+
"readOnlyHint": false,
|
|
963
|
+
"destructiveHint": true,
|
|
964
|
+
"idempotentHint": true,
|
|
965
|
+
"openWorldHint": false
|
|
966
|
+
},
|
|
967
|
+
"_http": {
|
|
968
|
+
"method": "DELETE",
|
|
969
|
+
"path": "/api/v1/contacts/{id}"
|
|
970
|
+
}
|
|
971
|
+
},
|
|
972
|
+
{
|
|
973
|
+
"name": "list_enrollments",
|
|
974
|
+
"title": "List Campaign Enrollments",
|
|
975
|
+
"description": "Lists all enrollments (contact progressions) for a specific campaign.",
|
|
976
|
+
"inputSchema": {
|
|
977
|
+
"type": "object",
|
|
978
|
+
"properties": {
|
|
979
|
+
"campaignId": {
|
|
980
|
+
"type": "string",
|
|
981
|
+
"description": "Campaign ID to list enrollments for."
|
|
982
|
+
}
|
|
983
|
+
},
|
|
984
|
+
"required": [
|
|
985
|
+
"campaignId"
|
|
986
|
+
],
|
|
987
|
+
"additionalProperties": false
|
|
988
|
+
},
|
|
989
|
+
"outputSchema": {
|
|
990
|
+
"type": "object",
|
|
991
|
+
"properties": {
|
|
992
|
+
"data": {
|
|
993
|
+
"type": "array",
|
|
994
|
+
"items": {
|
|
995
|
+
"type": "object",
|
|
996
|
+
"properties": {
|
|
997
|
+
"id": {
|
|
998
|
+
"type": "string"
|
|
999
|
+
},
|
|
1000
|
+
"campaignId": {
|
|
1001
|
+
"type": "string"
|
|
1002
|
+
},
|
|
1003
|
+
"contactId": {
|
|
1004
|
+
"type": "string"
|
|
1005
|
+
},
|
|
1006
|
+
"contactEmail": {
|
|
1007
|
+
"type": "string",
|
|
1008
|
+
"format": "email"
|
|
1009
|
+
},
|
|
1010
|
+
"status": {
|
|
1011
|
+
"type": "string"
|
|
1012
|
+
},
|
|
1013
|
+
"currentStep": {
|
|
1014
|
+
"type": "integer"
|
|
1015
|
+
},
|
|
1016
|
+
"scheduledAt": {
|
|
1017
|
+
"type": [
|
|
1018
|
+
"string",
|
|
1019
|
+
"null"
|
|
1020
|
+
],
|
|
1021
|
+
"format": "date-time"
|
|
1022
|
+
},
|
|
1023
|
+
"createdAt": {
|
|
1024
|
+
"type": "string",
|
|
1025
|
+
"format": "date-time"
|
|
1026
|
+
},
|
|
1027
|
+
"updatedAt": {
|
|
1028
|
+
"type": "string",
|
|
1029
|
+
"format": "date-time"
|
|
1030
|
+
}
|
|
1031
|
+
},
|
|
1032
|
+
"required": [
|
|
1033
|
+
"id",
|
|
1034
|
+
"campaignId",
|
|
1035
|
+
"contactId",
|
|
1036
|
+
"status",
|
|
1037
|
+
"currentStep",
|
|
1038
|
+
"createdAt"
|
|
1039
|
+
]
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
},
|
|
1043
|
+
"required": [
|
|
1044
|
+
"data"
|
|
1045
|
+
]
|
|
1046
|
+
},
|
|
1047
|
+
"annotations": {
|
|
1048
|
+
"readOnlyHint": true,
|
|
1049
|
+
"destructiveHint": false,
|
|
1050
|
+
"idempotentHint": true,
|
|
1051
|
+
"openWorldHint": false
|
|
1052
|
+
},
|
|
1053
|
+
"_http": {
|
|
1054
|
+
"method": "GET",
|
|
1055
|
+
"path": "/api/v1/campaigns/{campaignId}/enrollments"
|
|
1056
|
+
}
|
|
1057
|
+
},
|
|
1058
|
+
{
|
|
1059
|
+
"name": "enroll_contacts",
|
|
1060
|
+
"title": "Enroll Contact Lists",
|
|
1061
|
+
"description": "Enrolls all contacts from one or more contact lists into a campaign. Contacts already enrolled are skipped.",
|
|
1062
|
+
"inputSchema": {
|
|
1063
|
+
"type": "object",
|
|
1064
|
+
"properties": {
|
|
1065
|
+
"campaignId": {
|
|
1066
|
+
"type": "string",
|
|
1067
|
+
"description": "Campaign ID to enroll contacts into."
|
|
1068
|
+
},
|
|
1069
|
+
"listIds": {
|
|
1070
|
+
"type": "array",
|
|
1071
|
+
"items": {
|
|
1072
|
+
"type": "string"
|
|
1073
|
+
},
|
|
1074
|
+
"minItems": 1,
|
|
1075
|
+
"description": "Contact list IDs whose members will be enrolled."
|
|
1076
|
+
}
|
|
1077
|
+
},
|
|
1078
|
+
"required": [
|
|
1079
|
+
"campaignId",
|
|
1080
|
+
"listIds"
|
|
1081
|
+
],
|
|
1082
|
+
"additionalProperties": false
|
|
1083
|
+
},
|
|
1084
|
+
"outputSchema": {
|
|
1085
|
+
"type": "object",
|
|
1086
|
+
"additionalProperties": true,
|
|
1087
|
+
"description": "Enrollment summary with counts of enrolled and skipped contacts."
|
|
1088
|
+
},
|
|
1089
|
+
"annotations": {
|
|
1090
|
+
"readOnlyHint": false,
|
|
1091
|
+
"destructiveHint": false,
|
|
1092
|
+
"idempotentHint": false,
|
|
1093
|
+
"openWorldHint": false
|
|
1094
|
+
},
|
|
1095
|
+
"_http": {
|
|
1096
|
+
"method": "POST",
|
|
1097
|
+
"path": "/api/v1/campaigns/{campaignId}/enrollments"
|
|
1098
|
+
}
|
|
1099
|
+
},
|
|
1100
|
+
{
|
|
1101
|
+
"name": "get_enrollment",
|
|
1102
|
+
"title": "Get Enrollment",
|
|
1103
|
+
"description": "Returns one enrollment by ID, including the contact email, current step, and scheduling info.",
|
|
1104
|
+
"inputSchema": {
|
|
1105
|
+
"type": "object",
|
|
1106
|
+
"properties": {
|
|
1107
|
+
"id": {
|
|
1108
|
+
"type": "string",
|
|
1109
|
+
"description": "Enrollment ID."
|
|
1110
|
+
}
|
|
1111
|
+
},
|
|
1112
|
+
"required": [
|
|
1113
|
+
"id"
|
|
1114
|
+
],
|
|
1115
|
+
"additionalProperties": false
|
|
1116
|
+
},
|
|
1117
|
+
"outputSchema": {
|
|
1118
|
+
"type": "object",
|
|
1119
|
+
"properties": {
|
|
1120
|
+
"id": {
|
|
1121
|
+
"type": "string"
|
|
1122
|
+
},
|
|
1123
|
+
"campaignId": {
|
|
1124
|
+
"type": "string"
|
|
1125
|
+
},
|
|
1126
|
+
"contactId": {
|
|
1127
|
+
"type": "string"
|
|
1128
|
+
},
|
|
1129
|
+
"contactEmail": {
|
|
1130
|
+
"type": "string",
|
|
1131
|
+
"format": "email"
|
|
1132
|
+
},
|
|
1133
|
+
"status": {
|
|
1134
|
+
"type": "string"
|
|
1135
|
+
},
|
|
1136
|
+
"currentStep": {
|
|
1137
|
+
"type": "integer"
|
|
1138
|
+
},
|
|
1139
|
+
"scheduledAt": {
|
|
1140
|
+
"type": [
|
|
1141
|
+
"string",
|
|
1142
|
+
"null"
|
|
1143
|
+
],
|
|
1144
|
+
"format": "date-time"
|
|
1145
|
+
},
|
|
1146
|
+
"createdAt": {
|
|
1147
|
+
"type": "string",
|
|
1148
|
+
"format": "date-time"
|
|
1149
|
+
},
|
|
1150
|
+
"updatedAt": {
|
|
1151
|
+
"type": "string",
|
|
1152
|
+
"format": "date-time"
|
|
1153
|
+
}
|
|
1154
|
+
},
|
|
1155
|
+
"required": [
|
|
1156
|
+
"id",
|
|
1157
|
+
"campaignId",
|
|
1158
|
+
"contactId",
|
|
1159
|
+
"contactEmail",
|
|
1160
|
+
"status",
|
|
1161
|
+
"currentStep",
|
|
1162
|
+
"createdAt",
|
|
1163
|
+
"updatedAt"
|
|
1164
|
+
]
|
|
1165
|
+
},
|
|
1166
|
+
"annotations": {
|
|
1167
|
+
"readOnlyHint": true,
|
|
1168
|
+
"destructiveHint": false,
|
|
1169
|
+
"idempotentHint": true,
|
|
1170
|
+
"openWorldHint": false
|
|
1171
|
+
},
|
|
1172
|
+
"_http": {
|
|
1173
|
+
"method": "GET",
|
|
1174
|
+
"path": "/api/v1/enrollments/{id}"
|
|
1175
|
+
}
|
|
1176
|
+
},
|
|
1177
|
+
{
|
|
1178
|
+
"name": "pause_enrollment",
|
|
1179
|
+
"title": "Pause Enrollment",
|
|
1180
|
+
"description": "Pauses an ACTIVE enrollment. The contact will not receive further emails until resumed.",
|
|
1181
|
+
"inputSchema": {
|
|
1182
|
+
"type": "object",
|
|
1183
|
+
"properties": {
|
|
1184
|
+
"id": {
|
|
1185
|
+
"type": "string",
|
|
1186
|
+
"description": "Enrollment ID to pause."
|
|
1187
|
+
}
|
|
1188
|
+
},
|
|
1189
|
+
"required": [
|
|
1190
|
+
"id"
|
|
1191
|
+
],
|
|
1192
|
+
"additionalProperties": false
|
|
1193
|
+
},
|
|
1194
|
+
"outputSchema": {
|
|
1195
|
+
"type": "object",
|
|
1196
|
+
"properties": {
|
|
1197
|
+
"id": {
|
|
1198
|
+
"type": "string"
|
|
1199
|
+
},
|
|
1200
|
+
"status": {
|
|
1201
|
+
"type": "string",
|
|
1202
|
+
"enum": [
|
|
1203
|
+
"PAUSED"
|
|
1204
|
+
]
|
|
1205
|
+
}
|
|
1206
|
+
},
|
|
1207
|
+
"required": [
|
|
1208
|
+
"id",
|
|
1209
|
+
"status"
|
|
1210
|
+
]
|
|
1211
|
+
},
|
|
1212
|
+
"annotations": {
|
|
1213
|
+
"readOnlyHint": false,
|
|
1214
|
+
"destructiveHint": false,
|
|
1215
|
+
"idempotentHint": true,
|
|
1216
|
+
"openWorldHint": false
|
|
1217
|
+
},
|
|
1218
|
+
"_http": {
|
|
1219
|
+
"method": "POST",
|
|
1220
|
+
"path": "/api/v1/enrollments/{id}/pause"
|
|
1221
|
+
}
|
|
1222
|
+
},
|
|
1223
|
+
{
|
|
1224
|
+
"name": "resume_enrollment",
|
|
1225
|
+
"title": "Resume Enrollment",
|
|
1226
|
+
"description": "Resumes a PAUSED enrollment. The contact will continue receiving emails from the next scheduled step.",
|
|
1227
|
+
"inputSchema": {
|
|
1228
|
+
"type": "object",
|
|
1229
|
+
"properties": {
|
|
1230
|
+
"id": {
|
|
1231
|
+
"type": "string",
|
|
1232
|
+
"description": "Enrollment ID to resume."
|
|
1233
|
+
}
|
|
1234
|
+
},
|
|
1235
|
+
"required": [
|
|
1236
|
+
"id"
|
|
1237
|
+
],
|
|
1238
|
+
"additionalProperties": false
|
|
1239
|
+
},
|
|
1240
|
+
"outputSchema": {
|
|
1241
|
+
"type": "object",
|
|
1242
|
+
"properties": {
|
|
1243
|
+
"id": {
|
|
1244
|
+
"type": "string"
|
|
1245
|
+
},
|
|
1246
|
+
"status": {
|
|
1247
|
+
"type": "string",
|
|
1248
|
+
"enum": [
|
|
1249
|
+
"ACTIVE"
|
|
1250
|
+
]
|
|
1251
|
+
}
|
|
1252
|
+
},
|
|
1253
|
+
"required": [
|
|
1254
|
+
"id",
|
|
1255
|
+
"status"
|
|
1256
|
+
]
|
|
1257
|
+
},
|
|
1258
|
+
"annotations": {
|
|
1259
|
+
"readOnlyHint": false,
|
|
1260
|
+
"destructiveHint": false,
|
|
1261
|
+
"idempotentHint": true,
|
|
1262
|
+
"openWorldHint": false
|
|
1263
|
+
},
|
|
1264
|
+
"_http": {
|
|
1265
|
+
"method": "POST",
|
|
1266
|
+
"path": "/api/v1/enrollments/{id}/resume"
|
|
1267
|
+
}
|
|
1268
|
+
},
|
|
1269
|
+
{
|
|
1270
|
+
"name": "list_mailboxes",
|
|
1271
|
+
"title": "List Mailboxes",
|
|
1272
|
+
"description": "Lists all sender mailboxes connected to the account.",
|
|
1273
|
+
"inputSchema": {
|
|
1274
|
+
"type": "object",
|
|
1275
|
+
"additionalProperties": false
|
|
1276
|
+
},
|
|
1277
|
+
"outputSchema": {
|
|
1278
|
+
"type": "object",
|
|
1279
|
+
"properties": {
|
|
1280
|
+
"data": {
|
|
1281
|
+
"type": "array",
|
|
1282
|
+
"items": {
|
|
1283
|
+
"type": "object",
|
|
1284
|
+
"properties": {
|
|
1285
|
+
"id": {
|
|
1286
|
+
"type": "string"
|
|
1287
|
+
},
|
|
1288
|
+
"emailAddress": {
|
|
1289
|
+
"type": "string",
|
|
1290
|
+
"format": "email"
|
|
1291
|
+
},
|
|
1292
|
+
"displayName": {
|
|
1293
|
+
"type": [
|
|
1294
|
+
"string",
|
|
1295
|
+
"null"
|
|
1296
|
+
]
|
|
1297
|
+
},
|
|
1298
|
+
"provider": {
|
|
1299
|
+
"type": "string",
|
|
1300
|
+
"enum": [
|
|
1301
|
+
"GOOGLE",
|
|
1302
|
+
"MICROSOFT",
|
|
1303
|
+
"SMTP"
|
|
1304
|
+
]
|
|
1305
|
+
},
|
|
1306
|
+
"status": {
|
|
1307
|
+
"type": "string"
|
|
1308
|
+
},
|
|
1309
|
+
"createdAt": {
|
|
1310
|
+
"type": "string",
|
|
1311
|
+
"format": "date-time"
|
|
1312
|
+
}
|
|
1313
|
+
},
|
|
1314
|
+
"required": [
|
|
1315
|
+
"id",
|
|
1316
|
+
"emailAddress",
|
|
1317
|
+
"provider",
|
|
1318
|
+
"status",
|
|
1319
|
+
"createdAt"
|
|
1320
|
+
]
|
|
1321
|
+
}
|
|
1322
|
+
}
|
|
1323
|
+
},
|
|
1324
|
+
"required": [
|
|
1325
|
+
"data"
|
|
1326
|
+
]
|
|
1327
|
+
},
|
|
1328
|
+
"annotations": {
|
|
1329
|
+
"readOnlyHint": true,
|
|
1330
|
+
"destructiveHint": false,
|
|
1331
|
+
"idempotentHint": true,
|
|
1332
|
+
"openWorldHint": false
|
|
1333
|
+
},
|
|
1334
|
+
"_http": {
|
|
1335
|
+
"method": "GET",
|
|
1336
|
+
"path": "/api/v1/mailboxes"
|
|
1337
|
+
}
|
|
1338
|
+
},
|
|
1339
|
+
{
|
|
1340
|
+
"name": "get_mailbox",
|
|
1341
|
+
"title": "Get Mailbox",
|
|
1342
|
+
"description": "Returns mailbox details including SMTP/IMAP connection health and DNS record status (MX, SPF, DKIM).",
|
|
1343
|
+
"inputSchema": {
|
|
1344
|
+
"type": "object",
|
|
1345
|
+
"properties": {
|
|
1346
|
+
"id": {
|
|
1347
|
+
"type": "string",
|
|
1348
|
+
"description": "Mailbox ID."
|
|
1349
|
+
}
|
|
1350
|
+
},
|
|
1351
|
+
"required": [
|
|
1352
|
+
"id"
|
|
1353
|
+
],
|
|
1354
|
+
"additionalProperties": false
|
|
1355
|
+
},
|
|
1356
|
+
"outputSchema": {
|
|
1357
|
+
"type": "object",
|
|
1358
|
+
"properties": {
|
|
1359
|
+
"id": {
|
|
1360
|
+
"type": "string"
|
|
1361
|
+
},
|
|
1362
|
+
"emailAddress": {
|
|
1363
|
+
"type": "string",
|
|
1364
|
+
"format": "email"
|
|
1365
|
+
},
|
|
1366
|
+
"displayName": {
|
|
1367
|
+
"type": [
|
|
1368
|
+
"string",
|
|
1369
|
+
"null"
|
|
1370
|
+
]
|
|
1371
|
+
},
|
|
1372
|
+
"provider": {
|
|
1373
|
+
"type": "string",
|
|
1374
|
+
"enum": [
|
|
1375
|
+
"GOOGLE",
|
|
1376
|
+
"MICROSOFT",
|
|
1377
|
+
"SMTP"
|
|
1378
|
+
]
|
|
1379
|
+
},
|
|
1380
|
+
"status": {
|
|
1381
|
+
"type": "string"
|
|
1382
|
+
},
|
|
1383
|
+
"smtpOk": {
|
|
1384
|
+
"type": [
|
|
1385
|
+
"boolean",
|
|
1386
|
+
"null"
|
|
1387
|
+
],
|
|
1388
|
+
"description": "SMTP connectivity status."
|
|
1389
|
+
},
|
|
1390
|
+
"imapOk": {
|
|
1391
|
+
"type": [
|
|
1392
|
+
"boolean",
|
|
1393
|
+
"null"
|
|
1394
|
+
],
|
|
1395
|
+
"description": "IMAP connectivity status."
|
|
1396
|
+
},
|
|
1397
|
+
"dnsMxOk": {
|
|
1398
|
+
"type": [
|
|
1399
|
+
"boolean",
|
|
1400
|
+
"null"
|
|
1401
|
+
],
|
|
1402
|
+
"description": "MX record validation."
|
|
1403
|
+
},
|
|
1404
|
+
"dnsSpfOk": {
|
|
1405
|
+
"type": [
|
|
1406
|
+
"boolean",
|
|
1407
|
+
"null"
|
|
1408
|
+
],
|
|
1409
|
+
"description": "SPF record validation."
|
|
1410
|
+
},
|
|
1411
|
+
"dnsDkimOk": {
|
|
1412
|
+
"type": [
|
|
1413
|
+
"boolean",
|
|
1414
|
+
"null"
|
|
1415
|
+
],
|
|
1416
|
+
"description": "DKIM record validation."
|
|
1417
|
+
},
|
|
1418
|
+
"createdAt": {
|
|
1419
|
+
"type": "string",
|
|
1420
|
+
"format": "date-time"
|
|
1421
|
+
}
|
|
1422
|
+
},
|
|
1423
|
+
"required": [
|
|
1424
|
+
"id",
|
|
1425
|
+
"emailAddress",
|
|
1426
|
+
"provider",
|
|
1427
|
+
"status",
|
|
1428
|
+
"createdAt"
|
|
1429
|
+
]
|
|
1430
|
+
},
|
|
1431
|
+
"annotations": {
|
|
1432
|
+
"readOnlyHint": true,
|
|
1433
|
+
"destructiveHint": false,
|
|
1434
|
+
"idempotentHint": true,
|
|
1435
|
+
"openWorldHint": false
|
|
1436
|
+
},
|
|
1437
|
+
"_http": {
|
|
1438
|
+
"method": "GET",
|
|
1439
|
+
"path": "/api/v1/mailboxes/{id}"
|
|
1440
|
+
}
|
|
1441
|
+
},
|
|
1442
|
+
{
|
|
1443
|
+
"name": "create_mailbox",
|
|
1444
|
+
"title": "Create SMTP Mailbox",
|
|
1445
|
+
"description": "Connects a new SMTP/IMAP mailbox to the account. Validates SMTP and IMAP credentials before saving. OAuth mailboxes (Google, Microsoft) can only be connected via the frontend OAuth flow. Pass labelId to assign the mailbox to an existing label group.",
|
|
1446
|
+
"inputSchema": {
|
|
1447
|
+
"type": "object",
|
|
1448
|
+
"properties": {
|
|
1449
|
+
"emailAddress": {
|
|
1450
|
+
"type": "string",
|
|
1451
|
+
"format": "email",
|
|
1452
|
+
"description": "Sender email address."
|
|
1453
|
+
},
|
|
1454
|
+
"displayName": {
|
|
1455
|
+
"type": "string",
|
|
1456
|
+
"description": "Optional display name shown in the From header."
|
|
1457
|
+
},
|
|
1458
|
+
"labelId": {
|
|
1459
|
+
"type": "string",
|
|
1460
|
+
"description": "Optional label/group ID to assign this mailbox to."
|
|
1461
|
+
},
|
|
1462
|
+
"smtpHost": {
|
|
1463
|
+
"type": "string",
|
|
1464
|
+
"description": "SMTP server hostname (e.g. smtp.gmail.com)."
|
|
1465
|
+
},
|
|
1466
|
+
"smtpPort": {
|
|
1467
|
+
"type": "integer",
|
|
1468
|
+
"minimum": 1,
|
|
1469
|
+
"maximum": 65535,
|
|
1470
|
+
"description": "SMTP port (465 for SSL, 587 for TLS)."
|
|
1471
|
+
},
|
|
1472
|
+
"smtpUsername": {
|
|
1473
|
+
"type": "string",
|
|
1474
|
+
"description": "SMTP authentication username (usually the email address)."
|
|
1475
|
+
},
|
|
1476
|
+
"smtpPassword": {
|
|
1477
|
+
"type": "string",
|
|
1478
|
+
"description": "SMTP authentication password or app password."
|
|
1479
|
+
},
|
|
1480
|
+
"imapHost": {
|
|
1481
|
+
"type": "string",
|
|
1482
|
+
"description": "IMAP server hostname (e.g. imap.gmail.com)."
|
|
1483
|
+
},
|
|
1484
|
+
"imapPort": {
|
|
1485
|
+
"type": "integer",
|
|
1486
|
+
"minimum": 1,
|
|
1487
|
+
"maximum": 65535,
|
|
1488
|
+
"description": "IMAP port (993 for SSL)."
|
|
1489
|
+
},
|
|
1490
|
+
"imapUsername": {
|
|
1491
|
+
"type": "string",
|
|
1492
|
+
"description": "IMAP authentication username (usually the email address)."
|
|
1493
|
+
},
|
|
1494
|
+
"imapPassword": {
|
|
1495
|
+
"type": "string",
|
|
1496
|
+
"description": "IMAP authentication password or app password."
|
|
1497
|
+
}
|
|
1498
|
+
},
|
|
1499
|
+
"required": [
|
|
1500
|
+
"emailAddress",
|
|
1501
|
+
"smtpHost",
|
|
1502
|
+
"smtpPort",
|
|
1503
|
+
"smtpUsername",
|
|
1504
|
+
"smtpPassword",
|
|
1505
|
+
"imapHost",
|
|
1506
|
+
"imapPort",
|
|
1507
|
+
"imapUsername",
|
|
1508
|
+
"imapPassword"
|
|
1509
|
+
],
|
|
1510
|
+
"additionalProperties": false
|
|
1511
|
+
},
|
|
1512
|
+
"outputSchema": {
|
|
1513
|
+
"type": "object",
|
|
1514
|
+
"properties": {
|
|
1515
|
+
"id": {
|
|
1516
|
+
"type": "string"
|
|
1517
|
+
},
|
|
1518
|
+
"emailAddress": {
|
|
1519
|
+
"type": "string",
|
|
1520
|
+
"format": "email"
|
|
1521
|
+
},
|
|
1522
|
+
"displayName": {
|
|
1523
|
+
"type": [
|
|
1524
|
+
"string",
|
|
1525
|
+
"null"
|
|
1526
|
+
]
|
|
1527
|
+
},
|
|
1528
|
+
"provider": {
|
|
1529
|
+
"type": "string",
|
|
1530
|
+
"enum": [
|
|
1531
|
+
"SMTP"
|
|
1532
|
+
]
|
|
1533
|
+
},
|
|
1534
|
+
"status": {
|
|
1535
|
+
"type": "string"
|
|
1536
|
+
},
|
|
1537
|
+
"smtpOk": {
|
|
1538
|
+
"type": [
|
|
1539
|
+
"boolean",
|
|
1540
|
+
"null"
|
|
1541
|
+
]
|
|
1542
|
+
},
|
|
1543
|
+
"imapOk": {
|
|
1544
|
+
"type": [
|
|
1545
|
+
"boolean",
|
|
1546
|
+
"null"
|
|
1547
|
+
]
|
|
1548
|
+
},
|
|
1549
|
+
"createdAt": {
|
|
1550
|
+
"type": "string",
|
|
1551
|
+
"format": "date-time"
|
|
1552
|
+
}
|
|
1553
|
+
},
|
|
1554
|
+
"required": [
|
|
1555
|
+
"id",
|
|
1556
|
+
"emailAddress",
|
|
1557
|
+
"provider",
|
|
1558
|
+
"status",
|
|
1559
|
+
"createdAt"
|
|
1560
|
+
]
|
|
1561
|
+
},
|
|
1562
|
+
"annotations": {
|
|
1563
|
+
"readOnlyHint": false,
|
|
1564
|
+
"destructiveHint": false,
|
|
1565
|
+
"idempotentHint": false,
|
|
1566
|
+
"openWorldHint": false
|
|
1567
|
+
},
|
|
1568
|
+
"_http": {
|
|
1569
|
+
"method": "POST",
|
|
1570
|
+
"path": "/api/v1/mailboxes"
|
|
1571
|
+
}
|
|
1572
|
+
},
|
|
1573
|
+
{
|
|
1574
|
+
"name": "update_mailbox",
|
|
1575
|
+
"title": "Update Mailbox",
|
|
1576
|
+
"description": "Updates a mailbox. For SMTP mailboxes: pass all connection fields (hosts/ports/usernames are required; passwords are optional — omit to keep stored value). For OAuth mailboxes (Google, Microsoft): only displayName can be changed via API; use the frontend to reconnect OAuth credentials.",
|
|
1577
|
+
"inputSchema": {
|
|
1578
|
+
"type": "object",
|
|
1579
|
+
"properties": {
|
|
1580
|
+
"id": {
|
|
1581
|
+
"type": "string",
|
|
1582
|
+
"description": "Mailbox ID."
|
|
1583
|
+
},
|
|
1584
|
+
"displayName": {
|
|
1585
|
+
"type": "string",
|
|
1586
|
+
"nullable": true,
|
|
1587
|
+
"description": "Display name for the From header. Pass null to clear."
|
|
1588
|
+
},
|
|
1589
|
+
"smtpHost": {
|
|
1590
|
+
"type": "string",
|
|
1591
|
+
"description": "SMTP hostname (SMTP mailboxes only, required when updating connection)."
|
|
1592
|
+
},
|
|
1593
|
+
"smtpPort": {
|
|
1594
|
+
"type": "integer",
|
|
1595
|
+
"minimum": 1,
|
|
1596
|
+
"maximum": 65535,
|
|
1597
|
+
"description": "SMTP port (SMTP mailboxes only)."
|
|
1598
|
+
},
|
|
1599
|
+
"smtpUsername": {
|
|
1600
|
+
"type": "string",
|
|
1601
|
+
"description": "SMTP username (SMTP mailboxes only)."
|
|
1602
|
+
},
|
|
1603
|
+
"smtpPassword": {
|
|
1604
|
+
"type": "string",
|
|
1605
|
+
"description": "SMTP password (SMTP mailboxes only). Omit to keep stored value."
|
|
1606
|
+
},
|
|
1607
|
+
"imapHost": {
|
|
1608
|
+
"type": "string",
|
|
1609
|
+
"description": "IMAP hostname (SMTP mailboxes only, required when updating connection)."
|
|
1610
|
+
},
|
|
1611
|
+
"imapPort": {
|
|
1612
|
+
"type": "integer",
|
|
1613
|
+
"minimum": 1,
|
|
1614
|
+
"maximum": 65535,
|
|
1615
|
+
"description": "IMAP port (SMTP mailboxes only)."
|
|
1616
|
+
},
|
|
1617
|
+
"imapUsername": {
|
|
1618
|
+
"type": "string",
|
|
1619
|
+
"description": "IMAP username (SMTP mailboxes only)."
|
|
1620
|
+
},
|
|
1621
|
+
"imapPassword": {
|
|
1622
|
+
"type": "string",
|
|
1623
|
+
"description": "IMAP password (SMTP mailboxes only). Omit to keep stored value."
|
|
1624
|
+
}
|
|
1625
|
+
},
|
|
1626
|
+
"required": [
|
|
1627
|
+
"id"
|
|
1628
|
+
],
|
|
1629
|
+
"additionalProperties": false
|
|
1630
|
+
},
|
|
1631
|
+
"outputSchema": {
|
|
1632
|
+
"type": "object",
|
|
1633
|
+
"properties": {
|
|
1634
|
+
"id": {
|
|
1635
|
+
"type": "string"
|
|
1636
|
+
},
|
|
1637
|
+
"emailAddress": {
|
|
1638
|
+
"type": "string",
|
|
1639
|
+
"format": "email"
|
|
1640
|
+
},
|
|
1641
|
+
"displayName": {
|
|
1642
|
+
"type": [
|
|
1643
|
+
"string",
|
|
1644
|
+
"null"
|
|
1645
|
+
]
|
|
1646
|
+
},
|
|
1647
|
+
"provider": {
|
|
1648
|
+
"type": "string",
|
|
1649
|
+
"enum": [
|
|
1650
|
+
"GOOGLE",
|
|
1651
|
+
"MICROSOFT",
|
|
1652
|
+
"SMTP"
|
|
1653
|
+
]
|
|
1654
|
+
},
|
|
1655
|
+
"status": {
|
|
1656
|
+
"type": "string"
|
|
1657
|
+
},
|
|
1658
|
+
"smtpOk": {
|
|
1659
|
+
"type": [
|
|
1660
|
+
"boolean",
|
|
1661
|
+
"null"
|
|
1662
|
+
]
|
|
1663
|
+
},
|
|
1664
|
+
"imapOk": {
|
|
1665
|
+
"type": [
|
|
1666
|
+
"boolean",
|
|
1667
|
+
"null"
|
|
1668
|
+
]
|
|
1669
|
+
},
|
|
1670
|
+
"createdAt": {
|
|
1671
|
+
"type": "string",
|
|
1672
|
+
"format": "date-time"
|
|
1673
|
+
}
|
|
1674
|
+
},
|
|
1675
|
+
"required": [
|
|
1676
|
+
"id",
|
|
1677
|
+
"emailAddress",
|
|
1678
|
+
"provider",
|
|
1679
|
+
"status",
|
|
1680
|
+
"createdAt"
|
|
1681
|
+
]
|
|
1682
|
+
},
|
|
1683
|
+
"annotations": {
|
|
1684
|
+
"readOnlyHint": false,
|
|
1685
|
+
"destructiveHint": false,
|
|
1686
|
+
"idempotentHint": true,
|
|
1687
|
+
"openWorldHint": false
|
|
1688
|
+
},
|
|
1689
|
+
"_http": {
|
|
1690
|
+
"method": "PATCH",
|
|
1691
|
+
"path": "/api/v1/mailboxes/{id}"
|
|
1692
|
+
}
|
|
1693
|
+
},
|
|
1694
|
+
{
|
|
1695
|
+
"name": "delete_mailbox",
|
|
1696
|
+
"title": "Delete Mailbox",
|
|
1697
|
+
"description": "Soft-deletes a mailbox. The mailbox is removed from active sending but retained internally for audit. Returns no body on success.",
|
|
1698
|
+
"inputSchema": {
|
|
1699
|
+
"type": "object",
|
|
1700
|
+
"properties": {
|
|
1701
|
+
"id": {
|
|
1702
|
+
"type": "string",
|
|
1703
|
+
"description": "Mailbox ID to delete."
|
|
1704
|
+
}
|
|
1705
|
+
},
|
|
1706
|
+
"required": [
|
|
1707
|
+
"id"
|
|
1708
|
+
],
|
|
1709
|
+
"additionalProperties": false
|
|
1710
|
+
},
|
|
1711
|
+
"annotations": {
|
|
1712
|
+
"readOnlyHint": false,
|
|
1713
|
+
"destructiveHint": true,
|
|
1714
|
+
"idempotentHint": true,
|
|
1715
|
+
"openWorldHint": false
|
|
1716
|
+
},
|
|
1717
|
+
"_http": {
|
|
1718
|
+
"method": "DELETE",
|
|
1719
|
+
"path": "/api/v1/mailboxes/{id}"
|
|
1720
|
+
}
|
|
1721
|
+
},
|
|
1722
|
+
{
|
|
1723
|
+
"title": "List Events",
|
|
1724
|
+
"description": "Lists tracked email events (SENT, OPENED, CLICKED, REPLIED, BOUNCED, etc.) with optional filters. Supports cursor-based pagination.",
|
|
1725
|
+
"inputSchema": {
|
|
1726
|
+
"type": "object",
|
|
1727
|
+
"properties": {
|
|
1728
|
+
"campaignId": {
|
|
1729
|
+
"type": "string",
|
|
1730
|
+
"description": "Filter events by campaign ID."
|
|
1731
|
+
},
|
|
1732
|
+
"contactId": {
|
|
1733
|
+
"type": "string",
|
|
1734
|
+
"description": "Filter events by contact ID."
|
|
1735
|
+
},
|
|
1736
|
+
"type": {
|
|
1737
|
+
"type": "string",
|
|
1738
|
+
"enum": [
|
|
1739
|
+
"SENT",
|
|
1740
|
+
"DELIVERED",
|
|
1741
|
+
"OPENED",
|
|
1742
|
+
"CLICKED",
|
|
1743
|
+
"REPLIED",
|
|
1744
|
+
"BOUNCED",
|
|
1745
|
+
"COMPLAINED",
|
|
1746
|
+
"UNSUBSCRIBED"
|
|
1747
|
+
],
|
|
1748
|
+
"description": "Filter events by type."
|
|
1749
|
+
},
|
|
1750
|
+
"cursor": {
|
|
1751
|
+
"type": "string",
|
|
1752
|
+
"description": "Pagination cursor from the previous response."
|
|
1753
|
+
},
|
|
1754
|
+
"limit": {
|
|
1755
|
+
"type": "integer",
|
|
1756
|
+
"minimum": 1,
|
|
1757
|
+
"maximum": 100,
|
|
1758
|
+
"default": 25,
|
|
1759
|
+
"description": "Number of events to return per page."
|
|
1760
|
+
}
|
|
1761
|
+
},
|
|
1762
|
+
"additionalProperties": false
|
|
1763
|
+
},
|
|
1764
|
+
"outputSchema": {
|
|
1765
|
+
"type": "object",
|
|
1766
|
+
"properties": {
|
|
1767
|
+
"data": {
|
|
1768
|
+
"type": "array",
|
|
1769
|
+
"items": {
|
|
1770
|
+
"type": "object",
|
|
1771
|
+
"properties": {
|
|
1772
|
+
"id": {
|
|
1773
|
+
"type": "string"
|
|
1774
|
+
},
|
|
1775
|
+
"sendJobId": {
|
|
1776
|
+
"type": "string"
|
|
1777
|
+
},
|
|
1778
|
+
"type": {
|
|
1779
|
+
"type": "string",
|
|
1780
|
+
"enum": [
|
|
1781
|
+
"SENT",
|
|
1782
|
+
"DELIVERED",
|
|
1783
|
+
"OPENED",
|
|
1784
|
+
"CLICKED",
|
|
1785
|
+
"REPLIED",
|
|
1786
|
+
"BOUNCED",
|
|
1787
|
+
"COMPLAINED",
|
|
1788
|
+
"UNSUBSCRIBED"
|
|
1789
|
+
]
|
|
1790
|
+
},
|
|
1791
|
+
"metadata": {
|
|
1792
|
+
"type": [
|
|
1793
|
+
"object",
|
|
1794
|
+
"null"
|
|
1795
|
+
],
|
|
1796
|
+
"additionalProperties": true
|
|
1797
|
+
},
|
|
1798
|
+
"createdAt": {
|
|
1799
|
+
"type": "string",
|
|
1800
|
+
"format": "date-time"
|
|
1801
|
+
}
|
|
1802
|
+
},
|
|
1803
|
+
"required": [
|
|
1804
|
+
"id",
|
|
1805
|
+
"sendJobId",
|
|
1806
|
+
"type",
|
|
1807
|
+
"createdAt"
|
|
1808
|
+
]
|
|
1809
|
+
}
|
|
1810
|
+
},
|
|
1811
|
+
"pagination": {
|
|
1812
|
+
"type": "object",
|
|
1813
|
+
"properties": {
|
|
1814
|
+
"nextCursor": {
|
|
1815
|
+
"type": [
|
|
1816
|
+
"string",
|
|
1817
|
+
"null"
|
|
1818
|
+
],
|
|
1819
|
+
"description": "Pass this value as cursor to fetch the next page. Null when no more pages."
|
|
1820
|
+
},
|
|
1821
|
+
"hasMore": {
|
|
1822
|
+
"type": "boolean"
|
|
1823
|
+
}
|
|
1824
|
+
},
|
|
1825
|
+
"required": [
|
|
1826
|
+
"nextCursor",
|
|
1827
|
+
"hasMore"
|
|
1828
|
+
]
|
|
1829
|
+
}
|
|
1830
|
+
},
|
|
1831
|
+
"required": [
|
|
1832
|
+
"data",
|
|
1833
|
+
"pagination"
|
|
1834
|
+
]
|
|
1835
|
+
},
|
|
1836
|
+
"annotations": {
|
|
1837
|
+
"readOnlyHint": true,
|
|
1838
|
+
"destructiveHint": false,
|
|
1839
|
+
"idempotentHint": true,
|
|
1840
|
+
"openWorldHint": false
|
|
1841
|
+
},
|
|
1842
|
+
"name": "list_events",
|
|
1843
|
+
"_http": {
|
|
1844
|
+
"method": "GET",
|
|
1845
|
+
"path": "/api/v1/events"
|
|
1846
|
+
}
|
|
1847
|
+
},
|
|
1848
|
+
{
|
|
1849
|
+
"name": "list_webhooks",
|
|
1850
|
+
"title": "List Webhooks",
|
|
1851
|
+
"description": "Lists all webhook subscriptions configured in the account settings.",
|
|
1852
|
+
"inputSchema": {
|
|
1853
|
+
"type": "object",
|
|
1854
|
+
"additionalProperties": false
|
|
1855
|
+
},
|
|
1856
|
+
"outputSchema": {
|
|
1857
|
+
"type": "object",
|
|
1858
|
+
"properties": {
|
|
1859
|
+
"data": {
|
|
1860
|
+
"type": "array",
|
|
1861
|
+
"items": {
|
|
1862
|
+
"type": "object",
|
|
1863
|
+
"properties": {
|
|
1864
|
+
"id": {
|
|
1865
|
+
"type": "string"
|
|
1866
|
+
},
|
|
1867
|
+
"name": {
|
|
1868
|
+
"type": [
|
|
1869
|
+
"string",
|
|
1870
|
+
"null"
|
|
1871
|
+
]
|
|
1872
|
+
},
|
|
1873
|
+
"targetUrl": {
|
|
1874
|
+
"type": "string",
|
|
1875
|
+
"format": "uri"
|
|
1876
|
+
},
|
|
1877
|
+
"eventType": {
|
|
1878
|
+
"type": "string"
|
|
1879
|
+
},
|
|
1880
|
+
"active": {
|
|
1881
|
+
"type": "boolean"
|
|
1882
|
+
},
|
|
1883
|
+
"failCount": {
|
|
1884
|
+
"type": "integer"
|
|
1885
|
+
},
|
|
1886
|
+
"createdAt": {
|
|
1887
|
+
"type": "string",
|
|
1888
|
+
"format": "date-time"
|
|
1889
|
+
}
|
|
1890
|
+
},
|
|
1891
|
+
"required": [
|
|
1892
|
+
"id",
|
|
1893
|
+
"targetUrl",
|
|
1894
|
+
"eventType",
|
|
1895
|
+
"active",
|
|
1896
|
+
"failCount",
|
|
1897
|
+
"createdAt"
|
|
1898
|
+
]
|
|
1899
|
+
}
|
|
1900
|
+
}
|
|
1901
|
+
},
|
|
1902
|
+
"required": [
|
|
1903
|
+
"data"
|
|
1904
|
+
]
|
|
1905
|
+
},
|
|
1906
|
+
"annotations": {
|
|
1907
|
+
"readOnlyHint": true,
|
|
1908
|
+
"destructiveHint": false,
|
|
1909
|
+
"idempotentHint": true,
|
|
1910
|
+
"openWorldHint": false
|
|
1911
|
+
},
|
|
1912
|
+
"_http": {
|
|
1913
|
+
"method": "GET",
|
|
1914
|
+
"path": "/api/v1/webhooks"
|
|
1915
|
+
}
|
|
1916
|
+
},
|
|
1917
|
+
{
|
|
1918
|
+
"name": "get_webhook",
|
|
1919
|
+
"title": "Get Webhook",
|
|
1920
|
+
"description": "Returns one webhook subscription by ID.",
|
|
1921
|
+
"inputSchema": {
|
|
1922
|
+
"type": "object",
|
|
1923
|
+
"properties": {
|
|
1924
|
+
"id": {
|
|
1925
|
+
"type": "string",
|
|
1926
|
+
"description": "Webhook subscription ID."
|
|
1927
|
+
}
|
|
1928
|
+
},
|
|
1929
|
+
"required": [
|
|
1930
|
+
"id"
|
|
1931
|
+
],
|
|
1932
|
+
"additionalProperties": false
|
|
1933
|
+
},
|
|
1934
|
+
"outputSchema": {
|
|
1935
|
+
"type": "object",
|
|
1936
|
+
"properties": {
|
|
1937
|
+
"id": {
|
|
1938
|
+
"type": "string"
|
|
1939
|
+
},
|
|
1940
|
+
"name": {
|
|
1941
|
+
"type": [
|
|
1942
|
+
"string",
|
|
1943
|
+
"null"
|
|
1944
|
+
]
|
|
1945
|
+
},
|
|
1946
|
+
"targetUrl": {
|
|
1947
|
+
"type": "string",
|
|
1948
|
+
"format": "uri"
|
|
1949
|
+
},
|
|
1950
|
+
"eventType": {
|
|
1951
|
+
"type": "string"
|
|
1952
|
+
},
|
|
1953
|
+
"active": {
|
|
1954
|
+
"type": "boolean"
|
|
1955
|
+
},
|
|
1956
|
+
"failCount": {
|
|
1957
|
+
"type": "integer"
|
|
1958
|
+
},
|
|
1959
|
+
"createdAt": {
|
|
1960
|
+
"type": "string",
|
|
1961
|
+
"format": "date-time"
|
|
1962
|
+
}
|
|
1963
|
+
},
|
|
1964
|
+
"required": [
|
|
1965
|
+
"id",
|
|
1966
|
+
"targetUrl",
|
|
1967
|
+
"eventType",
|
|
1968
|
+
"active",
|
|
1969
|
+
"failCount",
|
|
1970
|
+
"createdAt"
|
|
1971
|
+
]
|
|
1972
|
+
},
|
|
1973
|
+
"annotations": {
|
|
1974
|
+
"readOnlyHint": true,
|
|
1975
|
+
"destructiveHint": false,
|
|
1976
|
+
"idempotentHint": true,
|
|
1977
|
+
"openWorldHint": false
|
|
1978
|
+
},
|
|
1979
|
+
"_http": {
|
|
1980
|
+
"method": "GET",
|
|
1981
|
+
"path": "/api/v1/webhooks/{id}"
|
|
1982
|
+
}
|
|
1983
|
+
},
|
|
1984
|
+
{
|
|
1985
|
+
"name": "test_webhook",
|
|
1986
|
+
"title": "Send Test Webhook",
|
|
1987
|
+
"description": "Sends a test event payload to a webhook subscription URL and returns the HTTP status code from the target server.",
|
|
1988
|
+
"inputSchema": {
|
|
1989
|
+
"type": "object",
|
|
1990
|
+
"properties": {
|
|
1991
|
+
"id": {
|
|
1992
|
+
"type": "string",
|
|
1993
|
+
"description": "Webhook subscription ID to test."
|
|
1994
|
+
}
|
|
1995
|
+
},
|
|
1996
|
+
"required": [
|
|
1997
|
+
"id"
|
|
1998
|
+
],
|
|
1999
|
+
"additionalProperties": false
|
|
2000
|
+
},
|
|
2001
|
+
"outputSchema": {
|
|
2002
|
+
"type": "object",
|
|
2003
|
+
"properties": {
|
|
2004
|
+
"httpStatus": {
|
|
2005
|
+
"type": "integer",
|
|
2006
|
+
"description": "HTTP status code returned by the webhook target."
|
|
2007
|
+
}
|
|
2008
|
+
},
|
|
2009
|
+
"required": [
|
|
2010
|
+
"httpStatus"
|
|
2011
|
+
]
|
|
2012
|
+
},
|
|
2013
|
+
"annotations": {
|
|
2014
|
+
"readOnlyHint": false,
|
|
2015
|
+
"destructiveHint": false,
|
|
2016
|
+
"idempotentHint": true,
|
|
2017
|
+
"openWorldHint": true
|
|
2018
|
+
},
|
|
2019
|
+
"_http": {
|
|
2020
|
+
"method": "POST",
|
|
2021
|
+
"path": "/api/v1/webhooks/{id}/test"
|
|
2022
|
+
}
|
|
2023
|
+
},
|
|
2024
|
+
{
|
|
2025
|
+
"name": "update_campaign",
|
|
2026
|
+
"title": "Update Campaign",
|
|
2027
|
+
"description": "Updates a campaign's name, status, or assigned mailboxes. Status transitions: DRAFT→ACTIVE (requires at least one step), ACTIVE↔PAUSED, any→ARCHIVED (terminal). Omit fields to leave them unchanged.",
|
|
2028
|
+
"inputSchema": {
|
|
2029
|
+
"type": "object",
|
|
2030
|
+
"properties": {
|
|
2031
|
+
"id": {
|
|
2032
|
+
"type": "string",
|
|
2033
|
+
"description": "Campaign ID."
|
|
2034
|
+
},
|
|
2035
|
+
"name": {
|
|
2036
|
+
"type": "string",
|
|
2037
|
+
"minLength": 1,
|
|
2038
|
+
"maxLength": 255,
|
|
2039
|
+
"description": "New campaign name."
|
|
2040
|
+
},
|
|
2041
|
+
"status": {
|
|
2042
|
+
"type": "string",
|
|
2043
|
+
"enum": [
|
|
2044
|
+
"DRAFT",
|
|
2045
|
+
"ACTIVE",
|
|
2046
|
+
"PAUSED",
|
|
2047
|
+
"ARCHIVED"
|
|
2048
|
+
],
|
|
2049
|
+
"description": "Target campaign status. DRAFT→ACTIVE requires at least one step. ARCHIVED is terminal."
|
|
2050
|
+
},
|
|
2051
|
+
"mailboxIds": {
|
|
2052
|
+
"type": "array",
|
|
2053
|
+
"items": {
|
|
2054
|
+
"type": "string"
|
|
2055
|
+
},
|
|
2056
|
+
"maxItems": 200,
|
|
2057
|
+
"description": "Replace the full set of mailboxes assigned to this campaign."
|
|
2058
|
+
}
|
|
2059
|
+
},
|
|
2060
|
+
"required": [
|
|
2061
|
+
"id"
|
|
2062
|
+
],
|
|
2063
|
+
"additionalProperties": false
|
|
2064
|
+
},
|
|
2065
|
+
"outputSchema": {
|
|
2066
|
+
"type": "object",
|
|
2067
|
+
"properties": {
|
|
2068
|
+
"id": {
|
|
2069
|
+
"type": "string"
|
|
2070
|
+
},
|
|
2071
|
+
"name": {
|
|
2072
|
+
"type": "string"
|
|
2073
|
+
},
|
|
2074
|
+
"status": {
|
|
2075
|
+
"type": "string",
|
|
2076
|
+
"enum": [
|
|
2077
|
+
"DRAFT",
|
|
2078
|
+
"ACTIVE",
|
|
2079
|
+
"PAUSED",
|
|
2080
|
+
"COMPLETED",
|
|
2081
|
+
"ARCHIVED"
|
|
2082
|
+
]
|
|
2083
|
+
},
|
|
2084
|
+
"createdAt": {
|
|
2085
|
+
"type": "string",
|
|
2086
|
+
"format": "date-time"
|
|
2087
|
+
},
|
|
2088
|
+
"updatedAt": {
|
|
2089
|
+
"type": "string",
|
|
2090
|
+
"format": "date-time"
|
|
2091
|
+
}
|
|
2092
|
+
},
|
|
2093
|
+
"required": [
|
|
2094
|
+
"id",
|
|
2095
|
+
"name",
|
|
2096
|
+
"status",
|
|
2097
|
+
"createdAt",
|
|
2098
|
+
"updatedAt"
|
|
2099
|
+
]
|
|
2100
|
+
},
|
|
2101
|
+
"annotations": {
|
|
2102
|
+
"readOnlyHint": false,
|
|
2103
|
+
"destructiveHint": false,
|
|
2104
|
+
"idempotentHint": true,
|
|
2105
|
+
"openWorldHint": false
|
|
2106
|
+
},
|
|
2107
|
+
"_http": {
|
|
2108
|
+
"method": "PATCH",
|
|
2109
|
+
"path": "/api/v1/campaigns/{id}"
|
|
2110
|
+
}
|
|
2111
|
+
},
|
|
2112
|
+
{
|
|
2113
|
+
"name": "list_campaign_steps",
|
|
2114
|
+
"title": "List Campaign Steps",
|
|
2115
|
+
"description": "Returns all steps for a campaign in order (primary steps by position, then variants).",
|
|
2116
|
+
"inputSchema": {
|
|
2117
|
+
"type": "object",
|
|
2118
|
+
"properties": {
|
|
2119
|
+
"campaignId": {
|
|
2120
|
+
"type": "string",
|
|
2121
|
+
"description": "Campaign ID."
|
|
2122
|
+
}
|
|
2123
|
+
},
|
|
2124
|
+
"required": [
|
|
2125
|
+
"campaignId"
|
|
2126
|
+
],
|
|
2127
|
+
"additionalProperties": false
|
|
2128
|
+
},
|
|
2129
|
+
"outputSchema": {
|
|
2130
|
+
"type": "object",
|
|
2131
|
+
"properties": {
|
|
2132
|
+
"data": {
|
|
2133
|
+
"type": "array",
|
|
2134
|
+
"items": {
|
|
2135
|
+
"type": "object",
|
|
2136
|
+
"properties": {
|
|
2137
|
+
"id": {
|
|
2138
|
+
"type": "string"
|
|
2139
|
+
},
|
|
2140
|
+
"campaignId": {
|
|
2141
|
+
"type": "string"
|
|
2142
|
+
},
|
|
2143
|
+
"order": {
|
|
2144
|
+
"type": "integer"
|
|
2145
|
+
},
|
|
2146
|
+
"variantOf": {
|
|
2147
|
+
"type": [
|
|
2148
|
+
"string",
|
|
2149
|
+
"null"
|
|
2150
|
+
]
|
|
2151
|
+
},
|
|
2152
|
+
"variantLabel": {
|
|
2153
|
+
"type": [
|
|
2154
|
+
"string",
|
|
2155
|
+
"null"
|
|
2156
|
+
]
|
|
2157
|
+
},
|
|
2158
|
+
"subject": {
|
|
2159
|
+
"type": "string"
|
|
2160
|
+
},
|
|
2161
|
+
"bodyHtml": {
|
|
2162
|
+
"type": "string"
|
|
2163
|
+
},
|
|
2164
|
+
"delayDays": {
|
|
2165
|
+
"type": "integer"
|
|
2166
|
+
},
|
|
2167
|
+
"delayHours": {
|
|
2168
|
+
"type": "integer"
|
|
2169
|
+
},
|
|
2170
|
+
"createdAt": {
|
|
2171
|
+
"type": "string",
|
|
2172
|
+
"format": "date-time"
|
|
2173
|
+
},
|
|
2174
|
+
"updatedAt": {
|
|
2175
|
+
"type": "string",
|
|
2176
|
+
"format": "date-time"
|
|
2177
|
+
}
|
|
2178
|
+
},
|
|
2179
|
+
"required": [
|
|
2180
|
+
"id",
|
|
2181
|
+
"campaignId",
|
|
2182
|
+
"order",
|
|
2183
|
+
"subject",
|
|
2184
|
+
"bodyHtml",
|
|
2185
|
+
"delayDays",
|
|
2186
|
+
"delayHours",
|
|
2187
|
+
"createdAt",
|
|
2188
|
+
"updatedAt"
|
|
2189
|
+
]
|
|
2190
|
+
}
|
|
2191
|
+
}
|
|
2192
|
+
},
|
|
2193
|
+
"required": [
|
|
2194
|
+
"data"
|
|
2195
|
+
]
|
|
2196
|
+
},
|
|
2197
|
+
"annotations": {
|
|
2198
|
+
"readOnlyHint": true,
|
|
2199
|
+
"destructiveHint": false,
|
|
2200
|
+
"idempotentHint": true,
|
|
2201
|
+
"openWorldHint": false
|
|
2202
|
+
},
|
|
2203
|
+
"_http": {
|
|
2204
|
+
"method": "GET",
|
|
2205
|
+
"path": "/api/v1/campaigns/{campaignId}/steps"
|
|
2206
|
+
}
|
|
2207
|
+
},
|
|
2208
|
+
{
|
|
2209
|
+
"name": "create_campaign_step",
|
|
2210
|
+
"title": "Create Campaign Step",
|
|
2211
|
+
"description": "Appends a new step to a campaign sequence. To add an A/Z variant, pass the parent step's ID in variantOf.",
|
|
2212
|
+
"inputSchema": {
|
|
2213
|
+
"type": "object",
|
|
2214
|
+
"properties": {
|
|
2215
|
+
"campaignId": {
|
|
2216
|
+
"type": "string",
|
|
2217
|
+
"description": "Campaign ID to add the step to."
|
|
2218
|
+
},
|
|
2219
|
+
"variantOf": {
|
|
2220
|
+
"type": "string",
|
|
2221
|
+
"description": "Parent step ID — creates this step as an A/Z variant of the parent."
|
|
2222
|
+
},
|
|
2223
|
+
"subject": {
|
|
2224
|
+
"type": "string",
|
|
2225
|
+
"maxLength": 255,
|
|
2226
|
+
"default": "",
|
|
2227
|
+
"description": "Email subject line."
|
|
2228
|
+
},
|
|
2229
|
+
"bodyHtml": {
|
|
2230
|
+
"type": "string",
|
|
2231
|
+
"maxLength": 200000,
|
|
2232
|
+
"default": "",
|
|
2233
|
+
"description": "Email body as HTML."
|
|
2234
|
+
},
|
|
2235
|
+
"delayDays": {
|
|
2236
|
+
"type": "integer",
|
|
2237
|
+
"minimum": 0,
|
|
2238
|
+
"maximum": 365,
|
|
2239
|
+
"description": "Days to wait after the previous step before sending (default 0)."
|
|
2240
|
+
},
|
|
2241
|
+
"delayHours": {
|
|
2242
|
+
"type": "integer",
|
|
2243
|
+
"minimum": 0,
|
|
2244
|
+
"maximum": 23,
|
|
2245
|
+
"description": "Additional hours to wait (default 0)."
|
|
2246
|
+
},
|
|
2247
|
+
"variantLabel": {
|
|
2248
|
+
"type": "string",
|
|
2249
|
+
"maxLength": 40,
|
|
2250
|
+
"description": "Short display label for this variant (e.g. 'Version B')."
|
|
2251
|
+
}
|
|
2252
|
+
},
|
|
2253
|
+
"required": [
|
|
2254
|
+
"campaignId"
|
|
2255
|
+
],
|
|
2256
|
+
"additionalProperties": false
|
|
2257
|
+
},
|
|
2258
|
+
"outputSchema": {
|
|
2259
|
+
"type": "object",
|
|
2260
|
+
"properties": {
|
|
2261
|
+
"id": {
|
|
2262
|
+
"type": "string"
|
|
2263
|
+
},
|
|
2264
|
+
"campaignId": {
|
|
2265
|
+
"type": "string"
|
|
2266
|
+
},
|
|
2267
|
+
"order": {
|
|
2268
|
+
"type": "integer"
|
|
2269
|
+
},
|
|
2270
|
+
"subject": {
|
|
2271
|
+
"type": "string"
|
|
2272
|
+
},
|
|
2273
|
+
"bodyHtml": {
|
|
2274
|
+
"type": "string"
|
|
2275
|
+
},
|
|
2276
|
+
"delayDays": {
|
|
2277
|
+
"type": "integer"
|
|
2278
|
+
},
|
|
2279
|
+
"delayHours": {
|
|
2280
|
+
"type": "integer"
|
|
2281
|
+
},
|
|
2282
|
+
"createdAt": {
|
|
2283
|
+
"type": "string",
|
|
2284
|
+
"format": "date-time"
|
|
2285
|
+
}
|
|
2286
|
+
},
|
|
2287
|
+
"required": [
|
|
2288
|
+
"id",
|
|
2289
|
+
"campaignId",
|
|
2290
|
+
"order",
|
|
2291
|
+
"subject",
|
|
2292
|
+
"bodyHtml",
|
|
2293
|
+
"delayDays",
|
|
2294
|
+
"delayHours",
|
|
2295
|
+
"createdAt"
|
|
2296
|
+
]
|
|
2297
|
+
},
|
|
2298
|
+
"annotations": {
|
|
2299
|
+
"readOnlyHint": false,
|
|
2300
|
+
"destructiveHint": false,
|
|
2301
|
+
"idempotentHint": false,
|
|
2302
|
+
"openWorldHint": false
|
|
2303
|
+
},
|
|
2304
|
+
"_http": {
|
|
2305
|
+
"method": "POST",
|
|
2306
|
+
"path": "/api/v1/campaigns/{campaignId}/steps"
|
|
2307
|
+
}
|
|
2308
|
+
},
|
|
2309
|
+
{
|
|
2310
|
+
"name": "update_campaign_step",
|
|
2311
|
+
"title": "Update Campaign Step",
|
|
2312
|
+
"description": "Updates subject, body, delay, or variant label on an existing campaign step. Omit fields to leave them unchanged.",
|
|
2313
|
+
"inputSchema": {
|
|
2314
|
+
"type": "object",
|
|
2315
|
+
"properties": {
|
|
2316
|
+
"campaignId": {
|
|
2317
|
+
"type": "string",
|
|
2318
|
+
"description": "Campaign ID (for URL routing)."
|
|
2319
|
+
},
|
|
2320
|
+
"stepId": {
|
|
2321
|
+
"type": "string",
|
|
2322
|
+
"description": "Step ID to update."
|
|
2323
|
+
},
|
|
2324
|
+
"subject": {
|
|
2325
|
+
"type": "string",
|
|
2326
|
+
"maxLength": 255,
|
|
2327
|
+
"description": "Email subject line."
|
|
2328
|
+
},
|
|
2329
|
+
"bodyHtml": {
|
|
2330
|
+
"type": "string",
|
|
2331
|
+
"maxLength": 200000,
|
|
2332
|
+
"description": "Email body as HTML."
|
|
2333
|
+
},
|
|
2334
|
+
"delayDays": {
|
|
2335
|
+
"type": "integer",
|
|
2336
|
+
"minimum": 0,
|
|
2337
|
+
"maximum": 365,
|
|
2338
|
+
"description": "Days to wait before this step."
|
|
2339
|
+
},
|
|
2340
|
+
"delayHours": {
|
|
2341
|
+
"type": "integer",
|
|
2342
|
+
"minimum": 0,
|
|
2343
|
+
"maximum": 23,
|
|
2344
|
+
"description": "Additional hours to wait."
|
|
2345
|
+
},
|
|
2346
|
+
"variantLabel": {
|
|
2347
|
+
"type": "string",
|
|
2348
|
+
"maxLength": 40,
|
|
2349
|
+
"nullable": true,
|
|
2350
|
+
"description": "Variant label. Pass null to clear."
|
|
2351
|
+
}
|
|
2352
|
+
},
|
|
2353
|
+
"required": [
|
|
2354
|
+
"campaignId",
|
|
2355
|
+
"stepId"
|
|
2356
|
+
],
|
|
2357
|
+
"additionalProperties": false
|
|
2358
|
+
},
|
|
2359
|
+
"outputSchema": {
|
|
2360
|
+
"type": "object",
|
|
2361
|
+
"properties": {
|
|
2362
|
+
"id": {
|
|
2363
|
+
"type": "string"
|
|
2364
|
+
},
|
|
2365
|
+
"subject": {
|
|
2366
|
+
"type": "string"
|
|
2367
|
+
},
|
|
2368
|
+
"bodyHtml": {
|
|
2369
|
+
"type": "string"
|
|
2370
|
+
},
|
|
2371
|
+
"delayDays": {
|
|
2372
|
+
"type": "integer"
|
|
2373
|
+
},
|
|
2374
|
+
"delayHours": {
|
|
2375
|
+
"type": "integer"
|
|
2376
|
+
},
|
|
2377
|
+
"updatedAt": {
|
|
2378
|
+
"type": "string",
|
|
2379
|
+
"format": "date-time"
|
|
2380
|
+
}
|
|
2381
|
+
},
|
|
2382
|
+
"required": [
|
|
2383
|
+
"id",
|
|
2384
|
+
"subject",
|
|
2385
|
+
"bodyHtml",
|
|
2386
|
+
"delayDays",
|
|
2387
|
+
"delayHours",
|
|
2388
|
+
"updatedAt"
|
|
2389
|
+
]
|
|
2390
|
+
},
|
|
2391
|
+
"annotations": {
|
|
2392
|
+
"readOnlyHint": false,
|
|
2393
|
+
"destructiveHint": false,
|
|
2394
|
+
"idempotentHint": true,
|
|
2395
|
+
"openWorldHint": false
|
|
2396
|
+
},
|
|
2397
|
+
"_http": {
|
|
2398
|
+
"method": "PATCH",
|
|
2399
|
+
"path": "/api/v1/campaigns/{campaignId}/steps/{stepId}"
|
|
2400
|
+
}
|
|
2401
|
+
},
|
|
2402
|
+
{
|
|
2403
|
+
"name": "delete_campaign_step",
|
|
2404
|
+
"title": "Delete Campaign Step",
|
|
2405
|
+
"description": "Permanently deletes a campaign step and all its A/Z variants. Returns no body on success.",
|
|
2406
|
+
"inputSchema": {
|
|
2407
|
+
"type": "object",
|
|
2408
|
+
"properties": {
|
|
2409
|
+
"campaignId": {
|
|
2410
|
+
"type": "string",
|
|
2411
|
+
"description": "Campaign ID."
|
|
2412
|
+
},
|
|
2413
|
+
"stepId": {
|
|
2414
|
+
"type": "string",
|
|
2415
|
+
"description": "Step ID to delete."
|
|
2416
|
+
}
|
|
2417
|
+
},
|
|
2418
|
+
"required": [
|
|
2419
|
+
"campaignId",
|
|
2420
|
+
"stepId"
|
|
2421
|
+
],
|
|
2422
|
+
"additionalProperties": false
|
|
2423
|
+
},
|
|
2424
|
+
"annotations": {
|
|
2425
|
+
"readOnlyHint": false,
|
|
2426
|
+
"destructiveHint": true,
|
|
2427
|
+
"idempotentHint": true,
|
|
2428
|
+
"openWorldHint": false
|
|
2429
|
+
},
|
|
2430
|
+
"_http": {
|
|
2431
|
+
"method": "DELETE",
|
|
2432
|
+
"path": "/api/v1/campaigns/{campaignId}/steps/{stepId}"
|
|
2433
|
+
}
|
|
2434
|
+
},
|
|
2435
|
+
{
|
|
2436
|
+
"name": "get_campaign_settings",
|
|
2437
|
+
"title": "Get Campaign Settings",
|
|
2438
|
+
"description": "Returns the options and schedule settings for a campaign (behaviour flags, daily limits, A/Z config, CC/BCC, schedule).",
|
|
2439
|
+
"inputSchema": {
|
|
2440
|
+
"type": "object",
|
|
2441
|
+
"properties": {
|
|
2442
|
+
"id": {
|
|
2443
|
+
"type": "string",
|
|
2444
|
+
"description": "Campaign ID."
|
|
2445
|
+
}
|
|
2446
|
+
},
|
|
2447
|
+
"required": [
|
|
2448
|
+
"id"
|
|
2449
|
+
],
|
|
2450
|
+
"additionalProperties": false
|
|
2451
|
+
},
|
|
2452
|
+
"outputSchema": {
|
|
2453
|
+
"type": "object",
|
|
2454
|
+
"description": "Full settings object. See CampaignSettings schema for all fields.",
|
|
2455
|
+
"additionalProperties": true
|
|
2456
|
+
},
|
|
2457
|
+
"annotations": {
|
|
2458
|
+
"readOnlyHint": true,
|
|
2459
|
+
"destructiveHint": false,
|
|
2460
|
+
"idempotentHint": true,
|
|
2461
|
+
"openWorldHint": false
|
|
2462
|
+
},
|
|
2463
|
+
"_http": {
|
|
2464
|
+
"method": "GET",
|
|
2465
|
+
"path": "/api/v1/campaigns/{id}/settings"
|
|
2466
|
+
}
|
|
2467
|
+
},
|
|
2468
|
+
{
|
|
2469
|
+
"name": "update_campaign_settings",
|
|
2470
|
+
"title": "Update Campaign Settings",
|
|
2471
|
+
"description": "Updates campaign options (behaviour, sending pattern, A/Z testing, deliverability) and/or schedule. All fields optional — omit to leave unchanged.",
|
|
2472
|
+
"inputSchema": {
|
|
2473
|
+
"type": "object",
|
|
2474
|
+
"properties": {
|
|
2475
|
+
"id": {
|
|
2476
|
+
"type": "string",
|
|
2477
|
+
"description": "Campaign ID."
|
|
2478
|
+
},
|
|
2479
|
+
"pauseOnReply": {
|
|
2480
|
+
"type": "boolean"
|
|
2481
|
+
},
|
|
2482
|
+
"pauseOnAutoReply": {
|
|
2483
|
+
"type": "boolean"
|
|
2484
|
+
},
|
|
2485
|
+
"stopCompanyOnReply": {
|
|
2486
|
+
"type": "boolean"
|
|
2487
|
+
},
|
|
2488
|
+
"trackOpens": {
|
|
2489
|
+
"type": "boolean"
|
|
2490
|
+
},
|
|
2491
|
+
"trackClicks": {
|
|
2492
|
+
"type": "boolean"
|
|
2493
|
+
},
|
|
2494
|
+
"deliveryOptimization": {
|
|
2495
|
+
"type": "boolean"
|
|
2496
|
+
},
|
|
2497
|
+
"includeUnsubscribe": {
|
|
2498
|
+
"type": "boolean"
|
|
2499
|
+
},
|
|
2500
|
+
"insertUnsubscribeHeader": {
|
|
2501
|
+
"type": "boolean"
|
|
2502
|
+
},
|
|
2503
|
+
"allowRiskyEmails": {
|
|
2504
|
+
"type": "boolean"
|
|
2505
|
+
},
|
|
2506
|
+
"providerMatching": {
|
|
2507
|
+
"type": "boolean"
|
|
2508
|
+
},
|
|
2509
|
+
"prioritizeNewLeads": {
|
|
2510
|
+
"type": "boolean"
|
|
2511
|
+
},
|
|
2512
|
+
"dailyLimit": {
|
|
2513
|
+
"type": "integer",
|
|
2514
|
+
"minimum": 1,
|
|
2515
|
+
"maximum": 10000
|
|
2516
|
+
},
|
|
2517
|
+
"minMinutesBetweenSends": {
|
|
2518
|
+
"type": "integer",
|
|
2519
|
+
"minimum": 1,
|
|
2520
|
+
"maximum": 1440
|
|
2521
|
+
},
|
|
2522
|
+
"randomAdditionalMinutes": {
|
|
2523
|
+
"type": "integer",
|
|
2524
|
+
"minimum": 0,
|
|
2525
|
+
"maximum": 1440
|
|
2526
|
+
},
|
|
2527
|
+
"maxNewLeadsPerDay": {
|
|
2528
|
+
"type": "integer",
|
|
2529
|
+
"minimum": 1,
|
|
2530
|
+
"maximum": 10000,
|
|
2531
|
+
"nullable": true
|
|
2532
|
+
},
|
|
2533
|
+
"abAutoOptimize": {
|
|
2534
|
+
"type": "boolean"
|
|
2535
|
+
},
|
|
2536
|
+
"abWinningMetric": {
|
|
2537
|
+
"type": "string",
|
|
2538
|
+
"enum": [
|
|
2539
|
+
"OPENS",
|
|
2540
|
+
"CLICKS",
|
|
2541
|
+
"REPLIES"
|
|
2542
|
+
],
|
|
2543
|
+
"nullable": true
|
|
2544
|
+
},
|
|
2545
|
+
"ccEmails": {
|
|
2546
|
+
"type": "array",
|
|
2547
|
+
"items": {
|
|
2548
|
+
"type": "string",
|
|
2549
|
+
"format": "email"
|
|
2550
|
+
},
|
|
2551
|
+
"maxItems": 20
|
|
2552
|
+
},
|
|
2553
|
+
"bccEmails": {
|
|
2554
|
+
"type": "array",
|
|
2555
|
+
"items": {
|
|
2556
|
+
"type": "string",
|
|
2557
|
+
"format": "email"
|
|
2558
|
+
},
|
|
2559
|
+
"maxItems": 20
|
|
2560
|
+
},
|
|
2561
|
+
"limitEmailsPerCompany": {
|
|
2562
|
+
"type": "integer",
|
|
2563
|
+
"minimum": 1,
|
|
2564
|
+
"maximum": 1000,
|
|
2565
|
+
"nullable": true
|
|
2566
|
+
},
|
|
2567
|
+
"tags": {
|
|
2568
|
+
"type": "array",
|
|
2569
|
+
"items": {
|
|
2570
|
+
"type": "string"
|
|
2571
|
+
},
|
|
2572
|
+
"maxItems": 50
|
|
2573
|
+
},
|
|
2574
|
+
"scheduleId": {
|
|
2575
|
+
"type": "string",
|
|
2576
|
+
"nullable": true
|
|
2577
|
+
},
|
|
2578
|
+
"startAt": {
|
|
2579
|
+
"type": "string",
|
|
2580
|
+
"format": "date-time",
|
|
2581
|
+
"nullable": true
|
|
2582
|
+
},
|
|
2583
|
+
"endAt": {
|
|
2584
|
+
"type": "string",
|
|
2585
|
+
"format": "date-time",
|
|
2586
|
+
"nullable": true
|
|
2587
|
+
}
|
|
2588
|
+
},
|
|
2589
|
+
"required": [
|
|
2590
|
+
"id"
|
|
2591
|
+
],
|
|
2592
|
+
"additionalProperties": false
|
|
2593
|
+
},
|
|
2594
|
+
"outputSchema": {
|
|
2595
|
+
"type": "object",
|
|
2596
|
+
"description": "Updated settings object.",
|
|
2597
|
+
"additionalProperties": true
|
|
2598
|
+
},
|
|
2599
|
+
"annotations": {
|
|
2600
|
+
"readOnlyHint": false,
|
|
2601
|
+
"destructiveHint": false,
|
|
2602
|
+
"idempotentHint": true,
|
|
2603
|
+
"openWorldHint": false
|
|
2604
|
+
},
|
|
2605
|
+
"_http": {
|
|
2606
|
+
"method": "PATCH",
|
|
2607
|
+
"path": "/api/v1/campaigns/{id}/settings"
|
|
2608
|
+
}
|
|
2609
|
+
},
|
|
2610
|
+
{
|
|
2611
|
+
"name": "get_campaign_intelligence",
|
|
2612
|
+
"title": "Get Campaign Intelligence",
|
|
2613
|
+
"description": "Returns the ICP (ideal customer profile) description and prospect website configured for AI copy generation.",
|
|
2614
|
+
"inputSchema": {
|
|
2615
|
+
"type": "object",
|
|
2616
|
+
"properties": {
|
|
2617
|
+
"id": {
|
|
2618
|
+
"type": "string",
|
|
2619
|
+
"description": "Campaign ID."
|
|
2620
|
+
}
|
|
2621
|
+
},
|
|
2622
|
+
"required": [
|
|
2623
|
+
"id"
|
|
2624
|
+
],
|
|
2625
|
+
"additionalProperties": false
|
|
2626
|
+
},
|
|
2627
|
+
"outputSchema": {
|
|
2628
|
+
"type": "object",
|
|
2629
|
+
"properties": {
|
|
2630
|
+
"icpDescription": {
|
|
2631
|
+
"type": [
|
|
2632
|
+
"string",
|
|
2633
|
+
"null"
|
|
2634
|
+
],
|
|
2635
|
+
"description": "ICP description used for AI copy generation."
|
|
2636
|
+
},
|
|
2637
|
+
"prospectWebsite": {
|
|
2638
|
+
"type": [
|
|
2639
|
+
"string",
|
|
2640
|
+
"null"
|
|
2641
|
+
],
|
|
2642
|
+
"format": "uri",
|
|
2643
|
+
"description": "Prospect website URL used for AI copy generation."
|
|
2644
|
+
}
|
|
2645
|
+
},
|
|
2646
|
+
"required": [
|
|
2647
|
+
"icpDescription",
|
|
2648
|
+
"prospectWebsite"
|
|
2649
|
+
]
|
|
2650
|
+
},
|
|
2651
|
+
"annotations": {
|
|
2652
|
+
"readOnlyHint": true,
|
|
2653
|
+
"destructiveHint": false,
|
|
2654
|
+
"idempotentHint": true,
|
|
2655
|
+
"openWorldHint": false
|
|
2656
|
+
},
|
|
2657
|
+
"_http": {
|
|
2658
|
+
"method": "GET",
|
|
2659
|
+
"path": "/api/v1/campaigns/{id}/intelligence"
|
|
2660
|
+
}
|
|
2661
|
+
},
|
|
2662
|
+
{
|
|
2663
|
+
"name": "update_campaign_intelligence",
|
|
2664
|
+
"title": "Update Campaign Intelligence",
|
|
2665
|
+
"description": "Updates the ICP description and/or prospect website used by the AI copy generator. Pass null to clear a field.",
|
|
2666
|
+
"inputSchema": {
|
|
2667
|
+
"type": "object",
|
|
2668
|
+
"properties": {
|
|
2669
|
+
"id": {
|
|
2670
|
+
"type": "string",
|
|
2671
|
+
"description": "Campaign ID."
|
|
2672
|
+
},
|
|
2673
|
+
"icpDescription": {
|
|
2674
|
+
"type": "string",
|
|
2675
|
+
"maxLength": 10000,
|
|
2676
|
+
"nullable": true,
|
|
2677
|
+
"description": "ICP description. Pass null to clear."
|
|
2678
|
+
},
|
|
2679
|
+
"prospectWebsite": {
|
|
2680
|
+
"type": "string",
|
|
2681
|
+
"format": "uri",
|
|
2682
|
+
"maxLength": 2048,
|
|
2683
|
+
"nullable": true,
|
|
2684
|
+
"description": "Prospect website URL. Pass null to clear."
|
|
2685
|
+
}
|
|
2686
|
+
},
|
|
2687
|
+
"required": [
|
|
2688
|
+
"id"
|
|
2689
|
+
],
|
|
2690
|
+
"additionalProperties": false
|
|
2691
|
+
},
|
|
2692
|
+
"outputSchema": {
|
|
2693
|
+
"type": "object",
|
|
2694
|
+
"properties": {
|
|
2695
|
+
"icpDescription": {
|
|
2696
|
+
"type": [
|
|
2697
|
+
"string",
|
|
2698
|
+
"null"
|
|
2699
|
+
]
|
|
2700
|
+
},
|
|
2701
|
+
"prospectWebsite": {
|
|
2702
|
+
"type": [
|
|
2703
|
+
"string",
|
|
2704
|
+
"null"
|
|
2705
|
+
]
|
|
2706
|
+
}
|
|
2707
|
+
},
|
|
2708
|
+
"required": [
|
|
2709
|
+
"icpDescription",
|
|
2710
|
+
"prospectWebsite"
|
|
2711
|
+
]
|
|
2712
|
+
},
|
|
2713
|
+
"annotations": {
|
|
2714
|
+
"readOnlyHint": false,
|
|
2715
|
+
"destructiveHint": false,
|
|
2716
|
+
"idempotentHint": true,
|
|
2717
|
+
"openWorldHint": false
|
|
2718
|
+
},
|
|
2719
|
+
"_http": {
|
|
2720
|
+
"method": "PATCH",
|
|
2721
|
+
"path": "/api/v1/campaigns/{id}/intelligence"
|
|
2722
|
+
}
|
|
2723
|
+
},
|
|
2724
|
+
{
|
|
2725
|
+
"name": "list_contact_lists",
|
|
2726
|
+
"title": "List Contact Lists",
|
|
2727
|
+
"description": "Returns all contact lists for the account, including the count of active contacts in each list.",
|
|
2728
|
+
"inputSchema": {
|
|
2729
|
+
"type": "object",
|
|
2730
|
+
"additionalProperties": false
|
|
2731
|
+
},
|
|
2732
|
+
"outputSchema": {
|
|
2733
|
+
"type": "object",
|
|
2734
|
+
"properties": {
|
|
2735
|
+
"data": {
|
|
2736
|
+
"type": "array",
|
|
2737
|
+
"items": {
|
|
2738
|
+
"type": "object",
|
|
2739
|
+
"properties": {
|
|
2740
|
+
"id": {
|
|
2741
|
+
"type": "string"
|
|
2742
|
+
},
|
|
2743
|
+
"name": {
|
|
2744
|
+
"type": "string"
|
|
2745
|
+
},
|
|
2746
|
+
"contactCount": {
|
|
2747
|
+
"type": "integer",
|
|
2748
|
+
"description": "Number of active (non-deleted) contacts."
|
|
2749
|
+
},
|
|
2750
|
+
"createdAt": {
|
|
2751
|
+
"type": "string",
|
|
2752
|
+
"format": "date-time"
|
|
2753
|
+
},
|
|
2754
|
+
"updatedAt": {
|
|
2755
|
+
"type": "string",
|
|
2756
|
+
"format": "date-time"
|
|
2757
|
+
}
|
|
2758
|
+
},
|
|
2759
|
+
"required": [
|
|
2760
|
+
"id",
|
|
2761
|
+
"name",
|
|
2762
|
+
"contactCount",
|
|
2763
|
+
"createdAt",
|
|
2764
|
+
"updatedAt"
|
|
2765
|
+
]
|
|
2766
|
+
}
|
|
2767
|
+
}
|
|
2768
|
+
},
|
|
2769
|
+
"required": [
|
|
2770
|
+
"data"
|
|
2771
|
+
]
|
|
2772
|
+
},
|
|
2773
|
+
"annotations": {
|
|
2774
|
+
"readOnlyHint": true,
|
|
2775
|
+
"destructiveHint": false,
|
|
2776
|
+
"idempotentHint": true,
|
|
2777
|
+
"openWorldHint": false
|
|
2778
|
+
},
|
|
2779
|
+
"_http": {
|
|
2780
|
+
"method": "GET",
|
|
2781
|
+
"path": "/api/v1/lists"
|
|
2782
|
+
}
|
|
2783
|
+
},
|
|
2784
|
+
{
|
|
2785
|
+
"name": "create_contact_list",
|
|
2786
|
+
"title": "Create Contact List",
|
|
2787
|
+
"description": "Creates a new empty contact list.",
|
|
2788
|
+
"inputSchema": {
|
|
2789
|
+
"type": "object",
|
|
2790
|
+
"properties": {
|
|
2791
|
+
"name": {
|
|
2792
|
+
"type": "string",
|
|
2793
|
+
"minLength": 1,
|
|
2794
|
+
"maxLength": 255,
|
|
2795
|
+
"description": "List name."
|
|
2796
|
+
}
|
|
2797
|
+
},
|
|
2798
|
+
"required": [
|
|
2799
|
+
"name"
|
|
2800
|
+
],
|
|
2801
|
+
"additionalProperties": false
|
|
2802
|
+
},
|
|
2803
|
+
"outputSchema": {
|
|
2804
|
+
"type": "object",
|
|
2805
|
+
"properties": {
|
|
2806
|
+
"id": {
|
|
2807
|
+
"type": "string"
|
|
2808
|
+
},
|
|
2809
|
+
"name": {
|
|
2810
|
+
"type": "string"
|
|
2811
|
+
},
|
|
2812
|
+
"createdAt": {
|
|
2813
|
+
"type": "string",
|
|
2814
|
+
"format": "date-time"
|
|
2815
|
+
}
|
|
2816
|
+
},
|
|
2817
|
+
"required": [
|
|
2818
|
+
"id",
|
|
2819
|
+
"name",
|
|
2820
|
+
"createdAt"
|
|
2821
|
+
]
|
|
2822
|
+
},
|
|
2823
|
+
"annotations": {
|
|
2824
|
+
"readOnlyHint": false,
|
|
2825
|
+
"destructiveHint": false,
|
|
2826
|
+
"idempotentHint": false,
|
|
2827
|
+
"openWorldHint": false
|
|
2828
|
+
},
|
|
2829
|
+
"_http": {
|
|
2830
|
+
"method": "POST",
|
|
2831
|
+
"path": "/api/v1/lists"
|
|
2832
|
+
}
|
|
2833
|
+
},
|
|
2834
|
+
{
|
|
2835
|
+
"name": "list_contacts_in_list",
|
|
2836
|
+
"title": "List Contacts in List",
|
|
2837
|
+
"description": "Returns contacts that are members of a given contact list, cursor-paginated. Supports search across email, name, and company.",
|
|
2838
|
+
"inputSchema": {
|
|
2839
|
+
"type": "object",
|
|
2840
|
+
"properties": {
|
|
2841
|
+
"listId": {
|
|
2842
|
+
"type": "string",
|
|
2843
|
+
"description": "Contact list ID."
|
|
2844
|
+
},
|
|
2845
|
+
"cursor": {
|
|
2846
|
+
"type": "string",
|
|
2847
|
+
"description": "Pagination cursor from the previous response."
|
|
2848
|
+
},
|
|
2849
|
+
"limit": {
|
|
2850
|
+
"type": "integer",
|
|
2851
|
+
"minimum": 1,
|
|
2852
|
+
"maximum": 100,
|
|
2853
|
+
"default": 25,
|
|
2854
|
+
"description": "Number of contacts to return."
|
|
2855
|
+
},
|
|
2856
|
+
"search": {
|
|
2857
|
+
"type": "string",
|
|
2858
|
+
"description": "Case-insensitive substring search across email, first name, last name, company."
|
|
2859
|
+
}
|
|
2860
|
+
},
|
|
2861
|
+
"required": [
|
|
2862
|
+
"listId"
|
|
2863
|
+
],
|
|
2864
|
+
"additionalProperties": false
|
|
2865
|
+
},
|
|
2866
|
+
"outputSchema": {
|
|
2867
|
+
"type": "object",
|
|
2868
|
+
"properties": {
|
|
2869
|
+
"data": {
|
|
2870
|
+
"type": "array",
|
|
2871
|
+
"items": {
|
|
2872
|
+
"type": "object",
|
|
2873
|
+
"properties": {
|
|
2874
|
+
"id": {
|
|
2875
|
+
"type": "string"
|
|
2876
|
+
},
|
|
2877
|
+
"email": {
|
|
2878
|
+
"type": "string",
|
|
2879
|
+
"format": "email"
|
|
2880
|
+
},
|
|
2881
|
+
"firstName": {
|
|
2882
|
+
"type": [
|
|
2883
|
+
"string",
|
|
2884
|
+
"null"
|
|
2885
|
+
]
|
|
2886
|
+
},
|
|
2887
|
+
"lastName": {
|
|
2888
|
+
"type": [
|
|
2889
|
+
"string",
|
|
2890
|
+
"null"
|
|
2891
|
+
]
|
|
2892
|
+
},
|
|
2893
|
+
"company": {
|
|
2894
|
+
"type": [
|
|
2895
|
+
"string",
|
|
2896
|
+
"null"
|
|
2897
|
+
]
|
|
2898
|
+
},
|
|
2899
|
+
"title": {
|
|
2900
|
+
"type": [
|
|
2901
|
+
"string",
|
|
2902
|
+
"null"
|
|
2903
|
+
]
|
|
2904
|
+
},
|
|
2905
|
+
"status": {
|
|
2906
|
+
"type": "string"
|
|
2907
|
+
},
|
|
2908
|
+
"createdAt": {
|
|
2909
|
+
"type": "string",
|
|
2910
|
+
"format": "date-time"
|
|
2911
|
+
}
|
|
2912
|
+
},
|
|
2913
|
+
"required": [
|
|
2914
|
+
"id",
|
|
2915
|
+
"email",
|
|
2916
|
+
"status",
|
|
2917
|
+
"createdAt"
|
|
2918
|
+
]
|
|
2919
|
+
}
|
|
2920
|
+
},
|
|
2921
|
+
"pagination": {
|
|
2922
|
+
"type": "object",
|
|
2923
|
+
"properties": {
|
|
2924
|
+
"nextCursor": {
|
|
2925
|
+
"type": [
|
|
2926
|
+
"string",
|
|
2927
|
+
"null"
|
|
2928
|
+
]
|
|
2929
|
+
},
|
|
2930
|
+
"hasMore": {
|
|
2931
|
+
"type": "boolean"
|
|
2932
|
+
}
|
|
2933
|
+
},
|
|
2934
|
+
"required": [
|
|
2935
|
+
"nextCursor",
|
|
2936
|
+
"hasMore"
|
|
2937
|
+
]
|
|
2938
|
+
}
|
|
2939
|
+
},
|
|
2940
|
+
"required": [
|
|
2941
|
+
"data",
|
|
2942
|
+
"pagination"
|
|
2943
|
+
]
|
|
2944
|
+
},
|
|
2945
|
+
"annotations": {
|
|
2946
|
+
"readOnlyHint": true,
|
|
2947
|
+
"destructiveHint": false,
|
|
2948
|
+
"idempotentHint": true,
|
|
2949
|
+
"openWorldHint": false
|
|
2950
|
+
},
|
|
2951
|
+
"_http": {
|
|
2952
|
+
"method": "GET",
|
|
2953
|
+
"path": "/api/v1/lists/{listId}/contacts"
|
|
2954
|
+
}
|
|
2955
|
+
},
|
|
2956
|
+
{
|
|
2957
|
+
"name": "remove_contact_from_list",
|
|
2958
|
+
"title": "Remove Contact from List",
|
|
2959
|
+
"description": "Removes a contact's membership from a list (removes the 'label'). The contact record is preserved and can be re-added later. Returns no body on success.",
|
|
2960
|
+
"inputSchema": {
|
|
2961
|
+
"type": "object",
|
|
2962
|
+
"properties": {
|
|
2963
|
+
"listId": {
|
|
2964
|
+
"type": "string",
|
|
2965
|
+
"description": "Contact list ID."
|
|
2966
|
+
},
|
|
2967
|
+
"contactId": {
|
|
2968
|
+
"type": "string",
|
|
2969
|
+
"description": "Contact ID to remove."
|
|
2970
|
+
}
|
|
2971
|
+
},
|
|
2972
|
+
"required": [
|
|
2973
|
+
"listId",
|
|
2974
|
+
"contactId"
|
|
2975
|
+
],
|
|
2976
|
+
"additionalProperties": false
|
|
2977
|
+
},
|
|
2978
|
+
"annotations": {
|
|
2979
|
+
"readOnlyHint": false,
|
|
2980
|
+
"destructiveHint": false,
|
|
2981
|
+
"idempotentHint": true,
|
|
2982
|
+
"openWorldHint": false
|
|
2983
|
+
},
|
|
2984
|
+
"_http": {
|
|
2985
|
+
"method": "DELETE",
|
|
2986
|
+
"path": "/api/v1/lists/{listId}/contacts/{contactId}"
|
|
2987
|
+
}
|
|
2988
|
+
},
|
|
2989
|
+
{
|
|
2990
|
+
"name": "get_campaign_variables",
|
|
2991
|
+
"title": "Get Campaign Template Variables",
|
|
2992
|
+
"description": "Returns every variable and snippet available for a campaign step: contact fields (standard + custom from enrolled contacts), mailbox signature, date/time tokens, spintax presets, and Liquid snippets. Use this to know what tokens you can insert when writing or editing a step subject or body.",
|
|
2993
|
+
"inputSchema": {
|
|
2994
|
+
"type": "object",
|
|
2995
|
+
"properties": {
|
|
2996
|
+
"campaignId": {
|
|
2997
|
+
"type": "string",
|
|
2998
|
+
"description": "Campaign ID."
|
|
2999
|
+
}
|
|
3000
|
+
},
|
|
3001
|
+
"required": [
|
|
3002
|
+
"campaignId"
|
|
3003
|
+
],
|
|
3004
|
+
"additionalProperties": false
|
|
3005
|
+
},
|
|
3006
|
+
"annotations": {
|
|
3007
|
+
"readOnlyHint": true,
|
|
3008
|
+
"destructiveHint": false,
|
|
3009
|
+
"idempotentHint": true,
|
|
3010
|
+
"openWorldHint": false
|
|
3011
|
+
},
|
|
3012
|
+
"_http": {
|
|
3013
|
+
"method": "GET",
|
|
3014
|
+
"path": "/api/v1/campaigns/{campaignId}/variables"
|
|
3015
|
+
}
|
|
3016
|
+
}
|
|
3017
|
+
]
|
|
3018
|
+
}
|