@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,312 @@
1
+ import { z } from "zod";
2
+ const OPTIONAL_DATE_SCHEMA = z
3
+ .union([
4
+ z.date(),
5
+ z.iso.datetime({ offset: true }).transform((value) => new Date(value)),
6
+ ])
7
+ .nullish()
8
+ .transform((value) => value ?? undefined);
9
+ const OPTIONAL_STRING_SCHEMA = z
10
+ .string()
11
+ .nullish()
12
+ .transform((value) => value ?? undefined);
13
+ export const OUTLOOK_BODY_TYPE_SCHEMA = z.enum(["text", "html"]);
14
+ export const OUTLOOK_IMPORTANCE_SCHEMA = z.enum(["low", "normal", "high"]);
15
+ export const OUTLOOK_FLAG_STATUS_SCHEMA = z.enum([
16
+ "notFlagged",
17
+ "complete",
18
+ "flagged",
19
+ ]);
20
+ export const OUTLOOK_EMAIL_ADDRESS_SCHEMA = z.object({
21
+ /** SMTP email address. */
22
+ address: z.string(),
23
+ /** Display name supplied by Microsoft Graph. */
24
+ name: OPTIONAL_STRING_SCHEMA,
25
+ });
26
+ export const OUTLOOK_RECIPIENT_SCHEMA = z.union([
27
+ z.email(),
28
+ OUTLOOK_EMAIL_ADDRESS_SCHEMA,
29
+ ]);
30
+ export const OUTLOOK_RECIPIENTS_SCHEMA = z.union([
31
+ OUTLOOK_RECIPIENT_SCHEMA,
32
+ OUTLOOK_RECIPIENT_SCHEMA.array().min(1),
33
+ ]);
34
+ export const OUTLOOK_BODY_SCHEMA = z.object({
35
+ /** Body content as returned by Graph. */
36
+ content: z.string(),
37
+ /** Lowercase body media type. */
38
+ contentType: z
39
+ .enum(["text", "html"])
40
+ .or(z.enum(["Text", "HTML"]))
41
+ .transform((value) => value === "Text" ? "text" : value === "HTML" ? "html" : value),
42
+ });
43
+ const OUTLOOK_FOLLOWUP_FLAG_SCHEMA = z.object({
44
+ /** Date and time the flag was completed. */
45
+ completedAt: z
46
+ .object({ dateTime: z.string(), timeZone: z.string() })
47
+ .nullish()
48
+ .transform((value) => value ?? undefined),
49
+ /** Due date and its Outlook timezone. */
50
+ dueAt: z
51
+ .object({ dateTime: z.string(), timeZone: z.string() })
52
+ .nullish()
53
+ .transform((value) => value ?? undefined),
54
+ /** Current follow-up state. */
55
+ status: OUTLOOK_FLAG_STATUS_SCHEMA,
56
+ });
57
+ export const OUTLOOK_MESSAGE_SCHEMA = z.object({
58
+ /** Outlook categories assigned to the message. */
59
+ categories: z.string().array().prefault([]),
60
+ /** Opaque conversation identifier shared by related messages. */
61
+ conversationId: OPTIONAL_STRING_SCHEMA,
62
+ /** Time the message was created in the mailbox. */
63
+ createdAt: OPTIONAL_DATE_SCHEMA,
64
+ /** Follow-up flag state and dates. */
65
+ flag: OUTLOOK_FOLLOWUP_FLAG_SCHEMA.optional(),
66
+ /** Sender shown in the From header. */
67
+ from: OUTLOOK_EMAIL_ADDRESS_SCHEMA.nullish().transform((value) => value ?? undefined),
68
+ /** Whether the message contains one or more attachments. */
69
+ hasAttachments: z.boolean().prefault(false),
70
+ /** Provider message identifier. */
71
+ messageId: z.string(),
72
+ /** RFC 5322 Message-ID. */
73
+ internetMessageId: OPTIONAL_STRING_SCHEMA,
74
+ /** Provider-defined message importance. */
75
+ importance: OUTLOOK_IMPORTANCE_SCHEMA.prefault("normal"),
76
+ /** Focused Inbox classification. */
77
+ inferenceClassification: z
78
+ .enum(["focused", "other"])
79
+ .nullish()
80
+ .transform((value) => value ?? undefined),
81
+ /** Whether this message is an unsent draft. */
82
+ isDraft: z.boolean().prefault(false),
83
+ /** Whether the message has been read. */
84
+ isRead: z.boolean().prefault(false),
85
+ /** Time the message was last modified. */
86
+ modifiedAt: OPTIONAL_DATE_SCHEMA,
87
+ /** Opaque containing folder identifier. */
88
+ parentFolderId: OPTIONAL_STRING_SCHEMA,
89
+ /** Short body preview generated by Outlook. */
90
+ preview: OPTIONAL_STRING_SCHEMA,
91
+ /** Time the message arrived in the mailbox. */
92
+ receivedAt: OPTIONAL_DATE_SCHEMA,
93
+ /** Addresses preferred for replies. */
94
+ replyTo: OUTLOOK_EMAIL_ADDRESS_SCHEMA.array().prefault([]),
95
+ /** Account that submitted the message. */
96
+ sender: OUTLOOK_EMAIL_ADDRESS_SCHEMA.nullish().transform((value) => value ?? undefined),
97
+ /** Time the message was sent. */
98
+ sentAt: OPTIONAL_DATE_SCHEMA,
99
+ /** Subject line. */
100
+ subject: z
101
+ .string()
102
+ .nullish()
103
+ .transform((value) => value ?? ""),
104
+ /** Primary recipients. */
105
+ to: OUTLOOK_EMAIL_ADDRESS_SCHEMA.array().prefault([]),
106
+ /** Carbon-copy recipients. */
107
+ cc: OUTLOOK_EMAIL_ADDRESS_SCHEMA.array().prefault([]),
108
+ /** Blind-copy recipients. */
109
+ bcc: OUTLOOK_EMAIL_ADDRESS_SCHEMA.array().prefault([]),
110
+ /** Outlook web URL for the message. */
111
+ webLink: OPTIONAL_STRING_SCHEMA,
112
+ /** Message body, when requested from Graph. */
113
+ body: OUTLOOK_BODY_SCHEMA.nullish().transform((value) => value ?? undefined),
114
+ /** Graph concurrency token. */
115
+ etag: z.string().optional(),
116
+ });
117
+ export const GRAPH_MESSAGE_SCHEMA = z
118
+ .looseObject({
119
+ "@odata.etag": z.string().optional(),
120
+ bccRecipients: z
121
+ .object({ emailAddress: OUTLOOK_EMAIL_ADDRESS_SCHEMA })
122
+ .array()
123
+ .optional(),
124
+ body: OUTLOOK_BODY_SCHEMA.nullish(),
125
+ bodyPreview: z.string().nullish(),
126
+ categories: z.string().array().optional(),
127
+ ccRecipients: z
128
+ .object({ emailAddress: OUTLOOK_EMAIL_ADDRESS_SCHEMA })
129
+ .array()
130
+ .optional(),
131
+ conversationId: z.string().nullish(),
132
+ createdDateTime: z.string().nullish(),
133
+ flag: z
134
+ .object({
135
+ completedDateTime: z
136
+ .object({ dateTime: z.string(), timeZone: z.string() })
137
+ .nullish(),
138
+ dueDateTime: z
139
+ .object({ dateTime: z.string(), timeZone: z.string() })
140
+ .nullish(),
141
+ flagStatus: OUTLOOK_FLAG_STATUS_SCHEMA,
142
+ })
143
+ .optional(),
144
+ from: z.object({ emailAddress: OUTLOOK_EMAIL_ADDRESS_SCHEMA }).nullish(),
145
+ hasAttachments: z.boolean().optional(),
146
+ id: z.string(),
147
+ importance: OUTLOOK_IMPORTANCE_SCHEMA.optional(),
148
+ inferenceClassification: z.enum(["focused", "other"]).nullish(),
149
+ internetMessageId: z.string().nullish(),
150
+ isDraft: z.boolean().optional(),
151
+ isRead: z.boolean().optional(),
152
+ lastModifiedDateTime: z.string().nullish(),
153
+ parentFolderId: z.string().nullish(),
154
+ receivedDateTime: z.string().nullish(),
155
+ replyTo: z
156
+ .object({ emailAddress: OUTLOOK_EMAIL_ADDRESS_SCHEMA })
157
+ .array()
158
+ .optional(),
159
+ sender: z.object({ emailAddress: OUTLOOK_EMAIL_ADDRESS_SCHEMA }).nullish(),
160
+ sentDateTime: z.string().nullish(),
161
+ subject: z.string().nullish(),
162
+ toRecipients: z
163
+ .object({ emailAddress: OUTLOOK_EMAIL_ADDRESS_SCHEMA })
164
+ .array()
165
+ .optional(),
166
+ webLink: z.string().nullish(),
167
+ })
168
+ .transform((message) => OUTLOOK_MESSAGE_SCHEMA.parse({
169
+ bcc: message.bccRecipients?.map(({ emailAddress }) => emailAddress),
170
+ body: message.body,
171
+ categories: message.categories,
172
+ cc: message.ccRecipients?.map(({ emailAddress }) => emailAddress),
173
+ conversationId: message.conversationId,
174
+ createdAt: message.createdDateTime,
175
+ etag: message["@odata.etag"],
176
+ flag: message.flag
177
+ ? {
178
+ completedAt: message.flag.completedDateTime,
179
+ dueAt: message.flag.dueDateTime,
180
+ status: message.flag.flagStatus,
181
+ }
182
+ : undefined,
183
+ from: message.from?.emailAddress,
184
+ hasAttachments: message.hasAttachments,
185
+ importance: message.importance,
186
+ inferenceClassification: message.inferenceClassification,
187
+ internetMessageId: message.internetMessageId,
188
+ isDraft: message.isDraft,
189
+ isRead: message.isRead,
190
+ messageId: message.id,
191
+ modifiedAt: message.lastModifiedDateTime,
192
+ parentFolderId: message.parentFolderId,
193
+ preview: message.bodyPreview,
194
+ receivedAt: message.receivedDateTime,
195
+ replyTo: message.replyTo?.map(({ emailAddress }) => emailAddress),
196
+ sender: message.sender?.emailAddress,
197
+ sentAt: message.sentDateTime,
198
+ subject: message.subject,
199
+ to: message.toRecipients?.map(({ emailAddress }) => emailAddress),
200
+ webLink: message.webLink,
201
+ }));
202
+ /**
203
+ * Normalizes an untrusted Microsoft Graph message payload.
204
+ *
205
+ * @param payload - Provider message payload.
206
+ */
207
+ export function normalizeOutlookMessage(payload) {
208
+ return GRAPH_MESSAGE_SCHEMA.parse(payload);
209
+ }
210
+ export const OUTLOOK_MAIL_FOLDER_SCHEMA = z.object({
211
+ /** Number of child folders directly beneath this folder. */
212
+ childFolderCount: z.number().int().prefault(0),
213
+ /** Human-readable folder name. */
214
+ displayName: z.string(),
215
+ /** Whether the folder is hidden in Outlook. */
216
+ isHidden: z.boolean().prefault(false),
217
+ /** Opaque provider folder identifier. */
218
+ folderId: z.string(),
219
+ /** Total messages directly contained in the folder. */
220
+ totalItemCount: z.number().int().prefault(0),
221
+ /** Unread messages directly contained in the folder. */
222
+ unreadItemCount: z.number().int().prefault(0),
223
+ });
224
+ export const GRAPH_MAIL_FOLDER_SCHEMA = z
225
+ .looseObject({
226
+ childFolderCount: z.number().int().optional(),
227
+ displayName: z.string(),
228
+ id: z.string(),
229
+ isHidden: z.boolean().optional(),
230
+ totalItemCount: z.number().int().optional(),
231
+ unreadItemCount: z.number().int().optional(),
232
+ })
233
+ .transform((folder) => OUTLOOK_MAIL_FOLDER_SCHEMA.parse({
234
+ ...folder,
235
+ folderId: folder.id,
236
+ }));
237
+ export const OUTLOOK_PROFILE_SCHEMA = z.object({
238
+ /** User's primary email address, when available. */
239
+ email: OPTIONAL_STRING_SCHEMA,
240
+ /** Display name configured in Microsoft 365. */
241
+ displayName: z.string(),
242
+ /** Microsoft Graph user identifier. */
243
+ userId: z.string(),
244
+ /** User principal name used to sign in. */
245
+ userPrincipalName: z.string(),
246
+ });
247
+ export const GRAPH_PROFILE_SCHEMA = z
248
+ .looseObject({
249
+ displayName: z.string(),
250
+ id: z.string(),
251
+ mail: z.string().nullish(),
252
+ userPrincipalName: z.string(),
253
+ })
254
+ .transform((profile) => OUTLOOK_PROFILE_SCHEMA.parse({
255
+ displayName: profile.displayName,
256
+ email: profile.mail,
257
+ userId: profile.id,
258
+ userPrincipalName: profile.userPrincipalName,
259
+ }));
260
+ export const OUTLOOK_ATTACHMENT_SCHEMA = z.object({
261
+ /** Content-ID used by inline HTML content. */
262
+ contentId: OPTIONAL_STRING_SCHEMA,
263
+ /** Content location supplied by the sender. */
264
+ contentLocation: OPTIONAL_STRING_SCHEMA,
265
+ /** MIME media type. */
266
+ contentType: OPTIONAL_STRING_SCHEMA,
267
+ /** Downloaded file contents, when included by Graph. */
268
+ file: z.instanceof(File).optional(),
269
+ /** Opaque provider attachment identifier. */
270
+ attachmentId: z.string(),
271
+ /** Whether the attachment is displayed inline. */
272
+ isInline: z.boolean().prefault(false),
273
+ /** Attachment filename. */
274
+ name: z.string(),
275
+ /** Attachment size in bytes. */
276
+ size: z.number().int().nonnegative().prefault(0),
277
+ /** Graph attachment resource kind. */
278
+ type: z.enum(["file", "item", "reference", "unknown"]),
279
+ });
280
+ export const GRAPH_ATTACHMENT_SCHEMA = z
281
+ .looseObject({
282
+ "@odata.type": z.string().optional(),
283
+ contentBytes: z.string().optional(),
284
+ contentId: z.string().nullish(),
285
+ contentLocation: z.string().nullish(),
286
+ contentType: z.string().nullish(),
287
+ id: z.string(),
288
+ isInline: z.boolean().optional(),
289
+ name: z.string(),
290
+ size: z.number().int().optional(),
291
+ })
292
+ .transform((attachment) => {
293
+ return OUTLOOK_ATTACHMENT_SCHEMA.parse({
294
+ attachmentId: attachment.id,
295
+ contentId: attachment.contentId,
296
+ contentLocation: attachment.contentLocation,
297
+ contentType: attachment.contentType,
298
+ file: attachment.contentBytes
299
+ ? new File([Buffer.from(attachment.contentBytes, "base64")], attachment.name, { type: attachment.contentType ?? "" })
300
+ : undefined,
301
+ isInline: attachment.isInline,
302
+ name: attachment.name,
303
+ size: attachment.size,
304
+ type: attachment["@odata.type"]?.includes("fileAttachment")
305
+ ? "file"
306
+ : attachment["@odata.type"]?.includes("itemAttachment")
307
+ ? "item"
308
+ : attachment["@odata.type"]?.includes("referenceAttachment")
309
+ ? "reference"
310
+ : "unknown",
311
+ });
312
+ });