@automate.ax/integration-contracts 0.55.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.
Files changed (136) hide show
  1. package/dist/airtable/api.d.ts +19 -0
  2. package/dist/airtable/api.js +44 -0
  3. package/dist/airtable/index.d.ts +353 -0
  4. package/dist/airtable/index.js +32 -0
  5. package/dist/airtable/schemas.d.ts +716 -0
  6. package/dist/airtable/schemas.js +184 -0
  7. package/dist/asana/api.d.ts +70 -0
  8. package/dist/asana/api.js +119 -0
  9. package/dist/asana/index.d.ts +384 -0
  10. package/dist/asana/index.js +38 -0
  11. package/dist/asana/schemas.d.ts +1060 -0
  12. package/dist/asana/schemas.js +512 -0
  13. package/dist/brevo/api.d.ts +31 -0
  14. package/dist/brevo/api.js +64 -0
  15. package/dist/brevo/index.d.ts +822 -0
  16. package/dist/brevo/index.js +51 -0
  17. package/dist/brevo/schemas.d.ts +1217 -0
  18. package/dist/brevo/schemas.js +332 -0
  19. package/dist/github/index.d.ts +37 -0
  20. package/dist/github/index.js +106 -0
  21. package/dist/github/schemas.d.ts +8014 -0
  22. package/dist/github/schemas.js +113 -0
  23. package/dist/gmail/gmail.d.ts +172 -0
  24. package/dist/gmail/gmail.js +405 -0
  25. package/dist/gmail/index.d.ts +262 -0
  26. package/dist/gmail/index.js +23 -0
  27. package/dist/gmail/schemas.d.ts +444 -0
  28. package/dist/gmail/schemas.js +242 -0
  29. package/dist/google-calendar/event-schemas.d.ts +117 -0
  30. package/dist/google-calendar/event-schemas.js +13 -0
  31. package/dist/google-calendar/google-calendar.d.ts +147 -0
  32. package/dist/google-calendar/google-calendar.js +583 -0
  33. package/dist/google-calendar/index.d.ts +365 -0
  34. package/dist/google-calendar/index.js +24 -0
  35. package/dist/google-calendar/schemas.d.ts +592 -0
  36. package/dist/google-calendar/schemas.js +379 -0
  37. package/dist/google-forms/event-schemas.d.ts +105 -0
  38. package/dist/google-forms/event-schemas.js +20 -0
  39. package/dist/google-forms/google-forms.d.ts +243 -0
  40. package/dist/google-forms/google-forms.js +581 -0
  41. package/dist/google-forms/index.d.ts +141 -0
  42. package/dist/google-forms/index.js +20 -0
  43. package/dist/google-forms/schemas.d.ts +618 -0
  44. package/dist/google-forms/schemas.js +383 -0
  45. package/dist/linear/api.d.ts +63 -0
  46. package/dist/linear/api.js +88 -0
  47. package/dist/linear/index.d.ts +1338 -0
  48. package/dist/linear/index.js +55 -0
  49. package/dist/linear/schemas.d.ts +1795 -0
  50. package/dist/linear/schemas.js +760 -0
  51. package/dist/outlook/graph.d.ts +34 -0
  52. package/dist/outlook/graph.js +98 -0
  53. package/dist/outlook/index.d.ts +115 -0
  54. package/dist/outlook/index.js +11 -0
  55. package/dist/outlook/schemas.d.ts +529 -0
  56. package/dist/outlook/schemas.js +312 -0
  57. package/dist/resend/index.d.ts +707 -0
  58. package/dist/resend/index.js +54 -0
  59. package/dist/resend/schemas.d.ts +1033 -0
  60. package/dist/resend/schemas.js +377 -0
  61. package/dist/slack/index.d.ts +151 -0
  62. package/dist/slack/index.js +22 -0
  63. package/dist/slack/schemas.d.ts +641 -0
  64. package/dist/slack/schemas.js +581 -0
  65. package/dist/teams/graph.d.ts +33 -0
  66. package/dist/teams/graph.js +95 -0
  67. package/dist/teams/index.d.ts +164 -0
  68. package/dist/teams/index.js +21 -0
  69. package/dist/teams/schemas.d.ts +675 -0
  70. package/dist/teams/schemas.js +365 -0
  71. package/dist/trello/api.d.ts +69 -0
  72. package/dist/trello/api.js +140 -0
  73. package/dist/trello/event-schemas.d.ts +1101 -0
  74. package/dist/trello/event-schemas.js +233 -0
  75. package/dist/trello/index.d.ts +721 -0
  76. package/dist/trello/index.js +35 -0
  77. package/dist/trello/schemas.d.ts +283 -0
  78. package/dist/trello/schemas.js +401 -0
  79. package/dist/triggers.d.ts +26 -0
  80. package/dist/triggers.js +33 -0
  81. package/dist/vercel/index.d.ts +1065 -0
  82. package/dist/vercel/index.js +114 -0
  83. package/dist/vercel/schemas.d.ts +1518 -0
  84. package/dist/vercel/schemas.js +335 -0
  85. package/dist/whatsapp/api.d.ts +62 -0
  86. package/dist/whatsapp/api.js +121 -0
  87. package/dist/whatsapp/index.d.ts +614 -0
  88. package/dist/whatsapp/index.js +35 -0
  89. package/dist/whatsapp/schemas.d.ts +926 -0
  90. package/dist/whatsapp/schemas.js +326 -0
  91. package/package.json +169 -0
  92. package/src/airtable/api.ts +66 -0
  93. package/src/airtable/index.ts +41 -0
  94. package/src/airtable/schemas.ts +231 -0
  95. package/src/asana/api.ts +171 -0
  96. package/src/asana/index.ts +49 -0
  97. package/src/asana/schemas.ts +655 -0
  98. package/src/brevo/api.ts +89 -0
  99. package/src/brevo/index.ts +66 -0
  100. package/src/brevo/schemas.ts +449 -0
  101. package/src/github/index.ts +217 -0
  102. package/src/github/schemas.ts +435 -0
  103. package/src/gmail/gmail.ts +577 -0
  104. package/src/gmail/index.ts +26 -0
  105. package/src/gmail/schemas.ts +327 -0
  106. package/src/google-calendar/event-schemas.ts +16 -0
  107. package/src/google-calendar/google-calendar.ts +727 -0
  108. package/src/google-calendar/index.ts +27 -0
  109. package/src/google-calendar/schemas.ts +529 -0
  110. package/src/google-forms/event-schemas.ts +26 -0
  111. package/src/google-forms/google-forms.ts +683 -0
  112. package/src/google-forms/index.ts +23 -0
  113. package/src/google-forms/schemas.ts +499 -0
  114. package/src/linear/api.ts +141 -0
  115. package/src/linear/index.ts +71 -0
  116. package/src/linear/schemas.ts +1060 -0
  117. package/src/outlook/graph.ts +132 -0
  118. package/src/outlook/index.ts +14 -0
  119. package/src/outlook/schemas.ts +388 -0
  120. package/src/resend/index.ts +70 -0
  121. package/src/resend/schemas.ts +462 -0
  122. package/src/slack/index.ts +29 -0
  123. package/src/slack/schemas.ts +737 -0
  124. package/src/teams/graph.ts +130 -0
  125. package/src/teams/index.ts +27 -0
  126. package/src/teams/schemas.ts +463 -0
  127. package/src/trello/api.ts +190 -0
  128. package/src/trello/event-schemas.ts +290 -0
  129. package/src/trello/index.ts +45 -0
  130. package/src/trello/schemas.ts +507 -0
  131. package/src/triggers.ts +68 -0
  132. package/src/vercel/index.ts +147 -0
  133. package/src/vercel/schemas.ts +594 -0
  134. package/src/whatsapp/api.ts +171 -0
  135. package/src/whatsapp/index.ts +46 -0
  136. package/src/whatsapp/schemas.ts +341 -0
@@ -0,0 +1,507 @@
1
+ import { z } from "zod"
2
+
3
+ const OPTIONAL_DATE_SCHEMA = z
4
+ .string()
5
+ .nullable()
6
+ .optional()
7
+ .transform((value) => (value ? new Date(value) : null))
8
+
9
+ export const TRELLO_MEMBER_SCHEMA = z.object({
10
+ /** Member avatar URL, when one is configured. */
11
+ avatarUrl: z.string().nullable(),
12
+
13
+ /** Member's display name. */
14
+ fullName: z.string(),
15
+
16
+ /** Stable Trello member ID. */
17
+ id: z.string(),
18
+
19
+ /** Member initials. */
20
+ initials: z.string().optional(),
21
+
22
+ /** Public Trello profile URL, when available. */
23
+ url: z.string().nullable(),
24
+
25
+ /** Unique Trello username. */
26
+ username: z.string(),
27
+ })
28
+
29
+ export const TRELLO_BOARD_SCHEMA = z.object({
30
+ /** Whether the board is archived. */
31
+ closed: z.boolean(),
32
+
33
+ /** Board description. */
34
+ description: z.string(),
35
+
36
+ /** Stable Trello board ID. */
37
+ id: z.string(),
38
+
39
+ /** Workspace ID containing the board, when applicable. */
40
+ organizationId: z.string().nullable(),
41
+
42
+ /** Last board activity time. */
43
+ lastActivityAt: z.date().nullable(),
44
+
45
+ /** Board name. */
46
+ name: z.string(),
47
+
48
+ /** Short public or workspace-visible board URL. */
49
+ shortUrl: z.string(),
50
+
51
+ /** Whether the connected member starred the board. */
52
+ starred: z.boolean(),
53
+
54
+ /** Whether the connected member watches the board. */
55
+ subscribed: z.boolean(),
56
+
57
+ /** Full Trello board URL. */
58
+ url: z.string(),
59
+ })
60
+
61
+ export const TRELLO_LIST_SCHEMA = z.object({
62
+ /** Stable ID of the containing board. */
63
+ boardId: z.string(),
64
+
65
+ /** Whether the list is archived. */
66
+ closed: z.boolean(),
67
+
68
+ /** Stable Trello list ID. */
69
+ id: z.string(),
70
+
71
+ /** List name. */
72
+ name: z.string(),
73
+
74
+ /** Trello ordering position. */
75
+ position: z.number(),
76
+
77
+ /** Whether the connected member watches the list. */
78
+ subscribed: z.boolean(),
79
+ })
80
+
81
+ export const TRELLO_LABEL_SCHEMA = z.object({
82
+ /** Board containing the label, when returned. */
83
+ boardId: z.string().optional(),
84
+
85
+ /** Trello label color, or null for no color. */
86
+ color: z.string().nullable(),
87
+
88
+ /** Stable Trello label ID. */
89
+ id: z.string(),
90
+
91
+ /** Label name. */
92
+ name: z.string(),
93
+ })
94
+
95
+ export const TRELLO_CARD_SCHEMA = z.object({
96
+ /** Whether the card is archived. */
97
+ closed: z.boolean(),
98
+
99
+ /** Stable ID of the containing board. */
100
+ boardId: z.string(),
101
+
102
+ /** Card description. */
103
+ description: z.string(),
104
+
105
+ /** Card due time. */
106
+ dueAt: z.date().nullable(),
107
+
108
+ /** Whether work due on the card is complete. */
109
+ dueComplete: z.boolean(),
110
+
111
+ /** Stable Trello card ID. */
112
+ id: z.string(),
113
+
114
+ /** Labels currently applied to the card. */
115
+ labels: TRELLO_LABEL_SCHEMA.array(),
116
+
117
+ /** Stable IDs of labels currently applied to the card. */
118
+ labelIds: z.string().array(),
119
+
120
+ /** Last card activity time. */
121
+ lastActivityAt: z.date().nullable(),
122
+
123
+ /** Stable ID of the containing list. */
124
+ listId: z.string(),
125
+
126
+ /** Stable IDs of members assigned to the card. */
127
+ memberIds: z.string().array(),
128
+
129
+ /** Card name. */
130
+ name: z.string(),
131
+
132
+ /** Trello ordering position. */
133
+ position: z.number(),
134
+
135
+ /** Card short link used in Trello URLs. */
136
+ shortLink: z.string(),
137
+
138
+ /** Short public or workspace-visible card URL. */
139
+ shortUrl: z.string(),
140
+
141
+ /** Optional work start time. */
142
+ startAt: z.date().nullable(),
143
+
144
+ /** Whether the connected member watches the card. */
145
+ subscribed: z.boolean(),
146
+
147
+ /** Full Trello card URL. */
148
+ url: z.string(),
149
+ })
150
+
151
+ export const TRELLO_COMMENT_SCHEMA = z.object({
152
+ /** Time the comment was created. */
153
+ commentedAt: z.date(),
154
+
155
+ /** Comment author, when returned by Trello. */
156
+ creator: TRELLO_MEMBER_SCHEMA.nullable(),
157
+
158
+ /** Stable Trello action ID for the comment. */
159
+ id: z.string(),
160
+
161
+ /** Comment text. */
162
+ text: z.string(),
163
+ })
164
+
165
+ export const TRELLO_ATTACHMENT_SCHEMA = z.object({
166
+ /** Attachment size in bytes, when known. */
167
+ bytes: z.number().nullable(),
168
+
169
+ /** Time the attachment was created. */
170
+ createdAt: z.date(),
171
+
172
+ /** Stable Trello attachment ID. */
173
+ id: z.string(),
174
+
175
+ /** Whether the attachment is an uploaded file rather than a link. */
176
+ isUpload: z.boolean(),
177
+
178
+ /** MIME type, when known. */
179
+ mimeType: z.string().nullable(),
180
+
181
+ /** Attachment display name. */
182
+ name: z.string(),
183
+
184
+ /** Trello ordering position. */
185
+ position: z.number(),
186
+
187
+ /** Attachment URL. */
188
+ url: z.string(),
189
+ })
190
+
191
+ export const TRELLO_CHECK_ITEM_SCHEMA = z.object({
192
+ /** Time the checklist item is due. */
193
+ dueAt: z.date().nullable(),
194
+
195
+ /** Reminder offset in minutes, when configured. */
196
+ dueReminder: z.number().nullable(),
197
+
198
+ /** Stable Trello checklist item ID. */
199
+ id: z.string(),
200
+
201
+ /** Assigned member ID, when configured. */
202
+ memberId: z.string().nullable(),
203
+
204
+ /** Checklist item name. */
205
+ name: z.string(),
206
+
207
+ /** Trello ordering position. */
208
+ position: z.number(),
209
+
210
+ /** Completion state. */
211
+ state: z.enum(["complete", "incomplete"]),
212
+ })
213
+
214
+ export const TRELLO_CHECKLIST_SCHEMA = z.object({
215
+ /** Stable ID of the containing board. */
216
+ boardId: z.string(),
217
+
218
+ /** Stable ID of the containing card. */
219
+ cardId: z.string(),
220
+
221
+ /** Checklist items, when requested. */
222
+ checkItems: TRELLO_CHECK_ITEM_SCHEMA.array(),
223
+
224
+ /** Stable Trello checklist ID. */
225
+ id: z.string(),
226
+
227
+ /** Checklist name. */
228
+ name: z.string(),
229
+
230
+ /** Trello ordering position. */
231
+ position: z.number(),
232
+ })
233
+
234
+ export const TRELLO_PROVIDER_MEMBER_SCHEMA = z.looseObject({
235
+ avatarUrl: z.string().nullable().optional(),
236
+ fullName: z.string(),
237
+ id: z.string(),
238
+ initials: z.string().optional(),
239
+ url: z.string().nullable().optional(),
240
+ username: z.string(),
241
+ })
242
+
243
+ export const TRELLO_PROVIDER_BOARD_SCHEMA = z.looseObject({
244
+ closed: z.boolean().prefault(false),
245
+ dateLastActivity: z.string().nullable().optional(),
246
+ desc: z.string().prefault(""),
247
+ id: z.string(),
248
+ idOrganization: z.string().nullable().optional(),
249
+ name: z.string(),
250
+ shortUrl: z.string().prefault(""),
251
+ starred: z.boolean().prefault(false),
252
+ subscribed: z.boolean().prefault(false),
253
+ url: z.string().prefault(""),
254
+ })
255
+
256
+ export const TRELLO_PROVIDER_LIST_SCHEMA = z.looseObject({
257
+ closed: z.boolean().prefault(false),
258
+ id: z.string(),
259
+ idBoard: z.string(),
260
+ name: z.string(),
261
+ pos: z.number(),
262
+ subscribed: z.boolean().prefault(false),
263
+ })
264
+
265
+ export const TRELLO_PROVIDER_LABEL_SCHEMA = z.looseObject({
266
+ color: z.string().nullable().prefault(null),
267
+ id: z.string(),
268
+ idBoard: z.string().optional(),
269
+ name: z.string().prefault(""),
270
+ })
271
+
272
+ export const TRELLO_PROVIDER_CARD_SCHEMA = z.looseObject({
273
+ closed: z.boolean().prefault(false),
274
+ dateLastActivity: z.string().nullable().optional(),
275
+ desc: z.string().prefault(""),
276
+ due: z.string().nullable().optional(),
277
+ dueComplete: z.boolean().prefault(false),
278
+ id: z.string(),
279
+ idBoard: z.string(),
280
+ idLabels: z.string().array().prefault([]),
281
+ idList: z.string(),
282
+ idMembers: z.string().array().prefault([]),
283
+ labels: TRELLO_PROVIDER_LABEL_SCHEMA.array().prefault([]),
284
+ name: z.string(),
285
+ pos: z.number(),
286
+ shortLink: z.string().prefault(""),
287
+ shortUrl: z.string().prefault(""),
288
+ start: z.string().nullable().optional(),
289
+ subscribed: z.boolean().prefault(false),
290
+ url: z.string().prefault(""),
291
+ })
292
+
293
+ export const TRELLO_PROVIDER_COMMENT_SCHEMA = z.looseObject({
294
+ data: z.looseObject({ text: z.string() }),
295
+ date: z.string(),
296
+ id: z.string(),
297
+ memberCreator: TRELLO_PROVIDER_MEMBER_SCHEMA.optional(),
298
+ })
299
+
300
+ export const TRELLO_PROVIDER_ATTACHMENT_SCHEMA = z.looseObject({
301
+ bytes: z.number().nullable().optional(),
302
+ date: z.string(),
303
+ id: z.string(),
304
+ isUpload: z.boolean().prefault(false),
305
+ mimeType: z.string().nullable().optional(),
306
+ name: z.string(),
307
+ pos: z.number(),
308
+ url: z.string(),
309
+ })
310
+
311
+ export const TRELLO_PROVIDER_CHECK_ITEM_SCHEMA = z.looseObject({
312
+ due: z.string().nullable().optional(),
313
+ dueReminder: z.number().nullable().optional(),
314
+ id: z.string(),
315
+ idMember: z.string().nullable().optional(),
316
+ name: z.string(),
317
+ pos: z.number(),
318
+ state: z.enum(["complete", "incomplete"]),
319
+ })
320
+
321
+ export const TRELLO_PROVIDER_CHECKLIST_SCHEMA = z.looseObject({
322
+ checkItems: TRELLO_PROVIDER_CHECK_ITEM_SCHEMA.array().prefault([]),
323
+ id: z.string(),
324
+ idBoard: z.string(),
325
+ idCard: z.string(),
326
+ name: z.string(),
327
+ pos: z.number(),
328
+ })
329
+
330
+ /**
331
+ * Normalizes one Trello member response.
332
+ *
333
+ * @param member - Provider member resource.
334
+ */
335
+ export function toTrelloMember(
336
+ member: z.output<typeof TRELLO_PROVIDER_MEMBER_SCHEMA>,
337
+ ): z.output<typeof TRELLO_MEMBER_SCHEMA> {
338
+ return {
339
+ avatarUrl: member.avatarUrl ?? null,
340
+ fullName: member.fullName,
341
+ id: member.id,
342
+ initials: member.initials,
343
+ url: member.url ?? null,
344
+ username: member.username,
345
+ }
346
+ }
347
+
348
+ /**
349
+ * Normalizes one Trello board response.
350
+ *
351
+ * @param board - Provider board resource.
352
+ */
353
+ export function toTrelloBoard(
354
+ board: z.output<typeof TRELLO_PROVIDER_BOARD_SCHEMA>,
355
+ ): z.output<typeof TRELLO_BOARD_SCHEMA> {
356
+ return {
357
+ closed: board.closed,
358
+ description: board.desc,
359
+ id: board.id,
360
+ lastActivityAt: OPTIONAL_DATE_SCHEMA.parse(board.dateLastActivity),
361
+ name: board.name,
362
+ organizationId: board.idOrganization ?? null,
363
+ shortUrl: board.shortUrl,
364
+ starred: board.starred,
365
+ subscribed: board.subscribed,
366
+ url: board.url,
367
+ }
368
+ }
369
+
370
+ /**
371
+ * Normalizes one Trello list response.
372
+ *
373
+ * @param list - Provider list resource.
374
+ */
375
+ export function toTrelloList(
376
+ list: z.output<typeof TRELLO_PROVIDER_LIST_SCHEMA>,
377
+ ): z.output<typeof TRELLO_LIST_SCHEMA> {
378
+ return {
379
+ boardId: list.idBoard,
380
+ closed: list.closed,
381
+ id: list.id,
382
+ name: list.name,
383
+ position: list.pos,
384
+ subscribed: list.subscribed,
385
+ }
386
+ }
387
+
388
+ /**
389
+ * Normalizes one Trello label response.
390
+ *
391
+ * @param label - Provider label resource.
392
+ */
393
+ export function toTrelloLabel(
394
+ label: z.output<typeof TRELLO_PROVIDER_LABEL_SCHEMA>,
395
+ ): z.output<typeof TRELLO_LABEL_SCHEMA> {
396
+ return {
397
+ boardId: label.idBoard,
398
+ color: label.color,
399
+ id: label.id,
400
+ name: label.name,
401
+ }
402
+ }
403
+
404
+ /**
405
+ * Normalizes one Trello card response.
406
+ *
407
+ * @param card - Provider card resource.
408
+ */
409
+ export function toTrelloCard(
410
+ card: z.output<typeof TRELLO_PROVIDER_CARD_SCHEMA>,
411
+ ): z.output<typeof TRELLO_CARD_SCHEMA> {
412
+ return {
413
+ boardId: card.idBoard,
414
+ closed: card.closed,
415
+ description: card.desc,
416
+ dueAt: OPTIONAL_DATE_SCHEMA.parse(card.due),
417
+ dueComplete: card.dueComplete,
418
+ id: card.id,
419
+ labelIds: card.idLabels,
420
+ labels: card.labels.map(toTrelloLabel),
421
+ lastActivityAt: OPTIONAL_DATE_SCHEMA.parse(card.dateLastActivity),
422
+ listId: card.idList,
423
+ memberIds: card.idMembers,
424
+ name: card.name,
425
+ position: card.pos,
426
+ shortLink: card.shortLink,
427
+ shortUrl: card.shortUrl,
428
+ startAt: OPTIONAL_DATE_SCHEMA.parse(card.start),
429
+ subscribed: card.subscribed,
430
+ url: card.url,
431
+ }
432
+ }
433
+
434
+ /**
435
+ * Normalizes one Trello comment action.
436
+ *
437
+ * @param comment - Provider comment action.
438
+ */
439
+ export function toTrelloComment(
440
+ comment: z.output<typeof TRELLO_PROVIDER_COMMENT_SCHEMA>,
441
+ ): z.output<typeof TRELLO_COMMENT_SCHEMA> {
442
+ return {
443
+ commentedAt: new Date(comment.date),
444
+ creator: comment.memberCreator
445
+ ? toTrelloMember(comment.memberCreator)
446
+ : null,
447
+ id: comment.id,
448
+ text: comment.data.text,
449
+ }
450
+ }
451
+
452
+ /**
453
+ * Normalizes one Trello card attachment.
454
+ *
455
+ * @param attachment - Provider attachment resource.
456
+ */
457
+ export function toTrelloAttachment(
458
+ attachment: z.output<typeof TRELLO_PROVIDER_ATTACHMENT_SCHEMA>,
459
+ ): z.output<typeof TRELLO_ATTACHMENT_SCHEMA> {
460
+ return {
461
+ bytes: attachment.bytes ?? null,
462
+ createdAt: new Date(attachment.date),
463
+ id: attachment.id,
464
+ isUpload: attachment.isUpload,
465
+ mimeType: attachment.mimeType ?? null,
466
+ name: attachment.name,
467
+ position: attachment.pos,
468
+ url: attachment.url,
469
+ }
470
+ }
471
+
472
+ /**
473
+ * Normalizes one Trello checklist item.
474
+ *
475
+ * @param item - Provider checklist-item resource.
476
+ */
477
+ export function toTrelloCheckItem(
478
+ item: z.output<typeof TRELLO_PROVIDER_CHECK_ITEM_SCHEMA>,
479
+ ): z.output<typeof TRELLO_CHECK_ITEM_SCHEMA> {
480
+ return {
481
+ dueAt: OPTIONAL_DATE_SCHEMA.parse(item.due),
482
+ dueReminder: item.dueReminder ?? null,
483
+ id: item.id,
484
+ memberId: item.idMember ?? null,
485
+ name: item.name,
486
+ position: item.pos,
487
+ state: item.state,
488
+ }
489
+ }
490
+
491
+ /**
492
+ * Normalizes one Trello checklist and its items.
493
+ *
494
+ * @param checklist - Provider checklist resource.
495
+ */
496
+ export function toTrelloChecklist(
497
+ checklist: z.output<typeof TRELLO_PROVIDER_CHECKLIST_SCHEMA>,
498
+ ): z.output<typeof TRELLO_CHECKLIST_SCHEMA> {
499
+ return {
500
+ boardId: checklist.idBoard,
501
+ cardId: checklist.idCard,
502
+ checkItems: checklist.checkItems.map(toTrelloCheckItem),
503
+ id: checklist.id,
504
+ name: checklist.name,
505
+ position: checklist.pos,
506
+ }
507
+ }
@@ -0,0 +1,68 @@
1
+ import { airtableTriggerContracts } from "./airtable"
2
+ import { asanaTriggerContracts } from "./asana"
3
+ import { brevoTriggerContracts } from "./brevo"
4
+ import { githubTriggerContracts } from "./github"
5
+ import { gmailTriggerContracts } from "./gmail"
6
+ import { googleCalendarTriggerContracts } from "./google-calendar"
7
+ import { googleFormsTriggerContracts } from "./google-forms"
8
+ import { linearTriggerContracts } from "./linear"
9
+ import { outlookTriggerContracts } from "./outlook"
10
+ import { resendTriggerContracts } from "./resend"
11
+ import { slackTriggerContracts } from "./slack"
12
+ import { teamsTriggerContracts } from "./teams"
13
+ import { trelloTriggerContracts } from "./trello"
14
+ import { vercelTriggerContracts } from "./vercel"
15
+ import { whatsappTriggerContracts } from "./whatsapp"
16
+ import type { z } from "zod"
17
+
18
+ type IntegrationTriggerContracts = typeof airtableTriggerContracts &
19
+ typeof asanaTriggerContracts &
20
+ typeof brevoTriggerContracts &
21
+ typeof githubTriggerContracts &
22
+ typeof gmailTriggerContracts &
23
+ typeof googleCalendarTriggerContracts &
24
+ typeof googleFormsTriggerContracts &
25
+ typeof linearTriggerContracts &
26
+ typeof outlookTriggerContracts &
27
+ typeof resendTriggerContracts &
28
+ typeof slackTriggerContracts &
29
+ typeof teamsTriggerContracts &
30
+ typeof trelloTriggerContracts &
31
+ typeof vercelTriggerContracts &
32
+ typeof whatsappTriggerContracts
33
+
34
+ /** Shared schemas for every integration-backed public trigger. */
35
+ export const triggerContracts: IntegrationTriggerContracts = {
36
+ ...airtableTriggerContracts,
37
+ ...asanaTriggerContracts,
38
+ ...brevoTriggerContracts,
39
+ ...githubTriggerContracts,
40
+ ...gmailTriggerContracts,
41
+ ...googleCalendarTriggerContracts,
42
+ ...googleFormsTriggerContracts,
43
+ ...linearTriggerContracts,
44
+ ...outlookTriggerContracts,
45
+ ...resendTriggerContracts,
46
+ ...slackTriggerContracts,
47
+ ...teamsTriggerContracts,
48
+ ...trelloTriggerContracts,
49
+ ...vercelTriggerContracts,
50
+ ...whatsappTriggerContracts,
51
+ }
52
+
53
+ export type TriggerContractMap = IntegrationTriggerContracts
54
+ export type IntegrationTriggerType = keyof TriggerContractMap
55
+
56
+ /** Canonical authoring configuration for one integration trigger type. */
57
+ export type TriggerConfig<TType extends IntegrationTriggerType> =
58
+ z.input<TriggerContractMap[TType]["configSchema"]> extends Record<
59
+ string,
60
+ never
61
+ >
62
+ ? object
63
+ : z.input<TriggerContractMap[TType]["configSchema"]>
64
+
65
+ /** Normalized event payload emitted by one integration trigger type. */
66
+ export type TriggerEvent<TType extends IntegrationTriggerType> = z.output<
67
+ TriggerContractMap[TType]["eventSchema"]
68
+ >