@zapier/zapier-sdk 0.42.1 → 0.44.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 (45) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +75 -73
  3. package/dist/api/client.d.ts.map +1 -1
  4. package/dist/api/client.js +309 -35
  5. package/dist/api/types.d.ts +29 -0
  6. package/dist/api/types.d.ts.map +1 -1
  7. package/dist/constants.d.ts +25 -0
  8. package/dist/constants.d.ts.map +1 -1
  9. package/dist/constants.js +32 -0
  10. package/dist/index.cjs +441 -44
  11. package/dist/index.d.mts +82 -4
  12. package/dist/index.mjs +437 -45
  13. package/dist/plugins/api/index.d.ts.map +1 -1
  14. package/dist/plugins/api/index.js +5 -1
  15. package/dist/plugins/createClientCredentials/index.d.ts.map +1 -1
  16. package/dist/plugins/createClientCredentials/index.js +1 -0
  17. package/dist/plugins/createClientCredentials/schemas.d.ts +1 -0
  18. package/dist/plugins/createClientCredentials/schemas.d.ts.map +1 -1
  19. package/dist/plugins/createClientCredentials/schemas.js +6 -0
  20. package/dist/plugins/fetch/index.d.ts.map +1 -1
  21. package/dist/plugins/fetch/index.js +15 -1
  22. package/dist/plugins/getInputFieldsSchema/schemas.js +1 -1
  23. package/dist/plugins/listInputFieldChoices/schemas.js +1 -1
  24. package/dist/plugins/listInputFields/schemas.js +1 -1
  25. package/dist/plugins/manifest/schemas.d.ts +2 -2
  26. package/dist/plugins/runAction/index.d.ts.map +1 -1
  27. package/dist/plugins/runAction/index.js +12 -1
  28. package/dist/plugins/runAction/schemas.js +1 -1
  29. package/dist/types/connections.d.ts +2 -2
  30. package/dist/types/connections.d.ts.map +1 -1
  31. package/dist/types/connections.js +5 -3
  32. package/dist/types/errors.d.ts +37 -0
  33. package/dist/types/errors.d.ts.map +1 -1
  34. package/dist/types/errors.js +18 -0
  35. package/dist/types/properties.js +1 -1
  36. package/dist/types/sdk.d.ts +7 -0
  37. package/dist/types/sdk.d.ts.map +1 -1
  38. package/dist/types/sdk.js +20 -0
  39. package/dist/utils/open-approval.d.ts +2 -0
  40. package/dist/utils/open-approval.d.ts.map +1 -0
  41. package/dist/utils/open-approval.js +13 -0
  42. package/dist/utils/open-url.d.ts +3 -0
  43. package/dist/utils/open-url.d.ts.map +1 -0
  44. package/dist/utils/open-url.js +72 -0
  45. package/package.json +3 -1
@@ -3,7 +3,7 @@ import { resolveCredentials } from "../../credentials";
3
3
  import { ZAPIER_BASE_URL, ZAPIER_MAX_NETWORK_RETRIES, ZAPIER_MAX_NETWORK_RETRY_DELAY_MS, } from "../../constants";
4
4
  export const apiPlugin = (sdk) => {
5
5
  // Extract all options - everything passed to the plugin
6
- const { fetch: customFetch = globalThis.fetch, baseUrl = ZAPIER_BASE_URL, credentials, token, onEvent, debug = false, maxNetworkRetries = ZAPIER_MAX_NETWORK_RETRIES, maxNetworkRetryDelayMs = ZAPIER_MAX_NETWORK_RETRY_DELAY_MS, } = sdk.context.options;
6
+ const { fetch: customFetch = globalThis.fetch, baseUrl = ZAPIER_BASE_URL, credentials, token, onEvent, debug = false, maxNetworkRetries = ZAPIER_MAX_NETWORK_RETRIES, maxNetworkRetryDelayMs = ZAPIER_MAX_NETWORK_RETRY_DELAY_MS, isInteractive, approvalTimeoutMs, maxApprovalRetries, approvalMode, } = sdk.context.options;
7
7
  // Create the API client - it will handle token resolution internally
8
8
  const api = createZapierApi({
9
9
  baseUrl,
@@ -14,6 +14,10 @@ export const apiPlugin = (sdk) => {
14
14
  onEvent,
15
15
  maxNetworkRetries,
16
16
  maxNetworkRetryDelayMs,
17
+ isInteractive,
18
+ approvalTimeoutMs,
19
+ maxApprovalRetries,
20
+ approvalMode,
17
21
  });
18
22
  // Return flat structure with context only
19
23
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/createClientCredentials/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,6BAA6B,EAC7B,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,EACnC,MAAM,WAAW,CAAC;AAInB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAK9D,MAAM,WAAW,qCAAqC;IACpD,uBAAuB,EAAE,CACvB,OAAO,EAAE,8BAA8B,KACpC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC5C,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,uBAAuB,EAAE;gBACvB,WAAW,EAAE,OAAO,6BAA6B,CAAC;aACnD,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAChD;IACE,OAAO,EAAE;QACP,GAAG,EAAE,SAAS,CAAC;KAChB,CAAC;CACH,GAAG,qBAAqB,EACzB,qCAAqC,CAkEtC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/createClientCredentials/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,6BAA6B,EAC7B,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,EACnC,MAAM,WAAW,CAAC;AAInB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAK9D,MAAM,WAAW,qCAAqC;IACpD,uBAAuB,EAAE,CACvB,OAAO,EAAE,8BAA8B,KACpC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC5C,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,uBAAuB,EAAE;gBACvB,WAAW,EAAE,OAAO,6BAA6B,CAAC;aACnD,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAChD;IACE,OAAO,EAAE;QACP,GAAG,EAAE,SAAS,CAAC;KAChB,CAAC;CACH,GAAG,qBAAqB,EACzB,qCAAqC,CAmEtC,CAAC"}
@@ -10,6 +10,7 @@ export const createClientCredentialsPlugin = (sdk) => {
10
10
  const response = await api.post("/api/v0/client-credentials", {
11
11
  name: options.name,
12
12
  allowed_scopes: options.allowedScopes,
13
+ ...(options.policy && { policy: options.policy }),
13
14
  }, {
14
15
  customErrorHandler: ({ status }) => {
15
16
  if (status === 401) {
@@ -8,6 +8,7 @@ export declare const CreateClientCredentialsSchema: z.ZodObject<{
8
8
  external: "external";
9
9
  credentials: "credentials";
10
10
  }>>>;
11
+ policy: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
11
12
  }, z.core.$strip>;
12
13
  export type CreateClientCredentialsOptions = z.infer<typeof CreateClientCredentialsSchema> & FunctionOptions;
13
14
  export interface CreateClientCredentialsResult {
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/plugins/createClientCredentials/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uDAAuD,CAAC;AAE1G,OAAO,KAAK,EACV,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,eAAO,MAAM,6BAA6B;;;;;;iBAQ+B,CAAC;AAG1E,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAClD,OAAO,6BAA6B,CACrC,GACC,eAAe,CAAC;AAGlB,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,4BAA4B,CAAC;CACpC;AAGD,MAAM,MAAM,4BAA4B,GACpC,yBAAyB,GACzB,cAAc,GACd,qBAAqB,GACrB,kBAAkB,CAAC;AAGvB,MAAM,WAAW,kCAAkC;IACjD,uBAAuB,EAAE,CACvB,OAAO,EAAE,8BAA8B,KACpC,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAC7C"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/plugins/createClientCredentials/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uDAAuD,CAAC;AAE1G,OAAO,KAAK,EACV,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,eAAO,MAAM,6BAA6B;;;;;;;iBAc+B,CAAC;AAG1E,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAClD,OAAO,6BAA6B,CACrC,GACC,eAAe,CAAC;AAGlB,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,4BAA4B,CAAC;CACpC;AAGD,MAAM,MAAM,4BAA4B,GACpC,yBAAyB,GACzB,cAAc,GACd,qBAAqB,GACrB,kBAAkB,CAAC;AAGvB,MAAM,WAAW,kCAAkC;IACjD,uBAAuB,EAAE,CACvB,OAAO,EAAE,8BAA8B,KACpC,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAC7C"}
@@ -6,5 +6,11 @@ export const CreateClientCredentialsSchema = CreateClientCredentialsRequestSchem
6
6
  .array(z.enum(["credentials", "external"]))
7
7
  .default(["external"])
8
8
  .describe("Scopes to allow for these credentials"),
9
+ // Temporarily hidden while we finalise work to make approvals/policies customer-facing.
10
+ policy: z
11
+ .record(z.string(), z.unknown())
12
+ .optional()
13
+ .describe("Policy document (JSON) to attach to the credentials")
14
+ .meta({ deprecated: true }),
9
15
  })
10
16
  .describe("Create new client credentials for the authenticated user");
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAMhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAgB9D,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA4GD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,CACL,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,CAAC,EAAE,sBAAsB,KAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvB,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,KAAK,EAAE;gBACL,WAAW,EAAE,MAAM,CAAC;gBACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;gBACnB,UAAU,EAAE,MAAM,EAAE,CAAC;gBACrB,UAAU,EAAE,MAAM,CAAC;gBACnB,eAAe,EAAE,KAAK,CAAC;oBAAE,IAAI,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAA;iBAAE,CAAC,CAAC;aAC/D,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAQD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAC9B;IACE,OAAO,EAAE;QAAE,GAAG,EAAE,SAAS,CAAA;KAAE,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;CACpE,GAAG,qBAAqB,EAAE,+EAA+E;AAC1G,mBAAmB,CAiJpB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAMhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAiB9D,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA4GD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,CACL,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,CAAC,EAAE,sBAAsB,KAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvB,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,KAAK,EAAE;gBACL,WAAW,EAAE,MAAM,CAAC;gBACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;gBACnB,UAAU,EAAE,MAAM,EAAE,CAAC;gBACrB,UAAU,EAAE,MAAM,CAAC;gBACnB,eAAe,EAAE,KAAK,CAAC;oBAAE,IAAI,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAA;iBAAE,CAAC,CAAC;aAC/D,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAQD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAC9B;IACE,OAAO,EAAE;QAAE,GAAG,EAAE,SAAS,CAAA;KAAE,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;CACpE,GAAG,qBAAqB,EAAE,+EAA+E;AAC1G,mBAAmB,CAiKpB,CAAC"}
@@ -4,6 +4,7 @@ import { z } from "zod";
4
4
  import { resolveConnectionId } from "../../utils/domain-utils";
5
5
  import { combineAbortSignals, createTimeoutAbortSignal, } from "../../utils/abort-utils";
6
6
  import { isPlainObject } from "../../utils/type-guard-utils";
7
+ import { buildHttpRequestContext } from "@zapier/policy-context";
7
8
  // fetch() doesn't use createFunction/createPaginatedFunction (its signature
8
9
  // doesn't fit the single-options-object pattern), so we wire up telemetry
9
10
  // context tracking manually.
@@ -132,18 +133,31 @@ export const fetchPlugin = (sdk) => {
132
133
  if (maxTime !== undefined) {
133
134
  headers["X-Zapier-Sdk-Max-Time"] = String(maxTime);
134
135
  }
136
+ const upstreamUrl = new URL(url).toString();
137
+ const method = (fetchInit.method ?? "GET").toUpperCase();
135
138
  const abortHandle = buildAbortHandle({
136
139
  maxTimeSeconds: maxTime,
137
140
  callerSignal: fetchInit.signal,
138
141
  });
139
142
  try {
140
143
  const result = await api.fetch(relayPath, {
141
- method: fetchInit.method ?? "GET",
144
+ method,
142
145
  body: fetchInit.body,
143
146
  headers,
144
147
  redirect: fetchInit.redirect,
145
148
  signal: abortHandle?.signal,
146
149
  authRequired: true,
150
+ approvalContext: () => buildHttpRequestContext({
151
+ method,
152
+ url: upstreamUrl,
153
+ headers,
154
+ body: typeof fetchInit.body === "string"
155
+ ? fetchInit.body
156
+ : undefined,
157
+ connection_id: resolvedConnectionId
158
+ ? String(resolvedConnectionId)
159
+ : undefined,
160
+ }),
147
161
  });
148
162
  const relayError = result.headers.get("x-relay-error");
149
163
  if (relayError) {
@@ -3,7 +3,7 @@ import { AppKeyPropertySchema, AppPropertySchema, ActionTypePropertySchema, Acti
3
3
  const GetInputFieldsSchemaDescription = "Get the JSON Schema representation of input fields for an action. Returns a JSON Schema object describing the structure, types, and validation rules for the action's input parameters.";
4
4
  // Base schema for shared (optional) properties
5
5
  const GetInputFieldsSchemaBaseSchema = z.object({
6
- connection: ConnectionPropertySchema.optional().describe("Connection alias (string) or numeric connectionId. Strings are resolved from the connections map; numbers are used directly. Mutually exclusive with connectionId."),
6
+ connection: ConnectionPropertySchema.optional().describe("Connection alias or connection ID (UUID or positive integer). Strings that match a key in the connections map are resolved against it; otherwise the value is used as a connection ID directly. Mutually exclusive with connectionId."),
7
7
  connectionId: ConnectionIdPropertySchema.nullable()
8
8
  .optional()
9
9
  .describe("Connection ID to use when fetching the schema. Required if the action needs a connection to determine available fields.")
@@ -32,7 +32,7 @@ export const InputFieldChoiceItemSchema = withFormatter(NeedChoicesSchema, {
32
32
  const ListInputFieldChoicesDescription = "Get the available choices for a dynamic dropdown input field";
33
33
  // Base schema for shared (optional) properties
34
34
  const ListInputFieldChoicesBaseSchema = z.object({
35
- connection: ConnectionPropertySchema.optional().describe("Connection alias (string) or numeric connectionId. Strings are resolved from the connections map; numbers are used directly. Mutually exclusive with connectionId."),
35
+ connection: ConnectionPropertySchema.optional().describe("Connection alias or connection ID (UUID or positive integer). Strings that match a key in the connections map are resolved against it; otherwise the value is used as a connection ID directly. Mutually exclusive with connectionId."),
36
36
  connectionId: ConnectionIdPropertySchema.nullable()
37
37
  .optional()
38
38
  .describe("Connection ID to use when listing available field choices. Required if the action needs a connection to populate dynamic dropdown options.")
@@ -3,7 +3,7 @@ import { AppKeyPropertySchema, AppPropertySchema, ActionTypePropertySchema, Acti
3
3
  const ListInputFieldsDescription = "Get the input fields required for a specific action";
4
4
  // Base schema for shared (optional) properties
5
5
  const ListInputFieldsBaseSchema = z.object({
6
- connection: ConnectionPropertySchema.optional().describe("Connection alias (string) or numeric connectionId. Strings are resolved from the connections map; numbers are used directly. Mutually exclusive with connectionId."),
6
+ connection: ConnectionPropertySchema.optional().describe("Connection alias or connection ID (UUID or positive integer). Strings that match a key in the connections map are resolved against it; otherwise the value is used as a connection ID directly. Mutually exclusive with connectionId."),
7
7
  connectionId: ConnectionIdPropertySchema.nullable()
8
8
  .optional()
9
9
  .describe("Connection ID to use when listing input fields. Required if the action needs a connection to determine available fields.")
@@ -57,7 +57,7 @@ export declare const ManifestSchema: z.ZodObject<{
57
57
  canIncludeSharedTables: z.ZodOptional<z.ZodBoolean>;
58
58
  canDeleteTables: z.ZodOptional<z.ZodBoolean>;
59
59
  connections: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
60
- connectionId: z.ZodNumber;
60
+ connectionId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
61
61
  }, z.core.$strip>>>;
62
62
  }, z.core.$strip>;
63
63
  export declare const ManifestPluginOptionsSchema: z.ZodObject<{
@@ -81,7 +81,7 @@ export declare const ManifestPluginOptionsSchema: z.ZodObject<{
81
81
  canIncludeSharedTables: z.ZodOptional<z.ZodBoolean>;
82
82
  canDeleteTables: z.ZodOptional<z.ZodBoolean>;
83
83
  connections: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
84
- connectionId: z.ZodNumber;
84
+ connectionId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
85
85
  }, z.core.$strip>>>;
86
86
  }, z.core.$strip>>;
87
87
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/runAction/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,eAAe,EAEf,KAAK,gBAAgB,EAEtB,MAAM,WAAW,CAAC;AAQnB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAQtD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAO9D,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC;QACjD,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,GACA,aAAa,CAAC;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG;QACpD,KAAK,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;KAC7B,CAAC;IACJ,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,SAAS,EAAE;gBACT,WAAW,EAAE,OAAO,eAAe,CAAC;aACrC,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAqFD,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAC3C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,eAAO,MAAM,eAAe,EAAE,MAAM,CAClC,uBAAuB,GACrB,oBAAoB,GAAG;IACrB,OAAO,EAAE;QACP,GAAG,EAAE,SAAS,CAAC;QACf,4BAA4B,EAAE,4BAA4B,CAAC;KAC5D,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;CAC1C,GAAG,qBAAqB,EAAE,uFAAuF;AACpH,uBAAuB,CAyMxB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/runAction/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,eAAe,EAEf,KAAK,gBAAgB,EAEtB,MAAM,WAAW,CAAC;AAQnB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAQtD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAS9D,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC;QACjD,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,GACA,aAAa,CAAC;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG;QACpD,KAAK,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;KAC7B,CAAC;IACJ,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,SAAS,EAAE;gBACT,WAAW,EAAE,OAAO,eAAe,CAAC;aACrC,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAkGD,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAC3C,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,eAAO,MAAM,eAAe,EAAE,MAAM,CAClC,uBAAuB,GACrB,oBAAoB,GAAG;IACrB,OAAO,EAAE;QACP,GAAG,EAAE,SAAS,CAAC;QACf,4BAA4B,EAAE,4BAA4B,CAAC;KAC5D,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;CAC1C,GAAG,qBAAqB,EAAE,uFAAuF;AACpH,uBAAuB,CAyMxB,CAAC"}
@@ -8,6 +8,7 @@ import { resolveConnectionId } from "../../utils/domain-utils";
8
8
  import { stripPageSuffix } from "../../utils/string-utils";
9
9
  import { DEFAULT_ACTION_TIMEOUT_MS } from "../../constants";
10
10
  import { setMethodMetadata } from "../../utils/telemetry-context";
11
+ import { buildActionRunContext } from "@zapier/policy-context";
11
12
  async function executeAction(actionOptions) {
12
13
  const { api, selectedApi, actionId, actionKey, actionType, executionOptions, cursor, connectionId, timeoutMs, } = actionOptions;
13
14
  // Step 1: POST to /actions/v1/runs to start execution
@@ -28,7 +29,17 @@ async function executeAction(actionOptions) {
28
29
  const runRequest = {
29
30
  data: runRequestData,
30
31
  };
31
- const runData = await api.post("/zapier/api/actions/v1/runs", runRequest);
32
+ const runData = await api.post("/zapier/api/actions/v1/runs", runRequest, {
33
+ approvalContext: () => buildActionRunContext({
34
+ selected_api: selectedApi,
35
+ action_type: actionType,
36
+ action_key: actionKey,
37
+ connection_id: connectionId != null ? String(connectionId) : undefined,
38
+ // Cast: inputs is Record<string, unknown> at the SDK surface, but
39
+ // buildActionRunContext coerces to JsonValue at runtime via zod.
40
+ inputs: (executionOptions.inputs ?? {}),
41
+ }),
42
+ });
32
43
  const runId = runData.data.id;
33
44
  // Step 2: Poll GET /actions/v1/runs/{run_id} for results
34
45
  return await api.poll(`/zapier/api/actions/v1/runs/${runId}`, {
@@ -3,7 +3,7 @@ import { AppKeyPropertySchema, AppPropertySchema, ActionTypePropertySchema, Acti
3
3
  const RunActionDescription = "Execute an action with the given inputs";
4
4
  // Base schema for shared properties
5
5
  const RunActionBaseSchema = z.object({
6
- connection: ConnectionPropertySchema.optional().describe("Connection alias (string) or numeric connectionId. Strings are resolved from the connections map; numbers are used directly. Mutually exclusive with connectionId."),
6
+ connection: ConnectionPropertySchema.optional().describe("Connection alias or connection ID (UUID or positive integer). Strings that match a key in the connections map are resolved against it; otherwise the value is used as a connection ID directly. Mutually exclusive with connectionId."),
7
7
  connectionId: ConnectionIdPropertySchema.nullable()
8
8
  .optional()
9
9
  .describe("Connection ID to use when running the action. Required if the action needs a connection to authenticate and interact with the service.")
@@ -4,7 +4,7 @@ import { z } from "zod";
4
4
  * Provides a connectionId that maps a named connection alias to a Zapier connection.
5
5
  */
6
6
  export declare const ConnectionEntrySchema: z.ZodObject<{
7
- connectionId: z.ZodNumber;
7
+ connectionId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
8
8
  }, z.core.$strip>;
9
9
  export type ConnectionEntry = z.infer<typeof ConnectionEntrySchema>;
10
10
  /**
@@ -13,7 +13,7 @@ export type ConnectionEntry = z.infer<typeof ConnectionEntrySchema>;
13
13
  * `connection` parameter on action calls.
14
14
  */
15
15
  export declare const ConnectionsMapSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
16
- connectionId: z.ZodNumber;
16
+ connectionId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
17
17
  }, z.core.$strip>>;
18
18
  export type ConnectionsMap = z.infer<typeof ConnectionsMapSchema>;
19
19
  //# sourceMappingURL=connections.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../src/types/connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;iBAMhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;kBAA8C,CAAC;AAEhF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../src/types/connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;iBAOhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;kBAA8C,CAAC;AAEhF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -1,13 +1,15 @@
1
1
  import { z } from "zod";
2
+ const POSITIVE_INTEGER_OR_UUID = /^([1-9][0-9]*|[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;
2
3
  /**
3
4
  * A single connection entry in the connections map.
4
5
  * Provides a connectionId that maps a named connection alias to a Zapier connection.
5
6
  */
6
7
  export const ConnectionEntrySchema = z.object({
7
8
  connectionId: z
8
- .number()
9
- .int()
10
- .positive()
9
+ .union([
10
+ z.string().regex(POSITIVE_INTEGER_OR_UUID),
11
+ z.number().int().positive(),
12
+ ])
11
13
  .describe("Zapier connection ID for the third-party service."),
12
14
  });
13
15
  /**
@@ -174,6 +174,43 @@ export declare class ZapierRateLimitError extends ZapierError {
174
174
  retries?: number;
175
175
  });
176
176
  }
177
+ /**
178
+ * Terminal status of an approval attempt, exposed on `ZapierApprovalError.approvalStatus`.
179
+ *
180
+ * - `pending`: The approval was created but not yet resolved. Only thrown in
181
+ * `approvalMode: "fail"` — the caller is expected to surface the approval URL
182
+ * to an end user (e.g. an LLM instructing its user to click the link).
183
+ * - `denied`: A human explicitly rejected the approval in the UI.
184
+ * - `policy_denied`: A policy rule blocked the request before (or instead of)
185
+ * creating an approval. Cannot be approved by a human.
186
+ * - `approval_required`: The backend requested approval, but the current
187
+ * session is non-interactive so the SDK cannot open the approval URL. Retry
188
+ * in an interactive session, or use `approvalMode: "fail"` to surface the
189
+ * approval URL to the caller.
190
+ * - `timeout`: Poll mode exceeded `approvalTimeoutMs` without the approval
191
+ * being resolved.
192
+ * - `max_retries_exceeded`: A single request triggered more sequential approval
193
+ * rounds than `maxApprovalRetries` allows (runaway-loop safeguard).
194
+ */
195
+ export type ApprovalStatus = "denied" | "timeout" | "pending" | "policy_denied" | "approval_required" | "max_retries_exceeded";
196
+ /**
197
+ * Error thrown when a request requires approval and the approval is denied, times out,
198
+ * or the auth type doesn't support the approval flow.
199
+ */
200
+ export declare class ZapierApprovalError extends ZapierError {
201
+ readonly name = "ZapierApprovalError";
202
+ readonly code: "ZAPIER_APPROVAL_ERROR";
203
+ approvalId?: string;
204
+ approvalStatus?: ApprovalStatus;
205
+ approvalUrl?: string;
206
+ pollUrl?: string;
207
+ constructor(message: string, options?: ErrorOptions & {
208
+ approvalId?: string;
209
+ status?: ApprovalStatus;
210
+ approvalUrl?: string;
211
+ pollUrl?: string;
212
+ });
213
+ }
177
214
  /**
178
215
  * Error thrown when Relay itself encounters an error (as opposed to the upstream partner API returning an error).
179
216
  * Indicated by the presence of the X-Relay-Error response header.
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"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"}
@@ -150,6 +150,21 @@ export class ZapierRateLimitError extends ZapierError {
150
150
  this.retries = options.retries ?? 0;
151
151
  }
152
152
  }
153
+ /**
154
+ * Error thrown when a request requires approval and the approval is denied, times out,
155
+ * or the auth type doesn't support the approval flow.
156
+ */
157
+ export class ZapierApprovalError extends ZapierError {
158
+ constructor(message, options = {}) {
159
+ super(message, options);
160
+ this.name = "ZapierApprovalError";
161
+ this.code = "ZAPIER_APPROVAL_ERROR";
162
+ this.approvalId = options.approvalId;
163
+ this.approvalStatus = options.status;
164
+ this.approvalUrl = options.approvalUrl;
165
+ this.pollUrl = options.pollUrl;
166
+ }
167
+ }
153
168
  /**
154
169
  * Error thrown when Relay itself encounters an error (as opposed to the upstream partner API returning an error).
155
170
  * Indicated by the presence of the X-Relay-Error response header.
@@ -213,6 +228,9 @@ export function formatErrorMessage(error) {
213
228
  "\n\nBuild errors:\n" +
214
229
  error.buildErrors.map((err) => ` • ${err}`).join("\n");
215
230
  }
231
+ if (error instanceof ZapierApprovalError && error.approvalUrl) {
232
+ message += `\nApproval URL: ${error.approvalUrl}`;
233
+ }
216
234
  if (error instanceof ZapierRateLimitError) {
217
235
  const { limit, remaining, retryAfterMs } = error.rateLimit;
218
236
  const parts = [];
@@ -38,7 +38,7 @@ export const AuthenticationIdPropertySchema = ConnectionIdPropertySchema.meta({
38
38
  });
39
39
  export const ConnectionPropertySchema = z
40
40
  .union([z.string(), z.number().int().positive()])
41
- .describe("Connection alias (string) or numeric connectionId. Strings are resolved from the connections map; numbers are used directly.");
41
+ .describe("Connection alias or connection ID (UUID or positive integer). Strings that match a key in the connections map are resolved against it; otherwise the value is used as a connection ID directly.");
42
42
  export const InputsPropertySchema = z
43
43
  .record(z.string(), z.unknown())
44
44
  .describe("Input parameters for the action");
@@ -58,6 +58,13 @@ export declare const BaseSdkOptionsSchema: z.ZodObject<{
58
58
  trackingBaseUrl: z.ZodOptional<z.ZodString>;
59
59
  maxNetworkRetries: z.ZodOptional<z.ZodNumber>;
60
60
  maxNetworkRetryDelayMs: z.ZodOptional<z.ZodNumber>;
61
+ isInteractive: z.ZodOptional<z.ZodBoolean>;
62
+ approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
63
+ maxApprovalRetries: z.ZodOptional<z.ZodNumber>;
64
+ approvalMode: z.ZodOptional<z.ZodEnum<{
65
+ poll: "poll";
66
+ fail: "fail";
67
+ }>>;
61
68
  manifestPath: z.ZodOptional<z.ZodString>;
62
69
  manifest: z.ZodOptional<z.ZodCustom<Manifest, Manifest>>;
63
70
  onEvent: z.ZodOptional<z.ZodCustom<EventCallback, EventCallback>>;
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/types/sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/types/sdk.ts"],"names":[],"mappings":"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"}
package/dist/types/sdk.js CHANGED
@@ -36,6 +36,26 @@ export const BaseSdkOptionsSchema = z.object({
36
36
  .optional()
37
37
  .describe("Max delay in ms to wait for retry (default: 60000).")
38
38
  .meta({ valueHint: "ms" }),
39
+ isInteractive: z
40
+ .boolean()
41
+ .optional()
42
+ .describe("Whether this session is interactive (user can visit approval URLs). Defaults to ZAPIER_IS_INTERACTIVE env var.")
43
+ .meta({ internal: true }),
44
+ approvalTimeoutMs: z
45
+ .number()
46
+ .optional()
47
+ .describe("Timeout in ms for approval polling. Default: 600000 (10 min).")
48
+ .meta({ valueHint: "ms", internal: true }),
49
+ maxApprovalRetries: z
50
+ .number()
51
+ .optional()
52
+ .describe("Maximum number of sequential approval rounds per request (one per gating policy) before giving up. Default: 2.")
53
+ .meta({ internal: true }),
54
+ approvalMode: z
55
+ .enum(["poll", "fail"])
56
+ .optional()
57
+ .describe('Approval flow behavior. "poll" opens browser and polls (default). "fail" creates the approval and throws immediately with the approval URL.')
58
+ .meta({ internal: true }),
39
59
  // Internal
40
60
  manifestPath: z
41
61
  .string()
@@ -0,0 +1,2 @@
1
+ export declare function openApproval(url: string): Promise<void>;
2
+ //# sourceMappingURL=open-approval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-approval.d.ts","sourceRoot":"","sources":["../../src/utils/open-approval.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU7D"}
@@ -0,0 +1,13 @@
1
+ import openUrl from "./open-url";
2
+ export async function openApproval(url) {
3
+ // Always surface the URL so the user has a clickable fallback if openUrl
4
+ // silently no-ops (headless servers, WSL without a handler, misconfigured
5
+ // default browser, etc.).
6
+ console.error(`Approval required. Opening browser: ${url}`);
7
+ try {
8
+ await openUrl(url);
9
+ }
10
+ catch {
11
+ // Best-effort — URL already printed to stderr above.
12
+ }
13
+ }
@@ -0,0 +1,3 @@
1
+ declare const openUrl: (url: string) => Promise<void>;
2
+ export default openUrl;
3
+ //# sourceMappingURL=open-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-url.d.ts","sourceRoot":"","sources":["../../src/utils/open-url.ts"],"names":[],"mappings":"AAmBA,QAAA,MAAM,OAAO,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,IAAI,CAgEhD,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,72 @@
1
+ // String-literal `import("node:child_process")` is statically resolved by
2
+ // esbuild and ends up as `import('child_process')` in dist/index.mjs, which
3
+ // then fails when downstream consumers bundle the SDK with platform: "browser".
4
+ // Wrapping the specifier in a template literal makes esbuild (and every other
5
+ // modern bundler) treat the call as a truly dynamic import and leave it alone.
6
+ // At runtime the catch below handles the failure when the host has neither
7
+ // window.open nor node built-ins.
8
+ const nodePrefix = "node:";
9
+ async function loadChildProcess() {
10
+ return import(`${nodePrefix}child_process`);
11
+ }
12
+ async function loadProcess() {
13
+ return import(`${nodePrefix}process`);
14
+ }
15
+ const openUrl = async (url) => {
16
+ if (typeof url !== "string") {
17
+ throw new TypeError("Expected `url` to be a string");
18
+ }
19
+ let parsed;
20
+ try {
21
+ parsed = new URL(url);
22
+ }
23
+ catch {
24
+ throw new Error(`Invalid URL: ${url}`);
25
+ }
26
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
27
+ throw new Error(`Refusing to open non-http(s) URL: ${parsed.protocol}`);
28
+ }
29
+ const target = parsed.toString();
30
+ // Browser: `noopener` prevents the opened page from touching window.opener.
31
+ if (typeof globalThis.window !== "undefined" &&
32
+ typeof globalThis.window.open === "function") {
33
+ globalThis.window.open(target, "_blank", "noopener");
34
+ return;
35
+ }
36
+ let spawn;
37
+ let platform;
38
+ try {
39
+ const [cp, proc] = await Promise.all([loadChildProcess(), loadProcess()]);
40
+ spawn = cp.spawn;
41
+ platform = proc.platform;
42
+ }
43
+ catch {
44
+ throw new Error("openUrl: no supported runtime. window.open is unavailable and node:child_process could not be loaded.");
45
+ }
46
+ if (typeof spawn !== "function") {
47
+ throw new Error("openUrl: child_process.spawn is not available in this runtime");
48
+ }
49
+ let command;
50
+ let args;
51
+ if (platform === "darwin") {
52
+ command = "open";
53
+ args = [target];
54
+ }
55
+ else if (platform === "win32") {
56
+ // rundll32 dispatches to the default URL handler without going through
57
+ // cmd.exe, avoiding `&`/`^`/`|` metacharacter pitfalls.
58
+ command = "rundll32";
59
+ args = ["url.dll,FileProtocolHandler", target];
60
+ }
61
+ else {
62
+ throw new Error(`Unsupported platform: ${platform}`);
63
+ }
64
+ const child = spawn(command, args, {
65
+ stdio: "ignore",
66
+ detached: true,
67
+ windowsHide: true,
68
+ });
69
+ child.once("error", () => { });
70
+ child.unref();
71
+ };
72
+ export default openUrl;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zapier/zapier-sdk",
3
- "version": "0.42.1",
3
+ "version": "0.44.0",
4
4
  "description": "Complete Zapier SDK - combines all Zapier SDK packages",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",
@@ -69,6 +69,8 @@
69
69
  "access": "public"
70
70
  },
71
71
  "dependencies": {
72
+ "@zapier/policy-context": "0.7.0",
73
+ "@zapier/policy-schema": "0.11.0",
72
74
  "@zapier/zapier-sdk-core": "^0.8.0",
73
75
  "zod": "4.2.1"
74
76
  },