@automate.ax/integration-contracts 0.116.0 → 0.119.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automate.ax/integration-contracts",
3
- "version": "0.116.0",
3
+ "version": "0.119.1",
4
4
  "description": "Shared integration payload contracts and provider primitives for Automate.ax.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -40,6 +40,7 @@
40
40
  "./slack": "./src/slack/index.ts",
41
41
  "./stripe": "./src/stripe/index.ts",
42
42
  "./teams": "./src/teams/index.ts",
43
+ "./tidycal": "./src/tidycal/index.ts",
43
44
  "./trello": "./src/trello/index.ts",
44
45
  "./triggers": "./src/triggers.ts",
45
46
  "./vercel": "./src/vercel/index.ts",
@@ -52,7 +53,7 @@
52
53
  }
53
54
  },
54
55
  "dependencies": {
55
- "@automate.ax/codec": "0.116.0",
56
+ "@automate.ax/codec": "0.119.1",
56
57
  "@cfworker/json-schema": "^4.1.1",
57
58
  "@googleapis/calendar": "^15.0.0",
58
59
  "@googleapis/forms": "^6.0.1",
@@ -213,6 +214,11 @@
213
214
  "types": "./dist/teams/index.d.ts",
214
215
  "default": "./dist/teams/index.js"
215
216
  },
217
+ "./tidycal": {
218
+ "bun": "./src/tidycal/index.ts",
219
+ "types": "./dist/tidycal/index.d.ts",
220
+ "default": "./dist/tidycal/index.js"
221
+ },
216
222
  "./trello": {
217
223
  "bun": "./src/trello/index.ts",
218
224
  "types": "./dist/trello/index.d.ts",
@@ -1,5 +1,10 @@
1
1
  import * as z from "zod"
2
- import { LABEL_CHANGE_SCHEMA, MESSAGE_SCHEMA } from "./schemas"
2
+ import {
3
+ LABEL_CHANGE_SCHEMA,
4
+ MAILBOX_CHANGE_SCHEMA,
5
+ MESSAGE_DELETED_SCHEMA,
6
+ MESSAGE_SCHEMA,
7
+ } from "./schemas"
3
8
 
4
9
  export * from "./gmail"
5
10
  export * from "./schemas"
@@ -15,6 +20,18 @@ export const gmailTriggerContracts = {
15
20
  configSchema: GMAIL_TRIGGER_CONFIG_SCHEMA,
16
21
  eventSchema: LABEL_CHANGE_SCHEMA,
17
22
  },
23
+ "gmail.mailbox.changed": {
24
+ configSchema: GMAIL_TRIGGER_CONFIG_SCHEMA,
25
+ eventSchema: MAILBOX_CHANGE_SCHEMA,
26
+ },
27
+ "gmail.message.added": {
28
+ configSchema: GMAIL_TRIGGER_CONFIG_SCHEMA,
29
+ eventSchema: MESSAGE_SCHEMA,
30
+ },
31
+ "gmail.message.deleted": {
32
+ configSchema: GMAIL_TRIGGER_CONFIG_SCHEMA,
33
+ eventSchema: MESSAGE_DELETED_SCHEMA,
34
+ },
18
35
  "gmail.message.received": {
19
36
  configSchema: GMAIL_TRIGGER_CONFIG_SCHEMA,
20
37
  eventSchema: MESSAGE_SCHEMA,
@@ -363,6 +363,32 @@ export const LABEL_CHANGE_SCHEMA = z.object({
363
363
  message: MESSAGE_SCHEMA,
364
364
  })
365
365
 
366
+ /** Stable identity retained after Gmail permanently deletes a message. */
367
+ export const MESSAGE_DELETED_SCHEMA = MESSAGE_IDENTIFIER_SCHEMA.extend({
368
+ /** Mailbox history record that reported the deletion. */
369
+ historyId: z.string(),
370
+ })
371
+
372
+ /** Broad normalized Gmail mailbox-history change. */
373
+ export const MAILBOX_CHANGE_SCHEMA = z.discriminatedUnion("changeType", [
374
+ z.object({
375
+ changeType: z.literal("messageAdded"),
376
+ historyId: z.string(),
377
+ message: MESSAGE_SCHEMA,
378
+ }),
379
+ MESSAGE_DELETED_SCHEMA.extend({
380
+ changeType: z.literal("messageDeleted"),
381
+ }),
382
+ LABEL_CHANGE_SCHEMA.extend({
383
+ changeType: z.literal("labelAdded"),
384
+ historyId: z.string(),
385
+ }),
386
+ LABEL_CHANGE_SCHEMA.extend({
387
+ changeType: z.literal("labelRemoved"),
388
+ historyId: z.string(),
389
+ }),
390
+ ])
391
+
366
392
  export const THREAD_IDENTIFIER_SCHEMA = z.object({
367
393
  /** Immutable Gmail thread ID. */
368
394
  threadId: z.string(),
@@ -14,3 +14,21 @@ export const GOOGLE_CALENDAR_EVENT_DELETED_SCHEMA = z.object({
14
14
  /** Immutable provider event ID. */
15
15
  eventId: z.string(),
16
16
  })
17
+
18
+ /** Broad normalized Google Calendar event lifecycle change. */
19
+ export const GOOGLE_CALENDAR_EVENT_CHANGED_SCHEMA = z.discriminatedUnion(
20
+ "changeType",
21
+ [
22
+ z.object({
23
+ changeType: z.literal("created"),
24
+ event: CALENDAR_EVENT_SCHEMA,
25
+ }),
26
+ z.object({
27
+ changeType: z.literal("updated"),
28
+ event: CALENDAR_EVENT_SCHEMA,
29
+ }),
30
+ GOOGLE_CALENDAR_EVENT_DELETED_SCHEMA.extend({
31
+ changeType: z.literal("deleted"),
32
+ }),
33
+ ],
34
+ )
@@ -1,5 +1,8 @@
1
1
  import * as z from "zod"
2
- import { GOOGLE_CALENDAR_EVENT_DELETED_SCHEMA } from "./event-schemas"
2
+ import {
3
+ GOOGLE_CALENDAR_EVENT_CHANGED_SCHEMA,
4
+ GOOGLE_CALENDAR_EVENT_DELETED_SCHEMA,
5
+ } from "./event-schemas"
3
6
  import { CALENDAR_EVENT_SCHEMA } from "./schemas"
4
7
 
5
8
  export * from "./event-schemas"
@@ -12,6 +15,10 @@ export const GOOGLE_CALENDAR_TRIGGER_CONFIG_SCHEMA = z.object({
12
15
  })
13
16
 
14
17
  export const googleCalendarTriggerContracts = {
18
+ "googleCalendar.event.changed": {
19
+ configSchema: GOOGLE_CALENDAR_TRIGGER_CONFIG_SCHEMA,
20
+ eventSchema: GOOGLE_CALENDAR_EVENT_CHANGED_SCHEMA,
21
+ },
15
22
  "googleCalendar.event.created": {
16
23
  configSchema: GOOGLE_CALENDAR_TRIGGER_CONFIG_SCHEMA,
17
24
  eventSchema: CALENDAR_EVENT_SCHEMA,
@@ -5,6 +5,16 @@ export const MILLIONVERIFIER_FILE_ID_SCHEMA = z
5
5
  .transform(String)
6
6
 
7
7
  export const MILLIONVERIFIER_FILE_STATUS_SCHEMA = z.enum([
8
+ "unknown",
9
+ "inProgress",
10
+ "error",
11
+ "finished",
12
+ "canceled",
13
+ "paused",
14
+ "inQueueToStart",
15
+ ])
16
+
17
+ export const MILLIONVERIFIER_FILE_FILTER_STATUS_SCHEMA = z.enum([
8
18
  "inProgress",
9
19
  "error",
10
20
  "finished",
@@ -68,6 +78,7 @@ export const MILLIONVERIFIER_CREDITS_SCHEMA = z.object({
68
78
  })
69
79
 
70
80
  const PROVIDER_FILE_STATUS_SCHEMA = z.enum([
81
+ "unknown",
71
82
  "in_progress",
72
83
  "error",
73
84
  "finished",
@@ -199,7 +210,7 @@ function fromProviderFileStatus(
199
210
  * @param status - Public file status.
200
211
  */
201
212
  export function toMillionVerifierFileStatus(
202
- status: z.output<typeof MILLIONVERIFIER_FILE_STATUS_SCHEMA>,
213
+ status: z.output<typeof MILLIONVERIFIER_FILE_FILTER_STATUS_SCHEMA>,
203
214
  ) {
204
215
  if (status === "inProgress") return "in_progress"
205
216
  if (status === "inQueueToStart") return "in_queue_to_start"
@@ -5,10 +5,55 @@ export * from "./graph"
5
5
  export * from "./schemas"
6
6
 
7
7
  export const OUTLOOK_TRIGGER_CONFIG_SCHEMA = z.object({})
8
+ export const OUTLOOK_MESSAGE_TRIGGER_CONFIG_SCHEMA = z.object({
9
+ folder: z.string().trim().min(1).optional(),
10
+ })
11
+ const OUTLOOK_MESSAGE_CHANGE_EVENT_BASE = {
12
+ folderId: z.string().optional(),
13
+ messageId: z.string(),
14
+ }
15
+ export const OUTLOOK_MESSAGE_CREATED_EVENT_SCHEMA = z.object({
16
+ ...OUTLOOK_MESSAGE_CHANGE_EVENT_BASE,
17
+ changeType: z.literal("created"),
18
+ message: OUTLOOK_MESSAGE_SCHEMA,
19
+ })
20
+ export const OUTLOOK_MESSAGE_UPDATED_EVENT_SCHEMA = z.object({
21
+ ...OUTLOOK_MESSAGE_CHANGE_EVENT_BASE,
22
+ changeType: z.literal("updated"),
23
+ message: OUTLOOK_MESSAGE_SCHEMA,
24
+ })
25
+ export const OUTLOOK_MESSAGE_DELETED_EVENT_SCHEMA = z.object({
26
+ ...OUTLOOK_MESSAGE_CHANGE_EVENT_BASE,
27
+ changeType: z.literal("deleted"),
28
+ })
29
+ export const OUTLOOK_MESSAGE_CHANGE_EVENT_SCHEMA = z.discriminatedUnion(
30
+ "changeType",
31
+ [
32
+ OUTLOOK_MESSAGE_CREATED_EVENT_SCHEMA,
33
+ OUTLOOK_MESSAGE_UPDATED_EVENT_SCHEMA,
34
+ OUTLOOK_MESSAGE_DELETED_EVENT_SCHEMA,
35
+ ],
36
+ )
8
37
 
9
38
  export const outlookTriggerContracts = {
10
39
  "outlook.email.received": {
11
40
  configSchema: OUTLOOK_TRIGGER_CONFIG_SCHEMA,
12
41
  eventSchema: OUTLOOK_MESSAGE_SCHEMA,
13
42
  },
43
+ "outlook.message.changed": {
44
+ configSchema: OUTLOOK_MESSAGE_TRIGGER_CONFIG_SCHEMA,
45
+ eventSchema: OUTLOOK_MESSAGE_CHANGE_EVENT_SCHEMA,
46
+ },
47
+ "outlook.message.created": {
48
+ configSchema: OUTLOOK_MESSAGE_TRIGGER_CONFIG_SCHEMA,
49
+ eventSchema: OUTLOOK_MESSAGE_CREATED_EVENT_SCHEMA,
50
+ },
51
+ "outlook.message.updated": {
52
+ configSchema: OUTLOOK_MESSAGE_TRIGGER_CONFIG_SCHEMA,
53
+ eventSchema: OUTLOOK_MESSAGE_UPDATED_EVENT_SCHEMA,
54
+ },
55
+ "outlook.message.deleted": {
56
+ configSchema: OUTLOOK_MESSAGE_TRIGGER_CONFIG_SCHEMA,
57
+ eventSchema: OUTLOOK_MESSAGE_DELETED_EVENT_SCHEMA,
58
+ },
14
59
  } as const
@@ -1,7 +1,12 @@
1
1
  import * as z from "zod"
2
2
  import {
3
+ TEAMS_CHANNEL_SCHEMA,
3
4
  TEAMS_CHANNEL_MESSAGE_POSTED_EVENT_SCHEMA,
5
+ TEAMS_CHAT_MESSAGE_SCHEMA,
4
6
  TEAMS_CHAT_MESSAGE_POSTED_EVENT_SCHEMA,
7
+ TEAMS_CHAT_SCHEMA,
8
+ TEAMS_MEMBER_SCHEMA,
9
+ TEAMS_TEAM_SCHEMA,
5
10
  } from "./schemas"
6
11
 
7
12
  export * from "./graph"
@@ -14,6 +19,244 @@ export const TEAMS_CHANNEL_TRIGGER_CONFIG_SCHEMA = z.object({
14
19
  export const TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA = z.object({
15
20
  chatId: z.string().min(1),
16
21
  })
22
+ export const TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA = z.object({
23
+ team: z.string().trim().min(1),
24
+ })
25
+ export const TEAMS_TEAM_MEMBER_TRIGGER_CONFIG_SCHEMA =
26
+ TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA
27
+ export const TEAMS_CHANNEL_MEMBER_TRIGGER_CONFIG_SCHEMA =
28
+ TEAMS_CHANNEL_TRIGGER_CONFIG_SCHEMA
29
+ export const TEAMS_CHAT_MEMBER_TRIGGER_CONFIG_SCHEMA =
30
+ TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA
31
+
32
+ /**
33
+ * Builds one hydrated Teams resource-change payload variant.
34
+ *
35
+ * @param changeType - Provider change category.
36
+ * @param resourceType - Public resource discriminator.
37
+ * @param dataSchema - Hydrated resource schema.
38
+ * @param context - Required parent resource identifiers.
39
+ */
40
+ function changeEventSchema<
41
+ TChangeType extends "created" | "updated",
42
+ TResourceType extends string,
43
+ TDataSchema extends z.ZodType,
44
+ TContext extends z.ZodRawShape,
45
+ >(
46
+ changeType: TChangeType,
47
+ resourceType: TResourceType,
48
+ dataSchema: TDataSchema,
49
+ context: TContext,
50
+ ) {
51
+ return z.object({
52
+ ...context,
53
+ changeType: z.literal(changeType),
54
+ data: dataSchema,
55
+ resourceId: z.string(),
56
+ resourceType: z.literal(resourceType),
57
+ })
58
+ }
59
+
60
+ /**
61
+ * Builds one deleted Teams resource tombstone payload.
62
+ *
63
+ * @param resourceType - Public resource discriminator.
64
+ * @param context - Required parent resource identifiers.
65
+ */
66
+ function deletedEventSchema<
67
+ TResourceType extends string,
68
+ TContext extends z.ZodRawShape,
69
+ >(resourceType: TResourceType, context: TContext) {
70
+ return z.object({
71
+ ...context,
72
+ changeType: z.literal("deleted"),
73
+ resourceId: z.string(),
74
+ resourceType: z.literal(resourceType),
75
+ })
76
+ }
77
+
78
+ const TEAM_CONTEXT = { teamId: z.string() }
79
+ const CHANNEL_CONTEXT = { channelId: z.string(), teamId: z.string() }
80
+ const CHAT_CONTEXT = { chatId: z.string() }
81
+ const CHANNEL_CREATED_EVENT_SCHEMA = changeEventSchema(
82
+ "created",
83
+ "channel",
84
+ TEAMS_CHANNEL_SCHEMA,
85
+ TEAM_CONTEXT,
86
+ )
87
+ const CHANNEL_UPDATED_EVENT_SCHEMA = changeEventSchema(
88
+ "updated",
89
+ "channel",
90
+ TEAMS_CHANNEL_SCHEMA,
91
+ TEAM_CONTEXT,
92
+ )
93
+ const CHANNEL_DELETED_EVENT_SCHEMA = deletedEventSchema("channel", TEAM_CONTEXT)
94
+ const TEAM_UPDATED_EVENT_SCHEMA = changeEventSchema(
95
+ "updated",
96
+ "team",
97
+ TEAMS_TEAM_SCHEMA,
98
+ TEAM_CONTEXT,
99
+ )
100
+ const TEAM_DELETED_EVENT_SCHEMA = deletedEventSchema("team", TEAM_CONTEXT)
101
+ const TEAM_MEMBER_CREATED_EVENT_SCHEMA = changeEventSchema(
102
+ "created",
103
+ "teamMember",
104
+ TEAMS_MEMBER_SCHEMA,
105
+ TEAM_CONTEXT,
106
+ )
107
+ const TEAM_MEMBER_UPDATED_EVENT_SCHEMA = changeEventSchema(
108
+ "updated",
109
+ "teamMember",
110
+ TEAMS_MEMBER_SCHEMA,
111
+ TEAM_CONTEXT,
112
+ )
113
+ const TEAM_MEMBER_DELETED_EVENT_SCHEMA = deletedEventSchema(
114
+ "teamMember",
115
+ TEAM_CONTEXT,
116
+ )
117
+ const CHANNEL_MEMBER_CREATED_EVENT_SCHEMA = changeEventSchema(
118
+ "created",
119
+ "channelMember",
120
+ TEAMS_MEMBER_SCHEMA,
121
+ CHANNEL_CONTEXT,
122
+ )
123
+ const CHANNEL_MEMBER_UPDATED_EVENT_SCHEMA = changeEventSchema(
124
+ "updated",
125
+ "channelMember",
126
+ TEAMS_MEMBER_SCHEMA,
127
+ CHANNEL_CONTEXT,
128
+ )
129
+ const CHANNEL_MEMBER_DELETED_EVENT_SCHEMA = deletedEventSchema(
130
+ "channelMember",
131
+ CHANNEL_CONTEXT,
132
+ )
133
+ const CHANNEL_MESSAGE_CREATED_EVENT_SCHEMA = changeEventSchema(
134
+ "created",
135
+ "channelMessage",
136
+ TEAMS_CHAT_MESSAGE_SCHEMA,
137
+ CHANNEL_CONTEXT,
138
+ )
139
+ const CHANNEL_MESSAGE_UPDATED_EVENT_SCHEMA = changeEventSchema(
140
+ "updated",
141
+ "channelMessage",
142
+ TEAMS_CHAT_MESSAGE_SCHEMA,
143
+ CHANNEL_CONTEXT,
144
+ )
145
+ const CHANNEL_MESSAGE_DELETED_EVENT_SCHEMA = deletedEventSchema(
146
+ "channelMessage",
147
+ CHANNEL_CONTEXT,
148
+ )
149
+ const CHAT_UPDATED_EVENT_SCHEMA = changeEventSchema(
150
+ "updated",
151
+ "chat",
152
+ TEAMS_CHAT_SCHEMA,
153
+ CHAT_CONTEXT,
154
+ )
155
+ const CHAT_MEMBER_CREATED_EVENT_SCHEMA = changeEventSchema(
156
+ "created",
157
+ "chatMember",
158
+ TEAMS_MEMBER_SCHEMA,
159
+ CHAT_CONTEXT,
160
+ )
161
+ const CHAT_MEMBER_DELETED_EVENT_SCHEMA = deletedEventSchema(
162
+ "chatMember",
163
+ CHAT_CONTEXT,
164
+ )
165
+ const CHAT_MESSAGE_CREATED_EVENT_SCHEMA = changeEventSchema(
166
+ "created",
167
+ "chatMessage",
168
+ TEAMS_CHAT_MESSAGE_SCHEMA,
169
+ CHAT_CONTEXT,
170
+ )
171
+ const CHAT_MESSAGE_UPDATED_EVENT_SCHEMA = changeEventSchema(
172
+ "updated",
173
+ "chatMessage",
174
+ TEAMS_CHAT_MESSAGE_SCHEMA,
175
+ CHAT_CONTEXT,
176
+ )
177
+ const CHAT_MESSAGE_DELETED_EVENT_SCHEMA = deletedEventSchema(
178
+ "chatMessage",
179
+ CHAT_CONTEXT,
180
+ )
181
+
182
+ export const TEAMS_CHANGE_EVENT_SCHEMAS = {
183
+ "teams.channel.changed": z.discriminatedUnion("changeType", [
184
+ CHANNEL_CREATED_EVENT_SCHEMA,
185
+ CHANNEL_UPDATED_EVENT_SCHEMA,
186
+ CHANNEL_DELETED_EVENT_SCHEMA,
187
+ ]),
188
+ "teams.channel.created": CHANNEL_CREATED_EVENT_SCHEMA,
189
+ "teams.channel.updated": CHANNEL_UPDATED_EVENT_SCHEMA,
190
+ "teams.channel.deleted": CHANNEL_DELETED_EVENT_SCHEMA,
191
+ "teams.team.changed": z.discriminatedUnion("changeType", [
192
+ TEAM_UPDATED_EVENT_SCHEMA,
193
+ TEAM_DELETED_EVENT_SCHEMA,
194
+ ]),
195
+ "teams.team.updated": TEAM_UPDATED_EVENT_SCHEMA,
196
+ "teams.team.deleted": TEAM_DELETED_EVENT_SCHEMA,
197
+ "teams.team.member.changed": z.discriminatedUnion("changeType", [
198
+ TEAM_MEMBER_CREATED_EVENT_SCHEMA,
199
+ TEAM_MEMBER_UPDATED_EVENT_SCHEMA,
200
+ TEAM_MEMBER_DELETED_EVENT_SCHEMA,
201
+ ]),
202
+ "teams.team.member.added": TEAM_MEMBER_CREATED_EVENT_SCHEMA,
203
+ "teams.team.member.updated": TEAM_MEMBER_UPDATED_EVENT_SCHEMA,
204
+ "teams.team.member.removed": TEAM_MEMBER_DELETED_EVENT_SCHEMA,
205
+ "teams.channel.member.changed": z.discriminatedUnion("changeType", [
206
+ CHANNEL_MEMBER_CREATED_EVENT_SCHEMA,
207
+ CHANNEL_MEMBER_UPDATED_EVENT_SCHEMA,
208
+ CHANNEL_MEMBER_DELETED_EVENT_SCHEMA,
209
+ ]),
210
+ "teams.channel.member.added": CHANNEL_MEMBER_CREATED_EVENT_SCHEMA,
211
+ "teams.channel.member.updated": CHANNEL_MEMBER_UPDATED_EVENT_SCHEMA,
212
+ "teams.channel.member.removed": CHANNEL_MEMBER_DELETED_EVENT_SCHEMA,
213
+ "teams.channel.message.changed": z.discriminatedUnion("changeType", [
214
+ CHANNEL_MESSAGE_CREATED_EVENT_SCHEMA,
215
+ CHANNEL_MESSAGE_UPDATED_EVENT_SCHEMA,
216
+ CHANNEL_MESSAGE_DELETED_EVENT_SCHEMA,
217
+ ]),
218
+ "teams.channel.message.updated": CHANNEL_MESSAGE_UPDATED_EVENT_SCHEMA,
219
+ "teams.channel.message.deleted": CHANNEL_MESSAGE_DELETED_EVENT_SCHEMA,
220
+ "teams.chat.changed": CHAT_UPDATED_EVENT_SCHEMA,
221
+ "teams.chat.updated": CHAT_UPDATED_EVENT_SCHEMA,
222
+ "teams.chat.member.changed": z.discriminatedUnion("changeType", [
223
+ CHAT_MEMBER_CREATED_EVENT_SCHEMA,
224
+ CHAT_MEMBER_DELETED_EVENT_SCHEMA,
225
+ ]),
226
+ "teams.chat.member.added": CHAT_MEMBER_CREATED_EVENT_SCHEMA,
227
+ "teams.chat.member.removed": CHAT_MEMBER_DELETED_EVENT_SCHEMA,
228
+ "teams.chat.message.changed": z.discriminatedUnion("changeType", [
229
+ CHAT_MESSAGE_CREATED_EVENT_SCHEMA,
230
+ CHAT_MESSAGE_UPDATED_EVENT_SCHEMA,
231
+ CHAT_MESSAGE_DELETED_EVENT_SCHEMA,
232
+ ]),
233
+ "teams.chat.message.updated": CHAT_MESSAGE_UPDATED_EVENT_SCHEMA,
234
+ "teams.chat.message.deleted": CHAT_MESSAGE_DELETED_EVENT_SCHEMA,
235
+ } as const
236
+
237
+ export const TEAMS_CHANGE_EVENT_SCHEMA = z.union([
238
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.changed"],
239
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.changed"],
240
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.member.changed"],
241
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.member.changed"],
242
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.message.changed"],
243
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.changed"],
244
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.member.changed"],
245
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.message.changed"],
246
+ ])
247
+
248
+ /**
249
+ * Builds one Teams change-event contract.
250
+ *
251
+ * @param configSchema - Resource selection schema for the Graph subscription.
252
+ * @param eventSchema - Exact semantic event payload schema.
253
+ */
254
+ function changeContract<
255
+ TConfigSchema extends z.ZodType,
256
+ TEventSchema extends z.ZodType,
257
+ >(configSchema: TConfigSchema, eventSchema: TEventSchema) {
258
+ return { configSchema, eventSchema }
259
+ }
17
260
 
18
261
  export const teamsTriggerContracts = {
19
262
  "teams.channel.message.posted": {
@@ -24,4 +267,108 @@ export const teamsTriggerContracts = {
24
267
  configSchema: TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA,
25
268
  eventSchema: TEAMS_CHAT_MESSAGE_POSTED_EVENT_SCHEMA,
26
269
  },
270
+ "teams.channel.changed": changeContract(
271
+ TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA,
272
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.changed"],
273
+ ),
274
+ "teams.channel.created": changeContract(
275
+ TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA,
276
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.created"],
277
+ ),
278
+ "teams.channel.updated": changeContract(
279
+ TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA,
280
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.updated"],
281
+ ),
282
+ "teams.channel.deleted": changeContract(
283
+ TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA,
284
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.deleted"],
285
+ ),
286
+ "teams.team.changed": changeContract(
287
+ TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA,
288
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.changed"],
289
+ ),
290
+ "teams.team.updated": changeContract(
291
+ TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA,
292
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.updated"],
293
+ ),
294
+ "teams.team.deleted": changeContract(
295
+ TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA,
296
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.deleted"],
297
+ ),
298
+ "teams.team.member.changed": changeContract(
299
+ TEAMS_TEAM_MEMBER_TRIGGER_CONFIG_SCHEMA,
300
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.member.changed"],
301
+ ),
302
+ "teams.team.member.added": changeContract(
303
+ TEAMS_TEAM_MEMBER_TRIGGER_CONFIG_SCHEMA,
304
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.member.added"],
305
+ ),
306
+ "teams.team.member.updated": changeContract(
307
+ TEAMS_TEAM_MEMBER_TRIGGER_CONFIG_SCHEMA,
308
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.member.updated"],
309
+ ),
310
+ "teams.team.member.removed": changeContract(
311
+ TEAMS_TEAM_MEMBER_TRIGGER_CONFIG_SCHEMA,
312
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.member.removed"],
313
+ ),
314
+ "teams.channel.member.changed": changeContract(
315
+ TEAMS_CHANNEL_MEMBER_TRIGGER_CONFIG_SCHEMA,
316
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.member.changed"],
317
+ ),
318
+ "teams.channel.member.added": changeContract(
319
+ TEAMS_CHANNEL_MEMBER_TRIGGER_CONFIG_SCHEMA,
320
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.member.added"],
321
+ ),
322
+ "teams.channel.member.updated": changeContract(
323
+ TEAMS_CHANNEL_MEMBER_TRIGGER_CONFIG_SCHEMA,
324
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.member.updated"],
325
+ ),
326
+ "teams.channel.member.removed": changeContract(
327
+ TEAMS_CHANNEL_MEMBER_TRIGGER_CONFIG_SCHEMA,
328
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.member.removed"],
329
+ ),
330
+ "teams.channel.message.changed": changeContract(
331
+ TEAMS_CHANNEL_TRIGGER_CONFIG_SCHEMA,
332
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.message.changed"],
333
+ ),
334
+ "teams.channel.message.updated": changeContract(
335
+ TEAMS_CHANNEL_TRIGGER_CONFIG_SCHEMA,
336
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.message.updated"],
337
+ ),
338
+ "teams.channel.message.deleted": changeContract(
339
+ TEAMS_CHANNEL_TRIGGER_CONFIG_SCHEMA,
340
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.message.deleted"],
341
+ ),
342
+ "teams.chat.changed": changeContract(
343
+ TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA,
344
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.changed"],
345
+ ),
346
+ "teams.chat.updated": changeContract(
347
+ TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA,
348
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.updated"],
349
+ ),
350
+ "teams.chat.member.changed": changeContract(
351
+ TEAMS_CHAT_MEMBER_TRIGGER_CONFIG_SCHEMA,
352
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.member.changed"],
353
+ ),
354
+ "teams.chat.member.added": changeContract(
355
+ TEAMS_CHAT_MEMBER_TRIGGER_CONFIG_SCHEMA,
356
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.member.added"],
357
+ ),
358
+ "teams.chat.member.removed": changeContract(
359
+ TEAMS_CHAT_MEMBER_TRIGGER_CONFIG_SCHEMA,
360
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.member.removed"],
361
+ ),
362
+ "teams.chat.message.changed": changeContract(
363
+ TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA,
364
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.message.changed"],
365
+ ),
366
+ "teams.chat.message.updated": changeContract(
367
+ TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA,
368
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.message.updated"],
369
+ ),
370
+ "teams.chat.message.deleted": changeContract(
371
+ TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA,
372
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.message.deleted"],
373
+ ),
27
374
  } as const