@automate.ax/integration-contracts 0.118.0 → 0.119.3

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.
@@ -1,5 +1,5 @@
1
1
  import * as z from "zod";
2
- import { TEAMS_CHANNEL_MESSAGE_POSTED_EVENT_SCHEMA, TEAMS_CHAT_MESSAGE_POSTED_EVENT_SCHEMA, } from "./schemas.js";
2
+ import { TEAMS_CHANNEL_SCHEMA, TEAMS_CHANNEL_MESSAGE_POSTED_EVENT_SCHEMA, TEAMS_CHAT_MESSAGE_SCHEMA, TEAMS_CHAT_MESSAGE_POSTED_EVENT_SCHEMA, TEAMS_CHAT_SCHEMA, TEAMS_MEMBER_SCHEMA, TEAMS_TEAM_SCHEMA, } from "./schemas.js";
3
3
  export * from "./graph.js";
4
4
  export * from "./schemas.js";
5
5
  export const TEAMS_CHANNEL_TRIGGER_CONFIG_SCHEMA = z.object({
@@ -9,6 +9,139 @@ export const TEAMS_CHANNEL_TRIGGER_CONFIG_SCHEMA = z.object({
9
9
  export const TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA = z.object({
10
10
  chatId: z.string().min(1),
11
11
  });
12
+ export const TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA = z.object({
13
+ team: z.string().trim().min(1),
14
+ });
15
+ export const TEAMS_TEAM_MEMBER_TRIGGER_CONFIG_SCHEMA = TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA;
16
+ export const TEAMS_CHANNEL_MEMBER_TRIGGER_CONFIG_SCHEMA = TEAMS_CHANNEL_TRIGGER_CONFIG_SCHEMA;
17
+ export const TEAMS_CHAT_MEMBER_TRIGGER_CONFIG_SCHEMA = TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA;
18
+ /**
19
+ * Builds one hydrated Teams resource-change payload variant.
20
+ *
21
+ * @param changeType - Provider change category.
22
+ * @param resourceType - Public resource discriminator.
23
+ * @param dataSchema - Hydrated resource schema.
24
+ * @param context - Required parent resource identifiers.
25
+ */
26
+ function changeEventSchema(changeType, resourceType, dataSchema, context) {
27
+ return z.object({
28
+ ...context,
29
+ changeType: z.literal(changeType),
30
+ data: dataSchema,
31
+ resourceId: z.string(),
32
+ resourceType: z.literal(resourceType),
33
+ });
34
+ }
35
+ /**
36
+ * Builds one deleted Teams resource tombstone payload.
37
+ *
38
+ * @param resourceType - Public resource discriminator.
39
+ * @param context - Required parent resource identifiers.
40
+ */
41
+ function deletedEventSchema(resourceType, context) {
42
+ return z.object({
43
+ ...context,
44
+ changeType: z.literal("deleted"),
45
+ resourceId: z.string(),
46
+ resourceType: z.literal(resourceType),
47
+ });
48
+ }
49
+ const TEAM_CONTEXT = { teamId: z.string() };
50
+ const CHANNEL_CONTEXT = { channelId: z.string(), teamId: z.string() };
51
+ const CHAT_CONTEXT = { chatId: z.string() };
52
+ const CHANNEL_CREATED_EVENT_SCHEMA = changeEventSchema("created", "channel", TEAMS_CHANNEL_SCHEMA, TEAM_CONTEXT);
53
+ const CHANNEL_UPDATED_EVENT_SCHEMA = changeEventSchema("updated", "channel", TEAMS_CHANNEL_SCHEMA, TEAM_CONTEXT);
54
+ const CHANNEL_DELETED_EVENT_SCHEMA = deletedEventSchema("channel", TEAM_CONTEXT);
55
+ const TEAM_UPDATED_EVENT_SCHEMA = changeEventSchema("updated", "team", TEAMS_TEAM_SCHEMA, TEAM_CONTEXT);
56
+ const TEAM_DELETED_EVENT_SCHEMA = deletedEventSchema("team", TEAM_CONTEXT);
57
+ const TEAM_MEMBER_CREATED_EVENT_SCHEMA = changeEventSchema("created", "teamMember", TEAMS_MEMBER_SCHEMA, TEAM_CONTEXT);
58
+ const TEAM_MEMBER_UPDATED_EVENT_SCHEMA = changeEventSchema("updated", "teamMember", TEAMS_MEMBER_SCHEMA, TEAM_CONTEXT);
59
+ const TEAM_MEMBER_DELETED_EVENT_SCHEMA = deletedEventSchema("teamMember", TEAM_CONTEXT);
60
+ const CHANNEL_MEMBER_CREATED_EVENT_SCHEMA = changeEventSchema("created", "channelMember", TEAMS_MEMBER_SCHEMA, CHANNEL_CONTEXT);
61
+ const CHANNEL_MEMBER_UPDATED_EVENT_SCHEMA = changeEventSchema("updated", "channelMember", TEAMS_MEMBER_SCHEMA, CHANNEL_CONTEXT);
62
+ const CHANNEL_MEMBER_DELETED_EVENT_SCHEMA = deletedEventSchema("channelMember", CHANNEL_CONTEXT);
63
+ const CHANNEL_MESSAGE_CREATED_EVENT_SCHEMA = changeEventSchema("created", "channelMessage", TEAMS_CHAT_MESSAGE_SCHEMA, CHANNEL_CONTEXT);
64
+ const CHANNEL_MESSAGE_UPDATED_EVENT_SCHEMA = changeEventSchema("updated", "channelMessage", TEAMS_CHAT_MESSAGE_SCHEMA, CHANNEL_CONTEXT);
65
+ const CHANNEL_MESSAGE_DELETED_EVENT_SCHEMA = deletedEventSchema("channelMessage", CHANNEL_CONTEXT);
66
+ const CHAT_UPDATED_EVENT_SCHEMA = changeEventSchema("updated", "chat", TEAMS_CHAT_SCHEMA, CHAT_CONTEXT);
67
+ const CHAT_MEMBER_CREATED_EVENT_SCHEMA = changeEventSchema("created", "chatMember", TEAMS_MEMBER_SCHEMA, CHAT_CONTEXT);
68
+ const CHAT_MEMBER_DELETED_EVENT_SCHEMA = deletedEventSchema("chatMember", CHAT_CONTEXT);
69
+ const CHAT_MESSAGE_CREATED_EVENT_SCHEMA = changeEventSchema("created", "chatMessage", TEAMS_CHAT_MESSAGE_SCHEMA, CHAT_CONTEXT);
70
+ const CHAT_MESSAGE_UPDATED_EVENT_SCHEMA = changeEventSchema("updated", "chatMessage", TEAMS_CHAT_MESSAGE_SCHEMA, CHAT_CONTEXT);
71
+ const CHAT_MESSAGE_DELETED_EVENT_SCHEMA = deletedEventSchema("chatMessage", CHAT_CONTEXT);
72
+ export const TEAMS_CHANGE_EVENT_SCHEMAS = {
73
+ "teams.channel.changed": z.discriminatedUnion("changeType", [
74
+ CHANNEL_CREATED_EVENT_SCHEMA,
75
+ CHANNEL_UPDATED_EVENT_SCHEMA,
76
+ CHANNEL_DELETED_EVENT_SCHEMA,
77
+ ]),
78
+ "teams.channel.created": CHANNEL_CREATED_EVENT_SCHEMA,
79
+ "teams.channel.updated": CHANNEL_UPDATED_EVENT_SCHEMA,
80
+ "teams.channel.deleted": CHANNEL_DELETED_EVENT_SCHEMA,
81
+ "teams.team.changed": z.discriminatedUnion("changeType", [
82
+ TEAM_UPDATED_EVENT_SCHEMA,
83
+ TEAM_DELETED_EVENT_SCHEMA,
84
+ ]),
85
+ "teams.team.updated": TEAM_UPDATED_EVENT_SCHEMA,
86
+ "teams.team.deleted": TEAM_DELETED_EVENT_SCHEMA,
87
+ "teams.team.member.changed": z.discriminatedUnion("changeType", [
88
+ TEAM_MEMBER_CREATED_EVENT_SCHEMA,
89
+ TEAM_MEMBER_UPDATED_EVENT_SCHEMA,
90
+ TEAM_MEMBER_DELETED_EVENT_SCHEMA,
91
+ ]),
92
+ "teams.team.member.added": TEAM_MEMBER_CREATED_EVENT_SCHEMA,
93
+ "teams.team.member.updated": TEAM_MEMBER_UPDATED_EVENT_SCHEMA,
94
+ "teams.team.member.removed": TEAM_MEMBER_DELETED_EVENT_SCHEMA,
95
+ "teams.channel.member.changed": z.discriminatedUnion("changeType", [
96
+ CHANNEL_MEMBER_CREATED_EVENT_SCHEMA,
97
+ CHANNEL_MEMBER_UPDATED_EVENT_SCHEMA,
98
+ CHANNEL_MEMBER_DELETED_EVENT_SCHEMA,
99
+ ]),
100
+ "teams.channel.member.added": CHANNEL_MEMBER_CREATED_EVENT_SCHEMA,
101
+ "teams.channel.member.updated": CHANNEL_MEMBER_UPDATED_EVENT_SCHEMA,
102
+ "teams.channel.member.removed": CHANNEL_MEMBER_DELETED_EVENT_SCHEMA,
103
+ "teams.channel.message.changed": z.discriminatedUnion("changeType", [
104
+ CHANNEL_MESSAGE_CREATED_EVENT_SCHEMA,
105
+ CHANNEL_MESSAGE_UPDATED_EVENT_SCHEMA,
106
+ CHANNEL_MESSAGE_DELETED_EVENT_SCHEMA,
107
+ ]),
108
+ "teams.channel.message.updated": CHANNEL_MESSAGE_UPDATED_EVENT_SCHEMA,
109
+ "teams.channel.message.deleted": CHANNEL_MESSAGE_DELETED_EVENT_SCHEMA,
110
+ "teams.chat.changed": CHAT_UPDATED_EVENT_SCHEMA,
111
+ "teams.chat.updated": CHAT_UPDATED_EVENT_SCHEMA,
112
+ "teams.chat.member.changed": z.discriminatedUnion("changeType", [
113
+ CHAT_MEMBER_CREATED_EVENT_SCHEMA,
114
+ CHAT_MEMBER_DELETED_EVENT_SCHEMA,
115
+ ]),
116
+ "teams.chat.member.added": CHAT_MEMBER_CREATED_EVENT_SCHEMA,
117
+ "teams.chat.member.removed": CHAT_MEMBER_DELETED_EVENT_SCHEMA,
118
+ "teams.chat.message.changed": z.discriminatedUnion("changeType", [
119
+ CHAT_MESSAGE_CREATED_EVENT_SCHEMA,
120
+ CHAT_MESSAGE_UPDATED_EVENT_SCHEMA,
121
+ CHAT_MESSAGE_DELETED_EVENT_SCHEMA,
122
+ ]),
123
+ "teams.chat.message.updated": CHAT_MESSAGE_UPDATED_EVENT_SCHEMA,
124
+ "teams.chat.message.deleted": CHAT_MESSAGE_DELETED_EVENT_SCHEMA,
125
+ };
126
+ export const TEAMS_CHANGE_EVENT_SCHEMA = z.union([
127
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.changed"],
128
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.changed"],
129
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.member.changed"],
130
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.member.changed"],
131
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.message.changed"],
132
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.changed"],
133
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.member.changed"],
134
+ TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.message.changed"],
135
+ ]);
136
+ /**
137
+ * Builds one Teams change-event contract.
138
+ *
139
+ * @param configSchema - Resource selection schema for the Graph subscription.
140
+ * @param eventSchema - Exact semantic event payload schema.
141
+ */
142
+ function changeContract(configSchema, eventSchema) {
143
+ return { configSchema, eventSchema };
144
+ }
12
145
  export const teamsTriggerContracts = {
13
146
  "teams.channel.message.posted": {
14
147
  configSchema: TEAMS_CHANNEL_TRIGGER_CONFIG_SCHEMA,
@@ -18,4 +151,30 @@ export const teamsTriggerContracts = {
18
151
  configSchema: TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA,
19
152
  eventSchema: TEAMS_CHAT_MESSAGE_POSTED_EVENT_SCHEMA,
20
153
  },
154
+ "teams.channel.changed": changeContract(TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.changed"]),
155
+ "teams.channel.created": changeContract(TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.created"]),
156
+ "teams.channel.updated": changeContract(TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.updated"]),
157
+ "teams.channel.deleted": changeContract(TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.deleted"]),
158
+ "teams.team.changed": changeContract(TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.changed"]),
159
+ "teams.team.updated": changeContract(TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.updated"]),
160
+ "teams.team.deleted": changeContract(TEAMS_TEAM_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.deleted"]),
161
+ "teams.team.member.changed": changeContract(TEAMS_TEAM_MEMBER_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.member.changed"]),
162
+ "teams.team.member.added": changeContract(TEAMS_TEAM_MEMBER_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.member.added"]),
163
+ "teams.team.member.updated": changeContract(TEAMS_TEAM_MEMBER_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.member.updated"]),
164
+ "teams.team.member.removed": changeContract(TEAMS_TEAM_MEMBER_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.team.member.removed"]),
165
+ "teams.channel.member.changed": changeContract(TEAMS_CHANNEL_MEMBER_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.member.changed"]),
166
+ "teams.channel.member.added": changeContract(TEAMS_CHANNEL_MEMBER_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.member.added"]),
167
+ "teams.channel.member.updated": changeContract(TEAMS_CHANNEL_MEMBER_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.member.updated"]),
168
+ "teams.channel.member.removed": changeContract(TEAMS_CHANNEL_MEMBER_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.member.removed"]),
169
+ "teams.channel.message.changed": changeContract(TEAMS_CHANNEL_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.message.changed"]),
170
+ "teams.channel.message.updated": changeContract(TEAMS_CHANNEL_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.message.updated"]),
171
+ "teams.channel.message.deleted": changeContract(TEAMS_CHANNEL_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.channel.message.deleted"]),
172
+ "teams.chat.changed": changeContract(TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.changed"]),
173
+ "teams.chat.updated": changeContract(TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.updated"]),
174
+ "teams.chat.member.changed": changeContract(TEAMS_CHAT_MEMBER_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.member.changed"]),
175
+ "teams.chat.member.added": changeContract(TEAMS_CHAT_MEMBER_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.member.added"]),
176
+ "teams.chat.member.removed": changeContract(TEAMS_CHAT_MEMBER_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.member.removed"]),
177
+ "teams.chat.message.changed": changeContract(TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.message.changed"]),
178
+ "teams.chat.message.updated": changeContract(TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.message.updated"]),
179
+ "teams.chat.message.deleted": changeContract(TEAMS_CHAT_TRIGGER_CONFIG_SCHEMA, TEAMS_CHANGE_EVENT_SCHEMAS["teams.chat.message.deleted"]),
21
180
  };
@@ -92,12 +92,12 @@ export declare const TIDYCAL_BOOKING_TYPE_SCHEMA: z.ZodObject<{
92
92
  stripe: "stripe";
93
93
  }>>;
94
94
  paymentPlatformId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
95
- price: z.ZodNumber;
95
+ price: z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>, z.ZodNumber>;
96
96
  private: z.ZodBoolean;
97
97
  redirectUrl: z.ZodNullable<z.ZodURL>;
98
98
  title: z.ZodString;
99
99
  updatedAt: z.ZodISODateTime;
100
- url: z.ZodURL;
100
+ url: z.ZodOptional<z.ZodURL>;
101
101
  urlSlug: z.ZodString;
102
102
  userId: z.ZodNumber;
103
103
  }, z.core.$strip>;
@@ -1,6 +1,15 @@
1
1
  import * as z from "zod";
2
2
  const DATE_TIME_SCHEMA = z.iso.datetime({ offset: true });
3
3
  const ID_SCHEMA = z.number().int().positive();
4
+ const TIDYCAL_PRICE_SCHEMA = z
5
+ .union([
6
+ z.number(),
7
+ z
8
+ .string()
9
+ .regex(/^\d+(?:\.\d+)?$/)
10
+ .transform(Number),
11
+ ])
12
+ .pipe(z.number().nonnegative());
4
13
  export const TIDYCAL_ACCOUNT_SCHEMA = z.object({
5
14
  currencySymbol: z.string(),
6
15
  email: z.email(),
@@ -66,12 +75,12 @@ export const TIDYCAL_BOOKING_TYPE_SCHEMA = z.object({
66
75
  paddingMinutes: z.number().int().min(0),
67
76
  paymentPlatform: z.enum(["paypal", "stripe", "tidycal"]).nullable(),
68
77
  paymentPlatformId: z.string().nullable().optional(),
69
- price: z.number().nonnegative(),
78
+ price: TIDYCAL_PRICE_SCHEMA,
70
79
  private: z.boolean(),
71
80
  redirectUrl: z.url().nullable(),
72
81
  title: z.string(),
73
82
  updatedAt: DATE_TIME_SCHEMA,
74
- url: z.url(),
83
+ url: z.url().optional(),
75
84
  urlSlug: z.string(),
76
85
  userId: ID_SCHEMA,
77
86
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automate.ax/integration-contracts",
3
- "version": "0.118.0",
3
+ "version": "0.119.3",
4
4
  "description": "Shared integration payload contracts and provider primitives for Automate.ax.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -53,7 +53,7 @@
53
53
  }
54
54
  },
55
55
  "dependencies": {
56
- "@automate.ax/codec": "0.118.0",
56
+ "@automate.ax/codec": "0.119.3",
57
57
  "@cfworker/json-schema": "^4.1.1",
58
58
  "@googleapis/calendar": "^15.0.0",
59
59
  "@googleapis/forms": "^6.0.1",
@@ -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