@automate.ax/api-contract 0.5.1 → 0.7.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.
@@ -1,13 +1,31 @@
1
1
  import { z } from "zod";
2
2
  /** SDK compatibility version used to select the immutable runtime image. */
3
3
  export declare const AUTOMATION_SDK_VERSION = "1";
4
+ export declare const deploymentTriggerInfoSchema: z.ZodObject<{
5
+ details: z.ZodArray<z.ZodObject<{
6
+ label: z.ZodString;
7
+ value: z.ZodString;
8
+ }, z.core.$strip>>;
9
+ name: z.ZodString;
10
+ type: z.ZodString;
11
+ }, z.core.$strip>;
12
+ export type DeploymentTriggerInfo = z.infer<typeof deploymentTriggerInfoSchema>;
4
13
  export declare const deploymentContract: {
5
- create: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
14
+ cancel: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
15
+ deploymentId: z.ZodString;
6
16
  projectId: z.ZodString;
7
- automations: z.ZodArray<z.ZodObject<{
8
- body: z.ZodCustom<Blob, Blob>;
17
+ }, z.core.$strip>, z.ZodVoid, Record<never, never>, Record<never, never>>;
18
+ create: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
19
+ artifact: z.ZodCustom<Blob, Blob>;
20
+ manifest: z.ZodArray<z.ZodObject<{
21
+ entrypoint: z.ZodString;
9
22
  identityKey: z.ZodString;
10
23
  }, z.core.$strip>>;
24
+ mode: z.ZodEnum<{
25
+ reconcile: "reconcile";
26
+ upsert: "upsert";
27
+ }>;
28
+ projectId: z.ZodString;
11
29
  }, z.core.$strip>, z.ZodObject<{
12
30
  id: z.ZodString;
13
31
  }, z.core.$strip>, Record<never, never>, Record<never, never>>;
@@ -18,6 +36,14 @@ export declare const deploymentContract: {
18
36
  automations: z.ZodArray<z.ZodObject<{
19
37
  description: z.ZodString;
20
38
  identityKey: z.ZodString;
39
+ triggers: z.ZodArray<z.ZodObject<{
40
+ details: z.ZodArray<z.ZodObject<{
41
+ label: z.ZodString;
42
+ value: z.ZodString;
43
+ }, z.core.$strip>>;
44
+ name: z.ZodString;
45
+ type: z.ZodString;
46
+ }, z.core.$strip>>;
21
47
  }, z.core.$strip>>;
22
48
  id: z.ZodString;
23
49
  job: z.ZodNullable<z.ZodObject<{
@@ -34,10 +60,10 @@ export declare const deploymentContract: {
34
60
  planning: "planning";
35
61
  awaiting_authorization: "awaiting_authorization";
36
62
  configuring: "configuring";
37
- active: "active";
38
- inactive: "inactive";
39
- superseded: "superseded";
63
+ publishing: "publishing";
64
+ succeeded: "succeeded";
40
65
  failed: "failed";
66
+ cancelled: "cancelled";
41
67
  }>;
42
68
  }, z.core.$strip>, Record<never, never>, Record<never, never>>;
43
69
  };
@@ -2,17 +2,59 @@ import { oc } from "@orpc/contract";
2
2
  import { z } from "zod";
3
3
  /** SDK compatibility version used to select the immutable runtime image. */
4
4
  export const AUTOMATION_SDK_VERSION = "1";
5
+ export const deploymentTriggerInfoSchema = z.object({
6
+ details: z
7
+ .object({
8
+ label: z.string(),
9
+ value: z.string(),
10
+ })
11
+ .array(),
12
+ name: z.string(),
13
+ type: z.string(),
14
+ });
5
15
  export const deploymentContract = {
6
- create: oc
16
+ cancel: oc
7
17
  .input(z.object({
18
+ deploymentId: z.string(),
8
19
  projectId: z.string(),
9
- automations: z
20
+ }))
21
+ .output(z.void()),
22
+ create: oc
23
+ .input(z.object({
24
+ artifact: z.instanceof(Blob),
25
+ manifest: z
10
26
  .object({
11
- body: z.instanceof(Blob),
27
+ entrypoint: z.string().min(1),
12
28
  identityKey: z.string().min(1),
13
29
  })
14
30
  .array()
15
- .min(1, "Deployment must include at least one automation."),
31
+ .min(1, "Deployment must include at least one automation.")
32
+ .superRefine((manifest, context) => {
33
+ const identityKeys = new Set();
34
+ for (const [index, entry] of manifest.entries()) {
35
+ if (identityKeys.has(entry.identityKey)) {
36
+ context.addIssue({
37
+ code: "custom",
38
+ message: "Automation identity keys must be unique.",
39
+ path: [index, "identityKey"],
40
+ });
41
+ }
42
+ identityKeys.add(entry.identityKey);
43
+ if (entry.entrypoint.includes("\\") ||
44
+ entry.entrypoint.startsWith("/") ||
45
+ entry.entrypoint
46
+ .split("/")
47
+ .some((segment) => segment === "" || segment === "." || segment === "..")) {
48
+ context.addIssue({
49
+ code: "custom",
50
+ message: "Entrypoint must be a safe relative POSIX path.",
51
+ path: [index, "entrypoint"],
52
+ });
53
+ }
54
+ }
55
+ }),
56
+ mode: z.enum(["reconcile", "upsert"]),
57
+ projectId: z.string(),
16
58
  }))
17
59
  .output(z.object({ id: z.string() })),
18
60
  get: oc
@@ -25,6 +67,7 @@ export const deploymentContract = {
25
67
  .object({
26
68
  description: z.string(),
27
69
  identityKey: z.string(),
70
+ triggers: deploymentTriggerInfoSchema.array(),
28
71
  })
29
72
  .array(),
30
73
  id: z.string(),
@@ -44,10 +87,10 @@ export const deploymentContract = {
44
87
  "planning",
45
88
  "awaiting_authorization",
46
89
  "configuring",
47
- "active",
48
- "inactive",
49
- "superseded",
90
+ "publishing",
91
+ "succeeded",
50
92
  "failed",
93
+ "cancelled",
51
94
  ]),
52
95
  })),
53
96
  };
@@ -0,0 +1,4 @@
1
+ import { z } from "zod";
2
+ export declare const googleCalendarEventsContract: {
3
+ googleCalendarPush: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodVoid, z.ZodVoid, Record<never, never>, Record<never, never>>;
4
+ };
@@ -0,0 +1,16 @@
1
+ import { oc } from "@orpc/contract";
2
+ import { z } from "zod";
3
+ export const googleCalendarEventsContract = {
4
+ googleCalendarPush: oc
5
+ .route({
6
+ method: "POST",
7
+ path: "/events/google-calendar",
8
+ operationId: "receiveGoogleCalendarPush",
9
+ summary: "Receive a Google Calendar push notification",
10
+ description: "Receives header-only Google Calendar resource-change notifications.",
11
+ tags: ["Events"],
12
+ successStatus: 204,
13
+ })
14
+ .input(z.void())
15
+ .output(z.void()),
16
+ };
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ export declare const googleFormsEventsContract: {
3
+ googleFormsPush: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4
+ message: z.ZodObject<{
5
+ attributes: z.ZodObject<{
6
+ eventType: z.ZodEnum<{
7
+ SCHEMA: "SCHEMA";
8
+ RESPONSES: "RESPONSES";
9
+ }>;
10
+ formId: z.ZodString;
11
+ watchId: z.ZodString;
12
+ }, z.core.$strip>;
13
+ messageId: z.ZodString;
14
+ publishTime: z.ZodISODateTime;
15
+ }, z.core.$strip>;
16
+ subscription: z.ZodLiteral<"projects/opkitty/subscriptions/automate-ax-google-forms-push">;
17
+ }, z.core.$strip>, z.ZodVoid, Record<never, never>, Record<never, never>>;
18
+ };
@@ -0,0 +1,32 @@
1
+ import { oc } from "@orpc/contract";
2
+ import { z } from "zod";
3
+ export const googleFormsEventsContract = {
4
+ googleFormsPush: oc
5
+ .route({
6
+ method: "POST",
7
+ path: "/events/google-forms",
8
+ operationId: "receiveGoogleFormsPush",
9
+ summary: "Receive a Google Forms push notification",
10
+ description: "Receives and authenticates Google Forms notifications delivered by Google Cloud Pub/Sub.",
11
+ tags: ["Events"],
12
+ successStatus: 204,
13
+ })
14
+ .input(z.object({
15
+ /** Pub/Sub message containing Google Forms notification attributes. */
16
+ message: z.object({
17
+ /** Provider routing fields for the watched form. */
18
+ attributes: z.object({
19
+ eventType: z.enum(["SCHEMA", "RESPONSES"]),
20
+ formId: z.string().min(1),
21
+ watchId: z.string().min(1),
22
+ }),
23
+ /** Provider-assigned identifier used to deduplicate delivery. */
24
+ messageId: z.string().min(1),
25
+ /** RFC 3339 time at which Pub/Sub published the notification. */
26
+ publishTime: z.iso.datetime({ offset: true }),
27
+ }),
28
+ /** Pub/Sub subscription that delivered the message. */
29
+ subscription: z.literal("projects/opkitty/subscriptions/automate-ax-google-forms-push"),
30
+ }))
31
+ .output(z.void()),
32
+ };
@@ -6,4 +6,20 @@ export declare const eventsContract: {
6
6
  }, import("zod/v4/core").$strip>;
7
7
  subscription: import("zod").ZodLiteral<"projects/opkitty/subscriptions/automate-ax-gmail-push">;
8
8
  }, import("zod/v4/core").$strip>, import("zod").ZodVoid, Record<never, never>, Record<never, never>>;
9
+ googleFormsPush: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodObject<{
10
+ message: import("zod").ZodObject<{
11
+ attributes: import("zod").ZodObject<{
12
+ eventType: import("zod").ZodEnum<{
13
+ SCHEMA: "SCHEMA";
14
+ RESPONSES: "RESPONSES";
15
+ }>;
16
+ formId: import("zod").ZodString;
17
+ watchId: import("zod").ZodString;
18
+ }, import("zod/v4/core").$strip>;
19
+ messageId: import("zod").ZodString;
20
+ publishTime: import("zod").ZodISODateTime;
21
+ }, import("zod/v4/core").$strip>;
22
+ subscription: import("zod").ZodLiteral<"projects/opkitty/subscriptions/automate-ax-google-forms-push">;
23
+ }, import("zod/v4/core").$strip>, import("zod").ZodVoid, Record<never, never>, Record<never, never>>;
24
+ googleCalendarPush: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodVoid, import("zod").ZodVoid, Record<never, never>, Record<never, never>>;
9
25
  };
@@ -1,4 +1,8 @@
1
+ import { googleCalendarEventsContract } from "./google-calendar.js";
2
+ import { googleFormsEventsContract } from "./google-forms.js";
1
3
  import { gmailEventsContract } from "./gmail.js";
2
4
  export const eventsContract = {
5
+ ...googleCalendarEventsContract,
6
+ ...googleFormsEventsContract,
3
7
  ...gmailEventsContract,
4
8
  };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { AUTOMATION_SDK_VERSION } from "./deployment.js";
1
+ export { AUTOMATION_SDK_VERSION, deploymentTriggerInfoSchema, type DeploymentTriggerInfo, } from "./deployment.js";
2
2
  export { createdOrganizationApiKeyOutputSchema, organizationApiKeyOutputSchema, } from "./api-key.js";
3
3
  export { integrationServiceManifestSchema, type IntegrationServiceManifest, } from "./authorization.js";
4
4
  export { activeSubscriptionOutputSchema, createdInvitationOutputSchema, organizationDetailsOutputSchema, organizationInvitationOutputSchema, organizationMemberOutputSchema, organizationProjectOutputSchema, organizationRoleSchema, organizationSummaryOutputSchema, publicOrganizationOutputSchema, } from "./org.js";
@@ -146,12 +146,21 @@ export declare const contract: {
146
146
  }, import("zod/v4/core").$strip>, import("zod").ZodVoid, Record<never, never>, Record<never, never>>;
147
147
  };
148
148
  deployment: {
149
- create: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodObject<{
149
+ cancel: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodObject<{
150
+ deploymentId: import("zod").ZodString;
150
151
  projectId: import("zod").ZodString;
151
- automations: import("zod").ZodArray<import("zod").ZodObject<{
152
- body: import("zod").ZodCustom<Blob, Blob>;
152
+ }, import("zod/v4/core").$strip>, import("zod").ZodVoid, Record<never, never>, Record<never, never>>;
153
+ create: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodObject<{
154
+ artifact: import("zod").ZodCustom<Blob, Blob>;
155
+ manifest: import("zod").ZodArray<import("zod").ZodObject<{
156
+ entrypoint: import("zod").ZodString;
153
157
  identityKey: import("zod").ZodString;
154
158
  }, import("zod/v4/core").$strip>>;
159
+ mode: import("zod").ZodEnum<{
160
+ reconcile: "reconcile";
161
+ upsert: "upsert";
162
+ }>;
163
+ projectId: import("zod").ZodString;
155
164
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
156
165
  id: import("zod").ZodString;
157
166
  }, import("zod/v4/core").$strip>, Record<never, never>, Record<never, never>>;
@@ -162,6 +171,14 @@ export declare const contract: {
162
171
  automations: import("zod").ZodArray<import("zod").ZodObject<{
163
172
  description: import("zod").ZodString;
164
173
  identityKey: import("zod").ZodString;
174
+ triggers: import("zod").ZodArray<import("zod").ZodObject<{
175
+ details: import("zod").ZodArray<import("zod").ZodObject<{
176
+ label: import("zod").ZodString;
177
+ value: import("zod").ZodString;
178
+ }, import("zod/v4/core").$strip>>;
179
+ name: import("zod").ZodString;
180
+ type: import("zod").ZodString;
181
+ }, import("zod/v4/core").$strip>>;
165
182
  }, import("zod/v4/core").$strip>>;
166
183
  id: import("zod").ZodString;
167
184
  job: import("zod").ZodNullable<import("zod").ZodObject<{
@@ -178,10 +195,10 @@ export declare const contract: {
178
195
  planning: "planning";
179
196
  awaiting_authorization: "awaiting_authorization";
180
197
  configuring: "configuring";
181
- active: "active";
182
- inactive: "inactive";
183
- superseded: "superseded";
198
+ publishing: "publishing";
199
+ succeeded: "succeeded";
184
200
  failed: "failed";
201
+ cancelled: "cancelled";
185
202
  }>;
186
203
  }, import("zod/v4/core").$strip>, Record<never, never>, Record<never, never>>;
187
204
  };
@@ -193,6 +210,22 @@ export declare const contract: {
193
210
  }, import("zod/v4/core").$strip>;
194
211
  subscription: import("zod").ZodLiteral<"projects/opkitty/subscriptions/automate-ax-gmail-push">;
195
212
  }, import("zod/v4/core").$strip>, import("zod").ZodVoid, Record<never, never>, Record<never, never>>;
213
+ googleFormsPush: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodObject<{
214
+ message: import("zod").ZodObject<{
215
+ attributes: import("zod").ZodObject<{
216
+ eventType: import("zod").ZodEnum<{
217
+ SCHEMA: "SCHEMA";
218
+ RESPONSES: "RESPONSES";
219
+ }>;
220
+ formId: import("zod").ZodString;
221
+ watchId: import("zod").ZodString;
222
+ }, import("zod/v4/core").$strip>;
223
+ messageId: import("zod").ZodString;
224
+ publishTime: import("zod").ZodISODateTime;
225
+ }, import("zod/v4/core").$strip>;
226
+ subscription: import("zod").ZodLiteral<"projects/opkitty/subscriptions/automate-ax-google-forms-push">;
227
+ }, import("zod/v4/core").$strip>, import("zod").ZodVoid, Record<never, never>, Record<never, never>>;
228
+ googleCalendarPush: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodVoid, import("zod").ZodVoid, Record<never, never>, Record<never, never>>;
196
229
  };
197
230
  org: {
198
231
  canInvite: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodObject<{
@@ -388,6 +421,7 @@ export declare const contract: {
388
421
  actionDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
389
422
  description: import("zod").ZodNullable<import("zod").ZodString>;
390
423
  eventDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
424
+ inputHash: import("zod").ZodString;
391
425
  name: import("zod").ZodString;
392
426
  slot: import("zod").ZodNumber;
393
427
  }, import("zod/v4/core").$strip>>>;
@@ -415,7 +449,11 @@ export declare const contract: {
415
449
  nextBatch: import("@orpc/contract").ContractProcedureBuilderWithOutput<import("@orpc/contract").Schema<unknown, unknown>, import("zod").ZodObject<{
416
450
  context: import("zod").ZodObject<{
417
451
  actionOutputs: import("zod").ZodArray<import("zod").ZodObject<{
452
+ actionDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
418
453
  actionInvocationId: import("zod").ZodString;
454
+ eventDependencyIds: import("zod").ZodArray<import("zod").ZodString>;
455
+ inputHash: import("zod").ZodString;
456
+ name: import("zod").ZodString;
419
457
  slot: import("zod").ZodNumber;
420
458
  }, import("zod/v4/core").$strip>>;
421
459
  contextId: import("zod").ZodString;
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import { eventsContract } from "./events/index.js";
6
6
  import { orgContract } from "./org.js";
7
7
  import { projectContract } from "./project.js";
8
8
  import { runtimeContract } from "./runtime.js";
9
- export { AUTOMATION_SDK_VERSION } from "./deployment.js";
9
+ export { AUTOMATION_SDK_VERSION, deploymentTriggerInfoSchema, } from "./deployment.js";
10
10
  export { createdOrganizationApiKeyOutputSchema, organizationApiKeyOutputSchema, } from "./api-key.js";
11
11
  export { integrationServiceManifestSchema, } from "./authorization.js";
12
12
  export { activeSubscriptionOutputSchema, createdInvitationOutputSchema, organizationDetailsOutputSchema, organizationInvitationOutputSchema, organizationMemberOutputSchema, organizationProjectOutputSchema, organizationRoleSchema, organizationSummaryOutputSchema, publicOrganizationOutputSchema, } from "./org.js";
package/dist/runtime.d.ts CHANGED
@@ -5,6 +5,7 @@ export declare const runtimeContract: {
5
5
  actionDependencyIds: z.ZodArray<z.ZodString>;
6
6
  description: z.ZodNullable<z.ZodString>;
7
7
  eventDependencyIds: z.ZodArray<z.ZodString>;
8
+ inputHash: z.ZodString;
8
9
  name: z.ZodString;
9
10
  slot: z.ZodNumber;
10
11
  }, z.core.$strip>>>;
@@ -32,7 +33,11 @@ export declare const runtimeContract: {
32
33
  nextBatch: import("@orpc/contract").ContractProcedureBuilderWithOutput<import("@orpc/contract").Schema<unknown, unknown>, z.ZodObject<{
33
34
  context: z.ZodObject<{
34
35
  actionOutputs: z.ZodArray<z.ZodObject<{
36
+ actionDependencyIds: z.ZodArray<z.ZodString>;
35
37
  actionInvocationId: z.ZodString;
38
+ eventDependencyIds: z.ZodArray<z.ZodString>;
39
+ inputHash: z.ZodString;
40
+ name: z.ZodString;
36
41
  slot: z.ZodNumber;
37
42
  }, z.core.$strip>>;
38
43
  contextId: z.ZodString;
package/dist/runtime.js CHANGED
@@ -9,6 +9,7 @@ export const runtimeContract = {
9
9
  actionDependencyIds: z.string().array(),
10
10
  description: z.string().nullable(),
11
11
  eventDependencyIds: z.string().array(),
12
+ inputHash: z.string(),
12
13
  name: z.string(),
13
14
  slot: z.number().int().nonnegative(),
14
15
  })
@@ -46,7 +47,11 @@ export const runtimeContract = {
46
47
  context: z.object({
47
48
  actionOutputs: z
48
49
  .object({
50
+ actionDependencyIds: z.string().array(),
49
51
  actionInvocationId: z.string(),
52
+ eventDependencyIds: z.string().array(),
53
+ inputHash: z.string(),
54
+ name: z.string(),
50
55
  slot: z.number().int(),
51
56
  })
52
57
  .array(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automate.ax/api-contract",
3
- "version": "0.5.1",
3
+ "version": "0.7.0",
4
4
  "description": "Public oRPC contract for the Automate.ax API.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -23,7 +23,7 @@
23
23
  "cjs": false
24
24
  },
25
25
  "dependencies": {
26
- "@automate.ax/codec": "0.5.1",
26
+ "@automate.ax/codec": "0.7.0",
27
27
  "@orpc/contract": "1.13.14",
28
28
  "zod": "^4.3.6"
29
29
  },