@zapier/zapier-sdk 0.34.0 → 0.35.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 (137) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +341 -0
  3. package/dist/api/client.d.ts.map +1 -1
  4. package/dist/api/client.js +10 -2
  5. package/dist/api/types.d.ts +2 -1
  6. package/dist/api/types.d.ts.map +1 -1
  7. package/dist/formatters/index.d.ts +2 -0
  8. package/dist/formatters/index.d.ts.map +1 -0
  9. package/dist/formatters/index.js +1 -0
  10. package/dist/formatters/tableRecord.d.ts +6 -0
  11. package/dist/formatters/tableRecord.d.ts.map +1 -0
  12. package/dist/formatters/tableRecord.js +23 -0
  13. package/dist/index.cjs +1828 -35
  14. package/dist/index.d.mts +644 -70
  15. package/dist/index.d.ts +13 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +13 -0
  18. package/dist/index.mjs +1807 -36
  19. package/dist/plugins/apps/schemas.d.ts +11 -11
  20. package/dist/plugins/apps/schemas.d.ts.map +1 -1
  21. package/dist/plugins/deleteClientCredentials/index.d.ts.map +1 -1
  22. package/dist/plugins/deleteClientCredentials/index.js +1 -1
  23. package/dist/plugins/registry/index.d.ts.map +1 -1
  24. package/dist/plugins/registry/index.js +4 -0
  25. package/dist/plugins/tables/createTable/index.d.ts +18 -0
  26. package/dist/plugins/tables/createTable/index.d.ts.map +1 -0
  27. package/dist/plugins/tables/createTable/index.js +48 -0
  28. package/dist/plugins/tables/createTable/schemas.d.ts +37 -0
  29. package/dist/plugins/tables/createTable/schemas.d.ts.map +1 -0
  30. package/dist/plugins/tables/createTable/schemas.js +16 -0
  31. package/dist/plugins/tables/createTableFields/index.d.ts +18 -0
  32. package/dist/plugins/tables/createTableFields/index.d.ts.map +1 -0
  33. package/dist/plugins/tables/createTableFields/index.js +49 -0
  34. package/dist/plugins/tables/createTableFields/schemas.d.ts +192 -0
  35. package/dist/plugins/tables/createTableFields/schemas.d.ts.map +1 -0
  36. package/dist/plugins/tables/createTableFields/schemas.js +42 -0
  37. package/dist/plugins/tables/createTableRecords/index.d.ts +18 -0
  38. package/dist/plugins/tables/createTableRecords/index.d.ts.map +1 -0
  39. package/dist/plugins/tables/createTableRecords/index.js +67 -0
  40. package/dist/plugins/tables/createTableRecords/schemas.d.ts +57 -0
  41. package/dist/plugins/tables/createTableRecords/schemas.d.ts.map +1 -0
  42. package/dist/plugins/tables/createTableRecords/schemas.js +35 -0
  43. package/dist/plugins/tables/deleteTable/index.d.ts +18 -0
  44. package/dist/plugins/tables/deleteTable/index.d.ts.map +1 -0
  45. package/dist/plugins/tables/deleteTable/index.js +43 -0
  46. package/dist/plugins/tables/deleteTable/schemas.d.ts +15 -0
  47. package/dist/plugins/tables/deleteTable/schemas.d.ts.map +1 -0
  48. package/dist/plugins/tables/deleteTable/schemas.js +9 -0
  49. package/dist/plugins/tables/deleteTableFields/index.d.ts +18 -0
  50. package/dist/plugins/tables/deleteTableFields/index.d.ts.map +1 -0
  51. package/dist/plugins/tables/deleteTableFields/index.js +50 -0
  52. package/dist/plugins/tables/deleteTableFields/schemas.d.ts +16 -0
  53. package/dist/plugins/tables/deleteTableFields/schemas.d.ts.map +1 -0
  54. package/dist/plugins/tables/deleteTableFields/schemas.js +13 -0
  55. package/dist/plugins/tables/deleteTableRecords/index.d.ts +18 -0
  56. package/dist/plugins/tables/deleteTableRecords/index.d.ts.map +1 -0
  57. package/dist/plugins/tables/deleteTableRecords/index.js +44 -0
  58. package/dist/plugins/tables/deleteTableRecords/schemas.d.ts +16 -0
  59. package/dist/plugins/tables/deleteTableRecords/schemas.d.ts.map +1 -0
  60. package/dist/plugins/tables/deleteTableRecords/schemas.js +14 -0
  61. package/dist/plugins/tables/getTable/index.d.ts +20 -0
  62. package/dist/plugins/tables/getTable/index.d.ts.map +1 -0
  63. package/dist/plugins/tables/getTable/index.js +48 -0
  64. package/dist/plugins/tables/getTable/schemas.d.ts +34 -0
  65. package/dist/plugins/tables/getTable/schemas.d.ts.map +1 -0
  66. package/dist/plugins/tables/getTable/schemas.js +15 -0
  67. package/dist/plugins/tables/getTableRecord/index.d.ts +18 -0
  68. package/dist/plugins/tables/getTableRecord/index.d.ts.map +1 -0
  69. package/dist/plugins/tables/getTableRecord/index.js +60 -0
  70. package/dist/plugins/tables/getTableRecord/schemas.d.ts +51 -0
  71. package/dist/plugins/tables/getTableRecord/schemas.d.ts.map +1 -0
  72. package/dist/plugins/tables/getTableRecord/schemas.js +44 -0
  73. package/dist/plugins/tables/listTableFields/index.d.ts +18 -0
  74. package/dist/plugins/tables/listTableFields/index.d.ts.map +1 -0
  75. package/dist/plugins/tables/listTableFields/index.js +58 -0
  76. package/dist/plugins/tables/listTableFields/schemas.d.ts +180 -0
  77. package/dist/plugins/tables/listTableFields/schemas.d.ts.map +1 -0
  78. package/dist/plugins/tables/listTableFields/schemas.js +77 -0
  79. package/dist/plugins/tables/listTableRecords/index.d.ts +24 -0
  80. package/dist/plugins/tables/listTableRecords/index.d.ts.map +1 -0
  81. package/dist/plugins/tables/listTableRecords/index.js +95 -0
  82. package/dist/plugins/tables/listTableRecords/schemas.d.ts +120 -0
  83. package/dist/plugins/tables/listTableRecords/schemas.d.ts.map +1 -0
  84. package/dist/plugins/tables/listTableRecords/schemas.js +74 -0
  85. package/dist/plugins/tables/listTables/index.d.ts +24 -0
  86. package/dist/plugins/tables/listTables/index.d.ts.map +1 -0
  87. package/dist/plugins/tables/listTables/index.js +83 -0
  88. package/dist/plugins/tables/listTables/schemas.d.ts +78 -0
  89. package/dist/plugins/tables/listTables/schemas.d.ts.map +1 -0
  90. package/dist/plugins/tables/listTables/schemas.js +63 -0
  91. package/dist/plugins/tables/updateTableRecords/index.d.ts +18 -0
  92. package/dist/plugins/tables/updateTableRecords/index.d.ts.map +1 -0
  93. package/dist/plugins/tables/updateTableRecords/index.js +68 -0
  94. package/dist/plugins/tables/updateTableRecords/schemas.d.ts +59 -0
  95. package/dist/plugins/tables/updateTableRecords/schemas.d.ts.map +1 -0
  96. package/dist/plugins/tables/updateTableRecords/schemas.js +35 -0
  97. package/dist/plugins/tables/utils.d.ts +63 -0
  98. package/dist/plugins/tables/utils.d.ts.map +1 -0
  99. package/dist/plugins/tables/utils.js +262 -0
  100. package/dist/resolvers/index.d.ts +8 -0
  101. package/dist/resolvers/index.d.ts.map +1 -1
  102. package/dist/resolvers/index.js +8 -0
  103. package/dist/resolvers/tableFieldIds.d.ts +6 -0
  104. package/dist/resolvers/tableFieldIds.d.ts.map +1 -0
  105. package/dist/resolvers/tableFieldIds.js +19 -0
  106. package/dist/resolvers/tableFields.d.ts +3 -0
  107. package/dist/resolvers/tableFields.d.ts.map +1 -0
  108. package/dist/resolvers/tableFields.js +31 -0
  109. package/dist/resolvers/tableFilters.d.ts +5 -0
  110. package/dist/resolvers/tableFilters.d.ts.map +1 -0
  111. package/dist/resolvers/tableFilters.js +74 -0
  112. package/dist/resolvers/tableId.d.ts +4 -0
  113. package/dist/resolvers/tableId.d.ts.map +1 -0
  114. package/dist/resolvers/tableId.js +19 -0
  115. package/dist/resolvers/tableName.d.ts +3 -0
  116. package/dist/resolvers/tableName.d.ts.map +1 -0
  117. package/dist/resolvers/tableName.js +5 -0
  118. package/dist/resolvers/tableRecordId.d.ts +9 -0
  119. package/dist/resolvers/tableRecordId.d.ts.map +1 -0
  120. package/dist/resolvers/tableRecordId.js +48 -0
  121. package/dist/resolvers/tableRecords.d.ts +8 -0
  122. package/dist/resolvers/tableRecords.d.ts.map +1 -0
  123. package/dist/resolvers/tableRecords.js +77 -0
  124. package/dist/resolvers/tableSort.d.ts +5 -0
  125. package/dist/resolvers/tableSort.d.ts.map +1 -0
  126. package/dist/resolvers/tableSort.js +43 -0
  127. package/dist/sdk.d.ts +73 -1
  128. package/dist/sdk.d.ts.map +1 -1
  129. package/dist/sdk.js +25 -0
  130. package/dist/types/sdk.d.ts +16 -1
  131. package/dist/types/sdk.d.ts.map +1 -1
  132. package/dist/utils/pagination-utils.d.ts +24 -0
  133. package/dist/utils/pagination-utils.d.ts.map +1 -1
  134. package/dist/utils/pagination-utils.js +78 -0
  135. package/dist/utils/schema-utils.d.ts +33 -5
  136. package/dist/utils/schema-utils.d.ts.map +1 -1
  137. package/package.json +2 -2
@@ -0,0 +1,51 @@
1
+ import { z } from "zod";
2
+ import type { FunctionOptions } from "../../../types/functions";
3
+ import type { ZapierAuthenticationError, ZapierApiError, ZapierValidationError, ZapierUnknownError } from "../../../types/errors";
4
+ export declare const RecordApiItemSchema: z.ZodObject<{
5
+ id: z.ZodString;
6
+ data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
7
+ created_at: z.ZodString;
8
+ edited_at: z.ZodString;
9
+ schema_revision_id: z.ZodNumber;
10
+ errors: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
11
+ orig_data: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
12
+ is_source_record: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
13
+ }, z.core.$strip>;
14
+ export type RecordApiItem = z.infer<typeof RecordApiItemSchema>;
15
+ export declare const RecordItemSchema: z.ZodObject<{
16
+ id: z.ZodString;
17
+ data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
18
+ created_at: z.ZodString;
19
+ edited_at: z.ZodString;
20
+ }, z.core.$strip>;
21
+ export type RecordItem = z.infer<typeof RecordItemSchema>;
22
+ export declare const GetTableRecordApiResponseSchema: z.ZodObject<{
23
+ data: z.ZodObject<{
24
+ id: z.ZodString;
25
+ data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
26
+ created_at: z.ZodString;
27
+ edited_at: z.ZodString;
28
+ schema_revision_id: z.ZodNumber;
29
+ errors: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
30
+ orig_data: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
31
+ is_source_record: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
32
+ }, z.core.$strip>;
33
+ }, z.core.$strip>;
34
+ export type GetTableRecordApiResponse = z.infer<typeof GetTableRecordApiResponseSchema>;
35
+ export declare const GetTableRecordOptionsSchema: z.ZodObject<{
36
+ tableId: z.ZodString;
37
+ recordId: z.ZodString;
38
+ keyMode: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
39
+ names: "names";
40
+ ids: "ids";
41
+ }>>>;
42
+ }, z.core.$strip>;
43
+ export type GetTableRecordOptions = z.infer<typeof GetTableRecordOptionsSchema> & FunctionOptions;
44
+ export interface GetTableRecordResult {
45
+ data: RecordItem;
46
+ }
47
+ export type GetTableRecordError = ZapierAuthenticationError | ZapierApiError | ZapierValidationError | ZapierUnknownError;
48
+ export interface GetTableRecordSdkFunction {
49
+ getTableRecord: (options: GetTableRecordOptions) => Promise<GetTableRecordResult>;
50
+ }
51
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../../src/plugins/tables/getTableRecord/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAI/B,eAAO,MAAM,mBAAmB;;;;;;;;;iBAS9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAUhE,eAAO,MAAM,gBAAgB;;;;;iBAO3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,+BAA+B;;;;;;;;;;;iBAE1C,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;;iBAYa,CAAC;AAEtD,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CACzC,OAAO,2BAA2B,CACnC,GACC,eAAe,CAAC;AAElB,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,MAAM,mBAAmB,GAC3B,yBAAyB,GACzB,cAAc,GACd,qBAAqB,GACrB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,CACd,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACpC"}
@@ -0,0 +1,44 @@
1
+ import { z } from "zod";
2
+ import { withFormatter } from "../../../utils/schema-utils";
3
+ import { KeyModeSchema } from "../utils";
4
+ export const RecordApiItemSchema = z.object({
5
+ id: z.string().regex(/^[A-Z0-9]{26}$/, "Record ID must be a valid ULID"),
6
+ data: z.record(z.string(), z.unknown()),
7
+ created_at: z.string(),
8
+ edited_at: z.string(),
9
+ schema_revision_id: z.number(),
10
+ errors: z.record(z.string(), z.unknown()).nullable().optional(),
11
+ orig_data: z.record(z.string(), z.unknown()).nullable().optional(),
12
+ is_source_record: z.boolean().nullable().optional(),
13
+ });
14
+ // SDK output schema (simplified)
15
+ const RecordItemSchemaBase = z.object({
16
+ id: z.string(),
17
+ data: z.record(z.string(), z.unknown()),
18
+ created_at: z.string(),
19
+ edited_at: z.string(),
20
+ });
21
+ export const RecordItemSchema = withFormatter(RecordItemSchemaBase, {
22
+ format: (item) => ({
23
+ title: `Record ${item.id}`,
24
+ id: item.id,
25
+ data: item.data,
26
+ details: [],
27
+ }),
28
+ });
29
+ export const GetTableRecordApiResponseSchema = z.object({
30
+ data: RecordApiItemSchema,
31
+ });
32
+ export const GetTableRecordOptionsSchema = z
33
+ .object({
34
+ tableId: z
35
+ .string()
36
+ .regex(/^[A-Z0-9]{26}$/, "Table ID must be a valid ULID")
37
+ .describe("The unique identifier of the table"),
38
+ recordId: z
39
+ .string()
40
+ .regex(/^[A-Z0-9]{26}$/, "Record ID must be a valid ULID")
41
+ .describe("The unique identifier of the record"),
42
+ keyMode: KeyModeSchema,
43
+ })
44
+ .describe("Get a single record from a table by ID");
@@ -0,0 +1,18 @@
1
+ import type { Plugin } from "../../../types/plugin";
2
+ import type { ApiClient } from "../../../api";
3
+ import { ListTableFieldsOptionsSchema, type ListTableFieldsOptions, type ListTableFieldsResult } from "./schemas";
4
+ import type { EventEmissionContext } from "../../eventEmission";
5
+ export interface ListTableFieldsPluginProvides {
6
+ listTableFields: (options: ListTableFieldsOptions) => Promise<ListTableFieldsResult>;
7
+ context: {
8
+ meta: {
9
+ listTableFields: {
10
+ inputSchema: typeof ListTableFieldsOptionsSchema;
11
+ };
12
+ };
13
+ };
14
+ }
15
+ export declare const listTableFieldsPlugin: Plugin<{}, {
16
+ api: ApiClient;
17
+ } & EventEmissionContext, ListTableFieldsPluginProvides>;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/tables/listTableFields/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EACL,4BAA4B,EAG5B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAMhE,MAAM,WAAW,6BAA6B;IAC5C,eAAe,EAAE,CACf,OAAO,EAAE,sBAAsB,KAC5B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpC,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,eAAe,EAAE;gBACf,WAAW,EAAE,OAAO,4BAA4B,CAAC;aAClD,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,EAAE,EACF;IAAE,GAAG,EAAE,SAAS,CAAA;CAAE,GAAG,oBAAoB,EACzC,6BAA6B,CA6E9B,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { createFunction } from "../../../utils/function-utils";
2
+ import { ListTableFieldsOptionsSchema, ListTableFieldsApiResponseSchema, FieldItemSchema, } from "./schemas";
3
+ import { createTelemetryCallback } from "../../../utils/telemetry-utils";
4
+ import { ZapierAuthenticationError } from "../../../types/errors";
5
+ import { tableIdResolver } from "../../../resolvers";
6
+ import { resolveFieldKeys, transformFieldItem } from "../utils";
7
+ export const listTableFieldsPlugin = ({ context }) => {
8
+ async function listTableFields(options) {
9
+ const { api } = context;
10
+ const searchParams = {};
11
+ if (options.fieldKeys && options.fieldKeys.length > 0) {
12
+ const numericIds = await resolveFieldKeys({
13
+ api,
14
+ tableId: options.tableId,
15
+ fieldKeys: options.fieldKeys,
16
+ });
17
+ searchParams.field_ids = numericIds.join(",");
18
+ }
19
+ const rawResponse = await api.get(`/tables/api/v1/tables/${options.tableId}/fields`, {
20
+ searchParams: Object.keys(searchParams).length > 0 ? searchParams : undefined,
21
+ customErrorHandler: ({ status }) => {
22
+ if (status === 401) {
23
+ return new ZapierAuthenticationError(`Authentication failed. Your token may not have permission to access this table or may be expired. (HTTP ${status})`, { statusCode: status });
24
+ }
25
+ if (status === 403) {
26
+ return new ZapierAuthenticationError(`Access forbidden. Your token may not have the required scopes to access this table. (HTTP ${status})`, { statusCode: status });
27
+ }
28
+ if (status === 404) {
29
+ return new Error(`Table not found: ${options.tableId}`);
30
+ }
31
+ return undefined;
32
+ },
33
+ authRequired: true,
34
+ });
35
+ const response = ListTableFieldsApiResponseSchema.parse(rawResponse);
36
+ return {
37
+ data: response.data.map(transformFieldItem),
38
+ };
39
+ }
40
+ const listTableFieldsDefinition = createFunction(listTableFields, ListTableFieldsOptionsSchema, createTelemetryCallback(context.eventEmission.emitMethodCalled, listTableFields.name));
41
+ return {
42
+ listTableFields: listTableFieldsDefinition,
43
+ context: {
44
+ meta: {
45
+ listTableFields: {
46
+ categories: ["table"],
47
+ type: "list",
48
+ itemType: "Field",
49
+ inputSchema: ListTableFieldsOptionsSchema,
50
+ outputSchema: FieldItemSchema,
51
+ resolvers: {
52
+ tableId: tableIdResolver,
53
+ },
54
+ },
55
+ },
56
+ },
57
+ };
58
+ };
@@ -0,0 +1,180 @@
1
+ import { z } from "zod";
2
+ import type { FunctionOptions } from "../../../types/functions";
3
+ import type { ZapierAuthenticationError, ZapierApiError, ZapierValidationError, ZapierUnknownError } from "../../../types/errors";
4
+ export declare const FieldTypeSchema: z.ZodEnum<{
5
+ string: "string";
6
+ number: "number";
7
+ boolean: "boolean";
8
+ link: "link";
9
+ email: "email";
10
+ uuid: "uuid";
11
+ text: "text";
12
+ datetime: "datetime";
13
+ decimal: "decimal";
14
+ json: "json";
15
+ multiple_string: "multiple_string";
16
+ labeled_string: "labeled_string";
17
+ multiple_labeled_string: "multiple_labeled_string";
18
+ multiple_text: "multiple_text";
19
+ multiple_boolean: "multiple_boolean";
20
+ multiple_number: "multiple_number";
21
+ multiple_decimal: "multiple_decimal";
22
+ multiple_datetime: "multiple_datetime";
23
+ multiple_uuid: "multiple_uuid";
24
+ multiple_json: "multiple_json";
25
+ formula: "formula";
26
+ button_trigger_zap: "button_trigger_zap";
27
+ button_continue_zap: "button_continue_zap";
28
+ multiple_email: "multiple_email";
29
+ multiple_link: "multiple_link";
30
+ currency: "currency";
31
+ phone_number: "phone_number";
32
+ ai_formula: "ai_formula";
33
+ linked_record: "linked_record";
34
+ multiple_linked_record: "multiple_linked_record";
35
+ }>;
36
+ export type FieldType = z.infer<typeof FieldTypeSchema>;
37
+ export declare const FieldApiItemSchema: z.ZodObject<{
38
+ id: z.ZodNumber;
39
+ type: z.ZodEnum<{
40
+ string: "string";
41
+ number: "number";
42
+ boolean: "boolean";
43
+ link: "link";
44
+ email: "email";
45
+ uuid: "uuid";
46
+ text: "text";
47
+ datetime: "datetime";
48
+ decimal: "decimal";
49
+ json: "json";
50
+ multiple_string: "multiple_string";
51
+ labeled_string: "labeled_string";
52
+ multiple_labeled_string: "multiple_labeled_string";
53
+ multiple_text: "multiple_text";
54
+ multiple_boolean: "multiple_boolean";
55
+ multiple_number: "multiple_number";
56
+ multiple_decimal: "multiple_decimal";
57
+ multiple_datetime: "multiple_datetime";
58
+ multiple_uuid: "multiple_uuid";
59
+ multiple_json: "multiple_json";
60
+ formula: "formula";
61
+ button_trigger_zap: "button_trigger_zap";
62
+ button_continue_zap: "button_continue_zap";
63
+ multiple_email: "multiple_email";
64
+ multiple_link: "multiple_link";
65
+ currency: "currency";
66
+ phone_number: "phone_number";
67
+ ai_formula: "ai_formula";
68
+ linked_record: "linked_record";
69
+ multiple_linked_record: "multiple_linked_record";
70
+ }>;
71
+ name: z.ZodString;
72
+ created_at: z.ZodOptional<z.ZodString>;
73
+ edited_at: z.ZodOptional<z.ZodString>;
74
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
75
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
76
+ is_order_field: z.ZodOptional<z.ZodBoolean>;
77
+ is_filter_field: z.ZodOptional<z.ZodBoolean>;
78
+ is_selected_field: z.ZodOptional<z.ZodBoolean>;
79
+ }, z.core.$strip>;
80
+ export type FieldApiItem = z.infer<typeof FieldApiItemSchema>;
81
+ export declare const ListTableFieldsApiResponseSchema: z.ZodObject<{
82
+ data: z.ZodArray<z.ZodObject<{
83
+ id: z.ZodNumber;
84
+ type: z.ZodEnum<{
85
+ string: "string";
86
+ number: "number";
87
+ boolean: "boolean";
88
+ link: "link";
89
+ email: "email";
90
+ uuid: "uuid";
91
+ text: "text";
92
+ datetime: "datetime";
93
+ decimal: "decimal";
94
+ json: "json";
95
+ multiple_string: "multiple_string";
96
+ labeled_string: "labeled_string";
97
+ multiple_labeled_string: "multiple_labeled_string";
98
+ multiple_text: "multiple_text";
99
+ multiple_boolean: "multiple_boolean";
100
+ multiple_number: "multiple_number";
101
+ multiple_decimal: "multiple_decimal";
102
+ multiple_datetime: "multiple_datetime";
103
+ multiple_uuid: "multiple_uuid";
104
+ multiple_json: "multiple_json";
105
+ formula: "formula";
106
+ button_trigger_zap: "button_trigger_zap";
107
+ button_continue_zap: "button_continue_zap";
108
+ multiple_email: "multiple_email";
109
+ multiple_link: "multiple_link";
110
+ currency: "currency";
111
+ phone_number: "phone_number";
112
+ ai_formula: "ai_formula";
113
+ linked_record: "linked_record";
114
+ multiple_linked_record: "multiple_linked_record";
115
+ }>;
116
+ name: z.ZodString;
117
+ created_at: z.ZodOptional<z.ZodString>;
118
+ edited_at: z.ZodOptional<z.ZodString>;
119
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
120
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
121
+ is_order_field: z.ZodOptional<z.ZodBoolean>;
122
+ is_filter_field: z.ZodOptional<z.ZodBoolean>;
123
+ is_selected_field: z.ZodOptional<z.ZodBoolean>;
124
+ }, z.core.$strip>>;
125
+ }, z.core.$strip>;
126
+ export type ListTableFieldsApiResponse = z.infer<typeof ListTableFieldsApiResponseSchema>;
127
+ export declare const FieldItemSchema: z.ZodObject<{
128
+ id: z.ZodString;
129
+ type: z.ZodEnum<{
130
+ string: "string";
131
+ number: "number";
132
+ boolean: "boolean";
133
+ link: "link";
134
+ email: "email";
135
+ uuid: "uuid";
136
+ text: "text";
137
+ datetime: "datetime";
138
+ decimal: "decimal";
139
+ json: "json";
140
+ multiple_string: "multiple_string";
141
+ labeled_string: "labeled_string";
142
+ multiple_labeled_string: "multiple_labeled_string";
143
+ multiple_text: "multiple_text";
144
+ multiple_boolean: "multiple_boolean";
145
+ multiple_number: "multiple_number";
146
+ multiple_decimal: "multiple_decimal";
147
+ multiple_datetime: "multiple_datetime";
148
+ multiple_uuid: "multiple_uuid";
149
+ multiple_json: "multiple_json";
150
+ formula: "formula";
151
+ button_trigger_zap: "button_trigger_zap";
152
+ button_continue_zap: "button_continue_zap";
153
+ multiple_email: "multiple_email";
154
+ multiple_link: "multiple_link";
155
+ currency: "currency";
156
+ phone_number: "phone_number";
157
+ ai_formula: "ai_formula";
158
+ linked_record: "linked_record";
159
+ multiple_linked_record: "multiple_linked_record";
160
+ }>;
161
+ name: z.ZodString;
162
+ created_at: z.ZodOptional<z.ZodString>;
163
+ edited_at: z.ZodOptional<z.ZodString>;
164
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
165
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
166
+ }, z.core.$strip>;
167
+ export type FieldItem = z.infer<typeof FieldItemSchema>;
168
+ export declare const ListTableFieldsOptionsSchema: z.ZodObject<{
169
+ tableId: z.ZodString;
170
+ fieldKeys: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
171
+ }, z.core.$strip>;
172
+ export type ListTableFieldsOptions = z.infer<typeof ListTableFieldsOptionsSchema> & FunctionOptions;
173
+ export interface ListTableFieldsResult {
174
+ data: FieldItem[];
175
+ }
176
+ export type ListTableFieldsError = ZapierAuthenticationError | ZapierApiError | ZapierValidationError | ZapierUnknownError;
177
+ export interface ListTableFieldsSdkFunction {
178
+ listTableFields: (options: ListTableFieldsOptions) => Promise<ListTableFieldsResult>;
179
+ }
180
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../../src/plugins/tables/listTableFields/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EACV,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAW7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAE3C,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,gCAAgC,CACxC,CAAC;AAYF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAM1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,4BAA4B;;;iBAaH,CAAC;AAEvC,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC1C,OAAO,4BAA4B,CACpC,GACC,eAAe,CAAC;AAGlB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,SAAS,EAAE,CAAC;CACnB;AAGD,MAAM,MAAM,oBAAoB,GAC5B,yBAAyB,GACzB,cAAc,GACd,qBAAqB,GACrB,kBAAkB,CAAC;AAGvB,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,CACf,OAAO,EAAE,sBAAsB,KAC5B,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACrC"}
@@ -0,0 +1,77 @@
1
+ import { z } from "zod";
2
+ import { withFormatter } from "../../../utils/schema-utils";
3
+ export const FieldTypeSchema = z.enum([
4
+ "string",
5
+ "multiple_string",
6
+ "labeled_string",
7
+ "multiple_labeled_string",
8
+ "text",
9
+ "multiple_text",
10
+ "boolean",
11
+ "multiple_boolean",
12
+ "number",
13
+ "multiple_number",
14
+ "decimal",
15
+ "multiple_decimal",
16
+ "datetime",
17
+ "multiple_datetime",
18
+ "uuid",
19
+ "multiple_uuid",
20
+ "json",
21
+ "multiple_json",
22
+ "formula",
23
+ "button_trigger_zap",
24
+ "button_continue_zap",
25
+ "email",
26
+ "multiple_email",
27
+ "link",
28
+ "multiple_link",
29
+ "currency",
30
+ "phone_number",
31
+ "ai_formula",
32
+ "linked_record",
33
+ "multiple_linked_record",
34
+ ]);
35
+ export const FieldApiItemSchema = z.object({
36
+ id: z.number(),
37
+ type: FieldTypeSchema,
38
+ name: z.string(),
39
+ created_at: z.string().optional(),
40
+ edited_at: z.string().optional(),
41
+ options: z.record(z.string(), z.unknown()).optional(),
42
+ config: z.record(z.string(), z.unknown()).optional(),
43
+ is_order_field: z.boolean().optional(),
44
+ is_filter_field: z.boolean().optional(),
45
+ is_selected_field: z.boolean().optional(),
46
+ });
47
+ export const ListTableFieldsApiResponseSchema = z.object({
48
+ data: z.array(FieldApiItemSchema),
49
+ });
50
+ const FieldItemSchemaBase = z.object({
51
+ id: z.string(),
52
+ type: FieldTypeSchema,
53
+ name: z.string(),
54
+ created_at: z.string().optional(),
55
+ edited_at: z.string().optional(),
56
+ options: z.record(z.string(), z.unknown()).optional(),
57
+ config: z.record(z.string(), z.unknown()).optional(),
58
+ });
59
+ export const FieldItemSchema = withFormatter(FieldItemSchemaBase, {
60
+ format: (item) => ({
61
+ title: item.name,
62
+ id: item.id,
63
+ details: [{ text: `Type: ${item.type}`, style: "dim" }],
64
+ }),
65
+ });
66
+ export const ListTableFieldsOptionsSchema = z
67
+ .object({
68
+ tableId: z
69
+ .string()
70
+ .regex(/^[A-Z0-9]{26}$/, "Table ID must be a valid ULID")
71
+ .describe("The unique identifier of the table"),
72
+ fieldKeys: z
73
+ .array(z.union([z.string(), z.number()]))
74
+ .optional()
75
+ .describe('Filter by specific fields. Accepts field names (e.g., "Email") or IDs (e.g., "f6", "6", or 6).'),
76
+ })
77
+ .describe("List fields for a table");
@@ -0,0 +1,24 @@
1
+ import type { GetContextType, Plugin } from "../../../types/plugin";
2
+ import { ListTableRecordsOptionsSchema, type ListTableRecordsOptions, type RecordItem } from "./schemas";
3
+ import type { ApiPluginProvides } from "../../api";
4
+ import type { EventEmissionContext } from "../../eventEmission";
5
+ export interface ListTableRecordsPluginProvides {
6
+ listTableRecords: (options: ListTableRecordsOptions) => Promise<{
7
+ data: RecordItem[];
8
+ nextCursor?: string;
9
+ }> & AsyncIterable<{
10
+ data: RecordItem[];
11
+ nextCursor?: string;
12
+ }> & {
13
+ items(): AsyncIterable<RecordItem>;
14
+ };
15
+ context: {
16
+ meta: {
17
+ listTableRecords: {
18
+ inputSchema: typeof ListTableRecordsOptionsSchema;
19
+ };
20
+ };
21
+ };
22
+ }
23
+ export declare const listTableRecordsPlugin: Plugin<{}, GetContextType<ApiPluginProvides> & EventEmissionContext, ListTableRecordsPluginProvides>;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/tables/listTableRecords/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAEL,6BAA6B,EAE7B,KAAK,uBAAuB,EAC5B,KAAK,UAAU,EAChB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AA4BhE,MAAM,WAAW,8BAA8B;IAC7C,gBAAgB,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,OAAO,CAAC;QAC9D,IAAI,EAAE,UAAU,EAAE,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,GACA,aAAa,CAAC;QAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG;QAC3D,KAAK,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;KACpC,CAAC;IACJ,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,gBAAgB,EAAE;gBAChB,WAAW,EAAE,OAAO,6BAA6B,CAAC;aACnD,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAM,CACzC,EAAE,EACF,cAAc,CAAC,iBAAiB,CAAC,GAAG,oBAAoB,EACxD,8BAA8B,CA6G/B,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { createPaginatedFunction } from "../../../utils/function-utils";
2
+ import { ListTableRecordsApiResponseSchema, ListTableRecordsOptionsSchema, RecordItemSchema, } from "./schemas";
3
+ import { createTelemetryCallback } from "../../../utils/telemetry-utils";
4
+ import { stripPageSuffix } from "../../../utils/string-utils";
5
+ import { ZapierAuthenticationError } from "../../../types/errors";
6
+ import { tableIdResolver, tableFiltersResolver, tableSortResolver, } from "../../../resolvers";
7
+ import { tableRecordFormatter } from "../../../formatters";
8
+ import { createFieldKeyTranslator, transformRecordItem, throwOnResponseErrors, } from "../utils";
9
+ function extractNextCursor(meta) {
10
+ if (!meta?.pagination?.has_more || !meta.pagination.end_cursor) {
11
+ return undefined;
12
+ }
13
+ return meta.pagination.end_cursor;
14
+ }
15
+ export const listTableRecordsPlugin = ({ context }) => {
16
+ async function listTableRecordsPage(options) {
17
+ const { api } = context;
18
+ const translator = await createFieldKeyTranslator({
19
+ api,
20
+ tableId: options.tableId,
21
+ keyMode: options.keyMode,
22
+ });
23
+ const body = {
24
+ limit: options.pageSize,
25
+ };
26
+ if (options.filters) {
27
+ body.filters = options.filters.map((f) => ({
28
+ key: translator.translateFieldKey(f.fieldKey),
29
+ operator: f.operator,
30
+ value: f.value,
31
+ }));
32
+ }
33
+ if (options.sort) {
34
+ body.orders = [
35
+ {
36
+ key: translator.translateFieldKey(options.sort.fieldKey),
37
+ direction: options.sort.direction,
38
+ },
39
+ ];
40
+ }
41
+ if (options.cursor) {
42
+ body.cursor_query = {
43
+ query_type: "window",
44
+ start_cursor: options.cursor,
45
+ };
46
+ }
47
+ const rawResponse = await api.post(`/tables/api/v1/tables/${options.tableId}/records/query`, body, {
48
+ searchParams: { allow_nested_queries: "true" },
49
+ customErrorHandler: ({ status }) => {
50
+ if (status === 401) {
51
+ return new ZapierAuthenticationError(`Authentication failed. Your token may not have permission to access this table or may be expired. (HTTP ${status})`, { statusCode: status });
52
+ }
53
+ if (status === 403) {
54
+ return new ZapierAuthenticationError(`Access forbidden. Your token may not have the required scopes to access this table. (HTTP ${status})`, { statusCode: status });
55
+ }
56
+ if (status === 404) {
57
+ return new Error(`Table not found: ${options.tableId}`);
58
+ }
59
+ return undefined;
60
+ },
61
+ authRequired: true,
62
+ });
63
+ throwOnResponseErrors(rawResponse);
64
+ const response = ListTableRecordsApiResponseSchema.parse(rawResponse);
65
+ return {
66
+ data: response.data.map((item) => ({
67
+ ...transformRecordItem(item),
68
+ data: translator.translateOutput(item.data),
69
+ })),
70
+ nextCursor: extractNextCursor(response.meta),
71
+ };
72
+ }
73
+ const methodName = stripPageSuffix(listTableRecordsPage.name);
74
+ const listTableRecordsDefinition = createPaginatedFunction(listTableRecordsPage, ListTableRecordsOptionsSchema, createTelemetryCallback(context.eventEmission.emitMethodCalled, methodName), methodName);
75
+ return {
76
+ listTableRecords: listTableRecordsDefinition,
77
+ context: {
78
+ meta: {
79
+ listTableRecords: {
80
+ categories: ["table"],
81
+ type: "list",
82
+ itemType: "Record",
83
+ inputSchema: ListTableRecordsOptionsSchema,
84
+ outputSchema: RecordItemSchema,
85
+ resolvers: {
86
+ tableId: tableIdResolver,
87
+ filters: tableFiltersResolver,
88
+ sort: tableSortResolver,
89
+ },
90
+ formatter: tableRecordFormatter,
91
+ },
92
+ },
93
+ },
94
+ };
95
+ };