@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,332 @@
1
+ import { z } from "zod";
2
+ export const BREVO_TRANSACTIONAL_EVENT_TYPES = [
3
+ "blocked",
4
+ "click",
5
+ "deferred",
6
+ "delivered",
7
+ "error",
8
+ "hard_bounce",
9
+ "invalid_email",
10
+ "opened",
11
+ "request",
12
+ "soft_bounce",
13
+ "spam",
14
+ "unique_opened",
15
+ "unsubscribed",
16
+ ];
17
+ const BREVO_PROVIDER_EVENT_BASE_SCHEMA = z
18
+ .looseObject({
19
+ /** Custom header supplied with the original email. */
20
+ "X-Mailin-custom": z.string().optional(),
21
+ /** Provider-local formatted date for the event. */
22
+ date: z.string().optional(),
23
+ /** Recipient email address. */
24
+ email: z.string().optional(),
25
+ /** Brevo webhook ID that delivered the event. */
26
+ id: z.number().int().nonnegative(),
27
+ /** Provider message identity. */
28
+ "message-id": z.string().optional(),
29
+ /** Email subject. */
30
+ subject: z.string().optional(),
31
+ /** Tags supplied with the original email. */
32
+ tags: z.string().array().optional(),
33
+ /** Internal template ID used to send the email. */
34
+ template_id: z.number().int().nonnegative().optional(),
35
+ /** Unix timestamp in seconds for the underlying email event. */
36
+ ts: z.number().int().nonnegative().optional(),
37
+ /** Unix timestamp in seconds when Brevo emitted the webhook event. */
38
+ ts_event: z.number().int().nonnegative(),
39
+ })
40
+ .catchall(z.json());
41
+ const BREVO_PROVIDER_DELIVERY_METADATA_SCHEMA = z.object({
42
+ /** Sending IP used for the message. */
43
+ sending_ip: z.string().optional(),
44
+ /** Provider timestamp in milliseconds. */
45
+ ts_epoch: z.number().int().nonnegative().optional(),
46
+ });
47
+ const BREVO_PROVIDER_ENGAGEMENT_METADATA_SCHEMA = z.object({
48
+ /** Brevo contact ID, or zero when the recipient is not a contact. */
49
+ contact_id: z.number().int().nonnegative().optional(),
50
+ /** Device category reported for the interaction. */
51
+ device_used: z.string().optional(),
52
+ /** Brevo log preview URL. */
53
+ mirror_link: z.string().optional(),
54
+ /** Browser or email-client user agent. */
55
+ user_agent: z.string().optional(),
56
+ });
57
+ const BREVO_PROVIDER_SENT_EVENT_SCHEMA = BREVO_PROVIDER_EVENT_BASE_SCHEMA.extend({
58
+ ...BREVO_PROVIDER_DELIVERY_METADATA_SCHEMA.shape,
59
+ ...BREVO_PROVIDER_ENGAGEMENT_METADATA_SCHEMA.pick({
60
+ contact_id: true,
61
+ mirror_link: true,
62
+ }).shape,
63
+ event: z.literal("request"),
64
+ });
65
+ const BREVO_PROVIDER_DELIVERED_EVENT_SCHEMA = BREVO_PROVIDER_EVENT_BASE_SCHEMA.extend({
66
+ ...BREVO_PROVIDER_DELIVERY_METADATA_SCHEMA.shape,
67
+ event: z.literal("delivered"),
68
+ });
69
+ const BREVO_PROVIDER_HARD_BOUNCED_EVENT_SCHEMA = BREVO_PROVIDER_EVENT_BASE_SCHEMA.extend({
70
+ ...BREVO_PROVIDER_DELIVERY_METADATA_SCHEMA.shape,
71
+ event: z.literal("hard_bounce"),
72
+ reason: z.string().optional(),
73
+ });
74
+ const BREVO_PROVIDER_SOFT_BOUNCED_EVENT_SCHEMA = BREVO_PROVIDER_EVENT_BASE_SCHEMA.extend({
75
+ ...BREVO_PROVIDER_DELIVERY_METADATA_SCHEMA.shape,
76
+ event: z.literal("soft_bounce"),
77
+ reason: z.string().optional(),
78
+ });
79
+ const BREVO_PROVIDER_BLOCKED_EVENT_SCHEMA = BREVO_PROVIDER_EVENT_BASE_SCHEMA.extend({
80
+ event: z.literal("blocked"),
81
+ ts_epoch: z.number().int().nonnegative().optional(),
82
+ });
83
+ const BREVO_PROVIDER_DEFERRED_EVENT_SCHEMA = BREVO_PROVIDER_EVENT_BASE_SCHEMA.extend({
84
+ ...BREVO_PROVIDER_DELIVERY_METADATA_SCHEMA.shape,
85
+ event: z.literal("deferred"),
86
+ reason: z.string().optional(),
87
+ });
88
+ const BREVO_PROVIDER_OPENED_EVENT_SCHEMA = BREVO_PROVIDER_EVENT_BASE_SCHEMA.extend({
89
+ ...BREVO_PROVIDER_DELIVERY_METADATA_SCHEMA.shape,
90
+ ...BREVO_PROVIDER_ENGAGEMENT_METADATA_SCHEMA.shape,
91
+ event: z.literal("opened"),
92
+ });
93
+ const BREVO_PROVIDER_UNIQUE_OPENED_EVENT_SCHEMA = BREVO_PROVIDER_EVENT_BASE_SCHEMA.extend({
94
+ ...BREVO_PROVIDER_DELIVERY_METADATA_SCHEMA.shape,
95
+ ...BREVO_PROVIDER_ENGAGEMENT_METADATA_SCHEMA.shape,
96
+ event: z.literal("unique_opened"),
97
+ });
98
+ const BREVO_PROVIDER_CLICKED_EVENT_SCHEMA = BREVO_PROVIDER_EVENT_BASE_SCHEMA.extend({
99
+ ...BREVO_PROVIDER_DELIVERY_METADATA_SCHEMA.shape,
100
+ ...BREVO_PROVIDER_ENGAGEMENT_METADATA_SCHEMA.shape,
101
+ event: z.literal("click"),
102
+ link: z.string().optional(),
103
+ });
104
+ const BREVO_PROVIDER_SPAM_EVENT_SCHEMA = BREVO_PROVIDER_EVENT_BASE_SCHEMA.extend({ event: z.literal("spam") });
105
+ const BREVO_PROVIDER_UNSUBSCRIBED_EVENT_SCHEMA = BREVO_PROVIDER_EVENT_BASE_SCHEMA.extend({
106
+ ...BREVO_PROVIDER_DELIVERY_METADATA_SCHEMA.shape,
107
+ ...BREVO_PROVIDER_ENGAGEMENT_METADATA_SCHEMA.shape,
108
+ event: z.literal("unsubscribed"),
109
+ tag: z.string().optional(),
110
+ });
111
+ const BREVO_PROVIDER_INVALID_EMAIL_EVENT_SCHEMA = BREVO_PROVIDER_EVENT_BASE_SCHEMA.extend({
112
+ event: z.literal("invalid_email"),
113
+ ts_epoch: z.number().int().nonnegative().optional(),
114
+ });
115
+ const BREVO_PROVIDER_ERROR_EVENT_SCHEMA = BREVO_PROVIDER_EVENT_BASE_SCHEMA.extend({
116
+ event: z.literal("error"),
117
+ ts_epoch: z.number().int().nonnegative().optional(),
118
+ });
119
+ const BREVO_PROVIDER_TRANSACTIONAL_EVENT_SCHEMA = z.discriminatedUnion("event", [
120
+ BREVO_PROVIDER_BLOCKED_EVENT_SCHEMA,
121
+ BREVO_PROVIDER_CLICKED_EVENT_SCHEMA,
122
+ BREVO_PROVIDER_DEFERRED_EVENT_SCHEMA,
123
+ BREVO_PROVIDER_DELIVERED_EVENT_SCHEMA,
124
+ BREVO_PROVIDER_ERROR_EVENT_SCHEMA,
125
+ BREVO_PROVIDER_HARD_BOUNCED_EVENT_SCHEMA,
126
+ BREVO_PROVIDER_INVALID_EMAIL_EVENT_SCHEMA,
127
+ BREVO_PROVIDER_OPENED_EVENT_SCHEMA,
128
+ BREVO_PROVIDER_SENT_EVENT_SCHEMA,
129
+ BREVO_PROVIDER_SOFT_BOUNCED_EVENT_SCHEMA,
130
+ BREVO_PROVIDER_SPAM_EVENT_SCHEMA,
131
+ BREVO_PROVIDER_UNIQUE_OPENED_EVENT_SCHEMA,
132
+ BREVO_PROVIDER_UNSUBSCRIBED_EVENT_SCHEMA,
133
+ ]);
134
+ const BREVO_EVENT_BASE_SCHEMA = z.object({
135
+ /** Custom header supplied with the original email. */
136
+ customHeader: z.string().optional(),
137
+ /** Provider-local formatted date for the event. */
138
+ date: z.string().optional(),
139
+ /** Recipient email address. */
140
+ email: z.string().optional(),
141
+ /** Provider message identity. */
142
+ messageId: z.string().optional(),
143
+ /** Unix timestamp in seconds when Brevo emitted the webhook event. */
144
+ occurredAt: z.number().int().nonnegative(),
145
+ /** Email subject. */
146
+ subject: z.string().optional(),
147
+ /** Tags supplied with the original email. */
148
+ tags: z.string().array().optional(),
149
+ /** Internal template ID used to send the email. */
150
+ templateId: z.number().int().nonnegative().optional(),
151
+ /** Unix timestamp in seconds for the underlying email event. */
152
+ timestamp: z.number().int().nonnegative().optional(),
153
+ /** Brevo webhook ID that delivered the event. */
154
+ webhookId: z.number().int().nonnegative(),
155
+ });
156
+ const BREVO_DELIVERY_METADATA_SCHEMA = z.object({
157
+ /** Sending IP used for the message. */
158
+ sendingIp: z.string().optional(),
159
+ /** Provider timestamp in milliseconds. */
160
+ timestampMilliseconds: z.number().int().nonnegative().optional(),
161
+ });
162
+ const BREVO_ENGAGEMENT_METADATA_SCHEMA = z.object({
163
+ /** Brevo contact ID, or zero when the recipient is not a contact. */
164
+ contactId: z.number().int().nonnegative().optional(),
165
+ /** Device category reported for the interaction. */
166
+ deviceUsed: z.string().optional(),
167
+ /** Brevo log preview URL. */
168
+ mirrorLink: z.string().optional(),
169
+ /** Browser or email-client user agent. */
170
+ userAgent: z.string().optional(),
171
+ });
172
+ export const BREVO_EMAIL_SENT_EVENT_SCHEMA = BREVO_EVENT_BASE_SCHEMA.extend({
173
+ ...BREVO_DELIVERY_METADATA_SCHEMA.shape,
174
+ ...BREVO_ENGAGEMENT_METADATA_SCHEMA.pick({
175
+ contactId: true,
176
+ mirrorLink: true,
177
+ }).shape,
178
+ /** Original provider webhook payload. */
179
+ event: BREVO_PROVIDER_SENT_EVENT_SCHEMA,
180
+ /** Brevo transactional event category. */
181
+ type: z.literal("request"),
182
+ });
183
+ export const BREVO_EMAIL_DELIVERED_EVENT_SCHEMA = BREVO_EVENT_BASE_SCHEMA.extend({
184
+ ...BREVO_DELIVERY_METADATA_SCHEMA.shape,
185
+ /** Original provider webhook payload. */
186
+ event: BREVO_PROVIDER_DELIVERED_EVENT_SCHEMA,
187
+ /** Brevo transactional event category. */
188
+ type: z.literal("delivered"),
189
+ });
190
+ export const BREVO_EMAIL_HARD_BOUNCED_EVENT_SCHEMA = BREVO_EVENT_BASE_SCHEMA.extend({
191
+ ...BREVO_DELIVERY_METADATA_SCHEMA.shape,
192
+ /** Original provider webhook payload. */
193
+ event: BREVO_PROVIDER_HARD_BOUNCED_EVENT_SCHEMA,
194
+ /** Provider explanation for the permanent delivery failure. */
195
+ reason: z.string().optional(),
196
+ /** Brevo transactional event category. */
197
+ type: z.literal("hard_bounce"),
198
+ });
199
+ export const BREVO_EMAIL_SOFT_BOUNCED_EVENT_SCHEMA = BREVO_EVENT_BASE_SCHEMA.extend({
200
+ ...BREVO_DELIVERY_METADATA_SCHEMA.shape,
201
+ /** Original provider webhook payload. */
202
+ event: BREVO_PROVIDER_SOFT_BOUNCED_EVENT_SCHEMA,
203
+ /** Provider explanation for the temporary delivery failure. */
204
+ reason: z.string().optional(),
205
+ /** Brevo transactional event category. */
206
+ type: z.literal("soft_bounce"),
207
+ });
208
+ export const BREVO_EMAIL_BLOCKED_EVENT_SCHEMA = BREVO_EVENT_BASE_SCHEMA.extend({
209
+ /** Original provider webhook payload. */
210
+ event: BREVO_PROVIDER_BLOCKED_EVENT_SCHEMA,
211
+ /** Provider timestamp in milliseconds. */
212
+ timestampMilliseconds: z.number().int().nonnegative().optional(),
213
+ /** Brevo transactional event category. */
214
+ type: z.literal("blocked"),
215
+ });
216
+ export const BREVO_EMAIL_DEFERRED_EVENT_SCHEMA = BREVO_EVENT_BASE_SCHEMA.extend({
217
+ ...BREVO_DELIVERY_METADATA_SCHEMA.shape,
218
+ /** Original provider webhook payload. */
219
+ event: BREVO_PROVIDER_DEFERRED_EVENT_SCHEMA,
220
+ /** Provider explanation for the delayed delivery attempt. */
221
+ reason: z.string().optional(),
222
+ /** Brevo transactional event category. */
223
+ type: z.literal("deferred"),
224
+ });
225
+ const BREVO_EMAIL_OPENED_EVENT_MEMBER_SCHEMA = BREVO_EVENT_BASE_SCHEMA.extend({
226
+ ...BREVO_DELIVERY_METADATA_SCHEMA.shape,
227
+ ...BREVO_ENGAGEMENT_METADATA_SCHEMA.shape,
228
+ /** Original provider webhook payload. */
229
+ event: BREVO_PROVIDER_OPENED_EVENT_SCHEMA,
230
+ /** Brevo transactional event category. */
231
+ type: z.literal("opened"),
232
+ });
233
+ const BREVO_EMAIL_UNIQUE_OPENED_EVENT_MEMBER_SCHEMA = BREVO_EVENT_BASE_SCHEMA.extend({
234
+ ...BREVO_DELIVERY_METADATA_SCHEMA.shape,
235
+ ...BREVO_ENGAGEMENT_METADATA_SCHEMA.shape,
236
+ /** Original provider webhook payload. */
237
+ event: BREVO_PROVIDER_UNIQUE_OPENED_EVENT_SCHEMA,
238
+ /** Brevo transactional event category. */
239
+ type: z.literal("unique_opened"),
240
+ });
241
+ export const BREVO_EMAIL_OPENED_EVENT_SCHEMA = z.discriminatedUnion("type", [
242
+ BREVO_EMAIL_OPENED_EVENT_MEMBER_SCHEMA,
243
+ BREVO_EMAIL_UNIQUE_OPENED_EVENT_MEMBER_SCHEMA,
244
+ ]);
245
+ export const BREVO_EMAIL_CLICKED_EVENT_SCHEMA = BREVO_EVENT_BASE_SCHEMA.extend({
246
+ ...BREVO_DELIVERY_METADATA_SCHEMA.shape,
247
+ ...BREVO_ENGAGEMENT_METADATA_SCHEMA.shape,
248
+ /** Original provider webhook payload. */
249
+ event: BREVO_PROVIDER_CLICKED_EVENT_SCHEMA,
250
+ /** URL followed by the recipient. */
251
+ link: z.string().optional(),
252
+ /** Brevo transactional event category. */
253
+ type: z.literal("click"),
254
+ });
255
+ export const BREVO_EMAIL_MARKED_AS_SPAM_EVENT_SCHEMA = BREVO_EVENT_BASE_SCHEMA.extend({
256
+ /** Original provider webhook payload. */
257
+ event: BREVO_PROVIDER_SPAM_EVENT_SCHEMA,
258
+ /** Brevo transactional event category. */
259
+ type: z.literal("spam"),
260
+ });
261
+ export const BREVO_EMAIL_UNSUBSCRIBED_EVENT_SCHEMA = BREVO_EVENT_BASE_SCHEMA.extend({
262
+ ...BREVO_DELIVERY_METADATA_SCHEMA.shape,
263
+ ...BREVO_ENGAGEMENT_METADATA_SCHEMA.shape,
264
+ /** Original provider webhook payload. */
265
+ event: BREVO_PROVIDER_UNSUBSCRIBED_EVENT_SCHEMA,
266
+ /** Provider-native serialized tag value for the unsubscribe. */
267
+ tag: z.string().optional(),
268
+ /** Brevo transactional event category. */
269
+ type: z.literal("unsubscribed"),
270
+ });
271
+ const BREVO_INVALID_EMAIL_EVENT_SCHEMA = BREVO_EVENT_BASE_SCHEMA.extend({
272
+ /** Original provider webhook payload. */
273
+ event: BREVO_PROVIDER_INVALID_EMAIL_EVENT_SCHEMA,
274
+ /** Provider timestamp in milliseconds. */
275
+ timestampMilliseconds: z.number().int().nonnegative().optional(),
276
+ /** Brevo transactional event category. */
277
+ type: z.literal("invalid_email"),
278
+ });
279
+ const BREVO_ERROR_EVENT_SCHEMA = BREVO_EVENT_BASE_SCHEMA.extend({
280
+ /** Original provider webhook payload. */
281
+ event: BREVO_PROVIDER_ERROR_EVENT_SCHEMA,
282
+ /** Provider timestamp in milliseconds. */
283
+ timestampMilliseconds: z.number().int().nonnegative().optional(),
284
+ /** Brevo transactional event category. */
285
+ type: z.literal("error"),
286
+ });
287
+ export const BREVO_TRANSACTIONAL_EVENT_SCHEMA = z.discriminatedUnion("type", [
288
+ BREVO_EMAIL_BLOCKED_EVENT_SCHEMA,
289
+ BREVO_EMAIL_CLICKED_EVENT_SCHEMA,
290
+ BREVO_EMAIL_DEFERRED_EVENT_SCHEMA,
291
+ BREVO_EMAIL_DELIVERED_EVENT_SCHEMA,
292
+ BREVO_ERROR_EVENT_SCHEMA,
293
+ BREVO_EMAIL_HARD_BOUNCED_EVENT_SCHEMA,
294
+ BREVO_INVALID_EMAIL_EVENT_SCHEMA,
295
+ BREVO_EMAIL_OPENED_EVENT_MEMBER_SCHEMA,
296
+ BREVO_EMAIL_SENT_EVENT_SCHEMA,
297
+ BREVO_EMAIL_SOFT_BOUNCED_EVENT_SCHEMA,
298
+ BREVO_EMAIL_MARKED_AS_SPAM_EVENT_SCHEMA,
299
+ BREVO_EMAIL_UNIQUE_OPENED_EVENT_MEMBER_SCHEMA,
300
+ BREVO_EMAIL_UNSUBSCRIBED_EVENT_SCHEMA,
301
+ ]);
302
+ /**
303
+ * Normalizes one provider-native Brevo transactional webhook.
304
+ *
305
+ * @param value - Untrusted provider webhook payload.
306
+ */
307
+ export function normalizeBrevoTransactionalEvent(value) {
308
+ const event = BREVO_PROVIDER_TRANSACTIONAL_EVENT_SCHEMA.parse(value);
309
+ return BREVO_TRANSACTIONAL_EVENT_SCHEMA.parse({
310
+ contactId: event.contact_id,
311
+ customHeader: event["X-Mailin-custom"],
312
+ date: event.date,
313
+ deviceUsed: event.device_used,
314
+ email: event.email,
315
+ event,
316
+ link: event.link,
317
+ messageId: event["message-id"],
318
+ mirrorLink: event.mirror_link,
319
+ occurredAt: event.ts_event,
320
+ reason: event.reason,
321
+ sendingIp: event.sending_ip,
322
+ subject: event.subject,
323
+ tag: event.tag,
324
+ tags: event.tags,
325
+ templateId: event.template_id,
326
+ timestamp: event.ts,
327
+ timestampMilliseconds: event.ts_epoch,
328
+ type: event.event,
329
+ userAgent: event.user_agent,
330
+ webhookId: event.id,
331
+ });
332
+ }
@@ -0,0 +1,37 @@
1
+ import { z } from "zod";
2
+ import { GITHUB_ISSUE_CLOSED_EVENT_SCHEMA, GITHUB_ISSUE_EVENT_SCHEMA, GITHUB_ISSUE_OPENED_EVENT_SCHEMA, GITHUB_ISSUE_REOPENED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_CLOSED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_EVENT_SCHEMA, GITHUB_PULL_REQUEST_MERGED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_OPENED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_READY_FOR_REVIEW_EVENT_SCHEMA, GITHUB_PULL_REQUEST_REVIEW_APPROVED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_REVIEW_CHANGES_REQUESTED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_REVIEW_DISMISSED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_REVIEW_EVENT_SCHEMA, GITHUB_PULL_REQUEST_REVIEW_SUBMITTED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_SYNCHRONIZED_EVENT_SCHEMA, GITHUB_PUSH_EVENT_SCHEMA, GITHUB_RELEASE_EVENT_SCHEMA, GITHUB_RELEASE_PUBLISHED_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_CANCELLED_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_COMPLETED_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_FAILED_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_REQUESTED_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_STARTED_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_SUCCEEDED_EVENT_SCHEMA } from "./schemas.js";
3
+ export * from "./schemas.js";
4
+ export declare const GITHUB_TRIGGER_CONFIG_SCHEMA: z.ZodObject<{}, z.core.$strip>;
5
+ type GitHubTriggerContract<TEventSchema> = {
6
+ readonly configSchema: typeof GITHUB_TRIGGER_CONFIG_SCHEMA;
7
+ readonly eventSchema: TEventSchema;
8
+ };
9
+ /** Named registry shape keeps declaration emit within its serialization limit. */
10
+ type GitHubTriggerContracts = {
11
+ readonly "github.issue.closed": GitHubTriggerContract<typeof GITHUB_ISSUE_CLOSED_EVENT_SCHEMA>;
12
+ readonly "github.issue.event": GitHubTriggerContract<typeof GITHUB_ISSUE_EVENT_SCHEMA>;
13
+ readonly "github.issue.opened": GitHubTriggerContract<typeof GITHUB_ISSUE_OPENED_EVENT_SCHEMA>;
14
+ readonly "github.issue.reopened": GitHubTriggerContract<typeof GITHUB_ISSUE_REOPENED_EVENT_SCHEMA>;
15
+ readonly "github.pull-request.closed": GitHubTriggerContract<typeof GITHUB_PULL_REQUEST_CLOSED_EVENT_SCHEMA>;
16
+ readonly "github.pull-request.event": GitHubTriggerContract<typeof GITHUB_PULL_REQUEST_EVENT_SCHEMA>;
17
+ readonly "github.pull-request.merged": GitHubTriggerContract<typeof GITHUB_PULL_REQUEST_MERGED_EVENT_SCHEMA>;
18
+ readonly "github.pull-request.opened": GitHubTriggerContract<typeof GITHUB_PULL_REQUEST_OPENED_EVENT_SCHEMA>;
19
+ readonly "github.pull-request.ready-for-review": GitHubTriggerContract<typeof GITHUB_PULL_REQUEST_READY_FOR_REVIEW_EVENT_SCHEMA>;
20
+ readonly "github.pull-request-review.approved": GitHubTriggerContract<typeof GITHUB_PULL_REQUEST_REVIEW_APPROVED_EVENT_SCHEMA>;
21
+ readonly "github.pull-request-review.changes-requested": GitHubTriggerContract<typeof GITHUB_PULL_REQUEST_REVIEW_CHANGES_REQUESTED_EVENT_SCHEMA>;
22
+ readonly "github.pull-request-review.dismissed": GitHubTriggerContract<typeof GITHUB_PULL_REQUEST_REVIEW_DISMISSED_EVENT_SCHEMA>;
23
+ readonly "github.pull-request-review.event": GitHubTriggerContract<typeof GITHUB_PULL_REQUEST_REVIEW_EVENT_SCHEMA>;
24
+ readonly "github.pull-request-review.submitted": GitHubTriggerContract<typeof GITHUB_PULL_REQUEST_REVIEW_SUBMITTED_EVENT_SCHEMA>;
25
+ readonly "github.pull-request.synchronized": GitHubTriggerContract<typeof GITHUB_PULL_REQUEST_SYNCHRONIZED_EVENT_SCHEMA>;
26
+ readonly "github.push": GitHubTriggerContract<typeof GITHUB_PUSH_EVENT_SCHEMA>;
27
+ readonly "github.release.event": GitHubTriggerContract<typeof GITHUB_RELEASE_EVENT_SCHEMA>;
28
+ readonly "github.release.published": GitHubTriggerContract<typeof GITHUB_RELEASE_PUBLISHED_EVENT_SCHEMA>;
29
+ readonly "github.workflow-run.cancelled": GitHubTriggerContract<typeof GITHUB_WORKFLOW_RUN_CANCELLED_EVENT_SCHEMA>;
30
+ readonly "github.workflow-run.completed": GitHubTriggerContract<typeof GITHUB_WORKFLOW_RUN_COMPLETED_EVENT_SCHEMA>;
31
+ readonly "github.workflow-run.event": GitHubTriggerContract<typeof GITHUB_WORKFLOW_RUN_EVENT_SCHEMA>;
32
+ readonly "github.workflow-run.failed": GitHubTriggerContract<typeof GITHUB_WORKFLOW_RUN_FAILED_EVENT_SCHEMA>;
33
+ readonly "github.workflow-run.requested": GitHubTriggerContract<typeof GITHUB_WORKFLOW_RUN_REQUESTED_EVENT_SCHEMA>;
34
+ readonly "github.workflow-run.started": GitHubTriggerContract<typeof GITHUB_WORKFLOW_RUN_STARTED_EVENT_SCHEMA>;
35
+ readonly "github.workflow-run.succeeded": GitHubTriggerContract<typeof GITHUB_WORKFLOW_RUN_SUCCEEDED_EVENT_SCHEMA>;
36
+ };
37
+ export declare const githubTriggerContracts: GitHubTriggerContracts;
@@ -0,0 +1,106 @@
1
+ import { z } from "zod";
2
+ import { GITHUB_ISSUE_CLOSED_EVENT_SCHEMA, GITHUB_ISSUE_EVENT_SCHEMA, GITHUB_ISSUE_OPENED_EVENT_SCHEMA, GITHUB_ISSUE_REOPENED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_CLOSED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_EVENT_SCHEMA, GITHUB_PULL_REQUEST_MERGED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_OPENED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_READY_FOR_REVIEW_EVENT_SCHEMA, GITHUB_PULL_REQUEST_REVIEW_APPROVED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_REVIEW_CHANGES_REQUESTED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_REVIEW_DISMISSED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_REVIEW_EVENT_SCHEMA, GITHUB_PULL_REQUEST_REVIEW_SUBMITTED_EVENT_SCHEMA, GITHUB_PULL_REQUEST_SYNCHRONIZED_EVENT_SCHEMA, GITHUB_PUSH_EVENT_SCHEMA, GITHUB_RELEASE_EVENT_SCHEMA, GITHUB_RELEASE_PUBLISHED_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_CANCELLED_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_COMPLETED_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_FAILED_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_REQUESTED_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_STARTED_EVENT_SCHEMA, GITHUB_WORKFLOW_RUN_SUCCEEDED_EVENT_SCHEMA, } from "./schemas.js";
3
+ export * from "./schemas.js";
4
+ export const GITHUB_TRIGGER_CONFIG_SCHEMA = z.object({});
5
+ export const githubTriggerContracts = {
6
+ "github.issue.closed": {
7
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
8
+ eventSchema: GITHUB_ISSUE_CLOSED_EVENT_SCHEMA,
9
+ },
10
+ "github.issue.event": {
11
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
12
+ eventSchema: GITHUB_ISSUE_EVENT_SCHEMA,
13
+ },
14
+ "github.issue.opened": {
15
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
16
+ eventSchema: GITHUB_ISSUE_OPENED_EVENT_SCHEMA,
17
+ },
18
+ "github.issue.reopened": {
19
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
20
+ eventSchema: GITHUB_ISSUE_REOPENED_EVENT_SCHEMA,
21
+ },
22
+ "github.pull-request.closed": {
23
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
24
+ eventSchema: GITHUB_PULL_REQUEST_CLOSED_EVENT_SCHEMA,
25
+ },
26
+ "github.pull-request.event": {
27
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
28
+ eventSchema: GITHUB_PULL_REQUEST_EVENT_SCHEMA,
29
+ },
30
+ "github.pull-request.merged": {
31
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
32
+ eventSchema: GITHUB_PULL_REQUEST_MERGED_EVENT_SCHEMA,
33
+ },
34
+ "github.pull-request.opened": {
35
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
36
+ eventSchema: GITHUB_PULL_REQUEST_OPENED_EVENT_SCHEMA,
37
+ },
38
+ "github.pull-request.ready-for-review": {
39
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
40
+ eventSchema: GITHUB_PULL_REQUEST_READY_FOR_REVIEW_EVENT_SCHEMA,
41
+ },
42
+ "github.pull-request-review.approved": {
43
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
44
+ eventSchema: GITHUB_PULL_REQUEST_REVIEW_APPROVED_EVENT_SCHEMA,
45
+ },
46
+ "github.pull-request-review.changes-requested": {
47
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
48
+ eventSchema: GITHUB_PULL_REQUEST_REVIEW_CHANGES_REQUESTED_EVENT_SCHEMA,
49
+ },
50
+ "github.pull-request-review.dismissed": {
51
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
52
+ eventSchema: GITHUB_PULL_REQUEST_REVIEW_DISMISSED_EVENT_SCHEMA,
53
+ },
54
+ "github.pull-request-review.event": {
55
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
56
+ eventSchema: GITHUB_PULL_REQUEST_REVIEW_EVENT_SCHEMA,
57
+ },
58
+ "github.pull-request-review.submitted": {
59
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
60
+ eventSchema: GITHUB_PULL_REQUEST_REVIEW_SUBMITTED_EVENT_SCHEMA,
61
+ },
62
+ "github.pull-request.synchronized": {
63
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
64
+ eventSchema: GITHUB_PULL_REQUEST_SYNCHRONIZED_EVENT_SCHEMA,
65
+ },
66
+ "github.push": {
67
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
68
+ eventSchema: GITHUB_PUSH_EVENT_SCHEMA,
69
+ },
70
+ "github.release.event": {
71
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
72
+ eventSchema: GITHUB_RELEASE_EVENT_SCHEMA,
73
+ },
74
+ "github.release.published": {
75
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
76
+ eventSchema: GITHUB_RELEASE_PUBLISHED_EVENT_SCHEMA,
77
+ },
78
+ "github.workflow-run.cancelled": {
79
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
80
+ eventSchema: GITHUB_WORKFLOW_RUN_CANCELLED_EVENT_SCHEMA,
81
+ },
82
+ "github.workflow-run.completed": {
83
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
84
+ eventSchema: GITHUB_WORKFLOW_RUN_COMPLETED_EVENT_SCHEMA,
85
+ },
86
+ "github.workflow-run.event": {
87
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
88
+ eventSchema: GITHUB_WORKFLOW_RUN_EVENT_SCHEMA,
89
+ },
90
+ "github.workflow-run.failed": {
91
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
92
+ eventSchema: GITHUB_WORKFLOW_RUN_FAILED_EVENT_SCHEMA,
93
+ },
94
+ "github.workflow-run.requested": {
95
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
96
+ eventSchema: GITHUB_WORKFLOW_RUN_REQUESTED_EVENT_SCHEMA,
97
+ },
98
+ "github.workflow-run.started": {
99
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
100
+ eventSchema: GITHUB_WORKFLOW_RUN_STARTED_EVENT_SCHEMA,
101
+ },
102
+ "github.workflow-run.succeeded": {
103
+ configSchema: GITHUB_TRIGGER_CONFIG_SCHEMA,
104
+ eventSchema: GITHUB_WORKFLOW_RUN_SUCCEEDED_EVENT_SCHEMA,
105
+ },
106
+ };