@zudello/modelcontextprotocol 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +115 -512
- package/dist/services/zudello/admin.d.ts +124 -74
- package/dist/services/zudello/admin.d.ts.map +1 -1
- package/dist/services/zudello/admin.js +443 -112
- package/dist/services/zudello/admin.js.map +1 -1
- package/dist/services/zudello/document-context.js +2 -2
- package/dist/services/zudello/document-context.js.map +1 -1
- package/dist/services/zudello/inboxes.d.ts +88 -7
- package/dist/services/zudello/inboxes.d.ts.map +1 -1
- package/dist/services/zudello/inboxes.js +317 -34
- package/dist/services/zudello/inboxes.js.map +1 -1
- package/dist/services/zudello/users.d.ts +36 -6
- package/dist/services/zudello/users.d.ts.map +1 -1
- package/dist/services/zudello/users.js +183 -82
- package/dist/services/zudello/users.js.map +1 -1
- package/dist/tools/admin/datasets/create-dataset.d.ts +35 -7
- package/dist/tools/admin/datasets/create-dataset.d.ts.map +1 -1
- package/dist/tools/admin/datasets/create-dataset.js +59 -20
- package/dist/tools/admin/datasets/create-dataset.js.map +1 -1
- package/dist/tools/admin/datasets/get-dataset.d.ts +1 -1
- package/dist/tools/admin/datasets/get-dataset.d.ts.map +1 -1
- package/dist/tools/admin/datasets/get-dataset.js +8 -2
- package/dist/tools/admin/datasets/get-dataset.js.map +1 -1
- package/dist/tools/admin/datasets/list-datasets.d.ts +2 -4
- package/dist/tools/admin/datasets/list-datasets.d.ts.map +1 -1
- package/dist/tools/admin/datasets/list-datasets.js +21 -11
- package/dist/tools/admin/datasets/list-datasets.js.map +1 -1
- package/dist/tools/admin/datasets/update-dataset.d.ts +39 -6
- package/dist/tools/admin/datasets/update-dataset.d.ts.map +1 -1
- package/dist/tools/admin/datasets/update-dataset.js +39 -17
- package/dist/tools/admin/datasets/update-dataset.js.map +1 -1
- package/dist/tools/admin/fields/create-field.d.ts +7 -17
- package/dist/tools/admin/fields/create-field.d.ts.map +1 -1
- package/dist/tools/admin/fields/create-field.js +59 -28
- package/dist/tools/admin/fields/create-field.js.map +1 -1
- package/dist/tools/admin/fields/get-field.d.ts +1 -1
- package/dist/tools/admin/fields/get-field.d.ts.map +1 -1
- package/dist/tools/admin/fields/get-field.js +9 -2
- package/dist/tools/admin/fields/get-field.js.map +1 -1
- package/dist/tools/admin/fields/list-fields.d.ts +3 -5
- package/dist/tools/admin/fields/list-fields.d.ts.map +1 -1
- package/dist/tools/admin/fields/list-fields.js +21 -13
- package/dist/tools/admin/fields/list-fields.js.map +1 -1
- package/dist/tools/admin/fields/update-field.d.ts +11 -6
- package/dist/tools/admin/fields/update-field.d.ts.map +1 -1
- package/dist/tools/admin/fields/update-field.js +23 -17
- package/dist/tools/admin/fields/update-field.js.map +1 -1
- package/dist/tools/admin/quick-actions/create-quick-action.d.ts +9 -9
- package/dist/tools/admin/quick-actions/create-quick-action.d.ts.map +1 -1
- package/dist/tools/admin/quick-actions/create-quick-action.js +33 -20
- package/dist/tools/admin/quick-actions/create-quick-action.js.map +1 -1
- package/dist/tools/admin/quick-actions/get-quick-action.d.ts +1 -1
- package/dist/tools/admin/quick-actions/get-quick-action.d.ts.map +1 -1
- package/dist/tools/admin/quick-actions/get-quick-action.js +3 -2
- package/dist/tools/admin/quick-actions/get-quick-action.js.map +1 -1
- package/dist/tools/admin/quick-actions/list-quick-actions.d.ts +4 -3
- package/dist/tools/admin/quick-actions/list-quick-actions.d.ts.map +1 -1
- package/dist/tools/admin/quick-actions/list-quick-actions.js +22 -12
- package/dist/tools/admin/quick-actions/list-quick-actions.js.map +1 -1
- package/dist/tools/admin/quick-actions/trigger-quick-action.d.ts +4 -6
- package/dist/tools/admin/quick-actions/trigger-quick-action.d.ts.map +1 -1
- package/dist/tools/admin/quick-actions/trigger-quick-action.js +31 -12
- package/dist/tools/admin/quick-actions/trigger-quick-action.js.map +1 -1
- package/dist/tools/admin/quick-actions/update-quick-action.d.ts +11 -6
- package/dist/tools/admin/quick-actions/update-quick-action.d.ts.map +1 -1
- package/dist/tools/admin/quick-actions/update-quick-action.js +22 -14
- package/dist/tools/admin/quick-actions/update-quick-action.js.map +1 -1
- package/dist/tools/approvals/get-approval-flows.js +3 -3
- package/dist/tools/approvals/get-approval-flows.js.map +1 -1
- package/dist/tools/automation/get-run-logs-content.d.ts.map +1 -1
- package/dist/tools/automation/get-run-logs-content.js +3 -1
- package/dist/tools/automation/get-run-logs-content.js.map +1 -1
- package/dist/tools/automation/get-run-logs.d.ts.map +1 -1
- package/dist/tools/automation/get-run-logs.js +3 -1
- package/dist/tools/automation/get-run-logs.js.map +1 -1
- package/dist/tools/automation/get-script.d.ts.map +1 -1
- package/dist/tools/automation/get-script.js +3 -1
- package/dist/tools/automation/get-script.js.map +1 -1
- package/dist/tools/automation/get-trigger.d.ts.map +1 -1
- package/dist/tools/automation/get-trigger.js +3 -1
- package/dist/tools/automation/get-trigger.js.map +1 -1
- package/dist/tools/automation/list-scripts.d.ts.map +1 -1
- package/dist/tools/automation/list-scripts.js +5 -1
- package/dist/tools/automation/list-scripts.js.map +1 -1
- package/dist/tools/automation/search-runs.d.ts.map +1 -1
- package/dist/tools/automation/search-runs.js +3 -1
- package/dist/tools/automation/search-runs.js.map +1 -1
- package/dist/tools/config/list-configs.d.ts.map +1 -1
- package/dist/tools/config/list-configs.js +10 -3
- package/dist/tools/config/list-configs.js.map +1 -1
- package/dist/tools/control/initiate-sync.d.ts.map +1 -1
- package/dist/tools/control/initiate-sync.js +13 -3
- package/dist/tools/control/initiate-sync.js.map +1 -1
- package/dist/tools/control/set-trigger-enabled.d.ts.map +1 -1
- package/dist/tools/control/set-trigger-enabled.js +13 -3
- package/dist/tools/control/set-trigger-enabled.js.map +1 -1
- package/dist/tools/core/fetch.d.ts.map +1 -1
- package/dist/tools/core/fetch.js +12 -1
- package/dist/tools/core/fetch.js.map +1 -1
- package/dist/tools/core/push-message.d.ts.map +1 -1
- package/dist/tools/core/push-message.js +3 -1
- package/dist/tools/core/push-message.js.map +1 -1
- package/dist/tools/core/search.d.ts.map +1 -1
- package/dist/tools/core/search.js +28 -1
- package/dist/tools/core/search.js.map +1 -1
- package/dist/tools/document-context/check-contract-pricing.d.ts.map +1 -1
- package/dist/tools/document-context/check-contract-pricing.js +44 -1
- package/dist/tools/document-context/check-contract-pricing.js.map +1 -1
- package/dist/tools/document-context/check-document-budgets.d.ts.map +1 -1
- package/dist/tools/document-context/check-document-budgets.js +34 -1
- package/dist/tools/document-context/check-document-budgets.js.map +1 -1
- package/dist/tools/documents/document-types/create-document-type.d.ts.map +1 -1
- package/dist/tools/documents/document-types/create-document-type.js +24 -1
- package/dist/tools/documents/document-types/create-document-type.js.map +1 -1
- package/dist/tools/documents/document-types/get-document-type.d.ts.map +1 -1
- package/dist/tools/documents/document-types/get-document-type.js +11 -1
- package/dist/tools/documents/document-types/get-document-type.js.map +1 -1
- package/dist/tools/documents/document-types/get-merged-form-metadata.d.ts.map +1 -1
- package/dist/tools/documents/document-types/get-merged-form-metadata.js +13 -1
- package/dist/tools/documents/document-types/get-merged-form-metadata.js.map +1 -1
- package/dist/tools/documents/document-types/list-document-types.d.ts.map +1 -1
- package/dist/tools/documents/document-types/list-document-types.js +14 -1
- package/dist/tools/documents/document-types/list-document-types.js.map +1 -1
- package/dist/tools/documents/document-types/update-document-type.d.ts.map +1 -1
- package/dist/tools/documents/document-types/update-document-type.js +32 -1
- package/dist/tools/documents/document-types/update-document-type.js.map +1 -1
- package/dist/tools/documents/export-templates/create-export-template.d.ts.map +1 -1
- package/dist/tools/documents/export-templates/create-export-template.js +35 -1
- package/dist/tools/documents/export-templates/create-export-template.js.map +1 -1
- package/dist/tools/documents/export-templates/get-export-download-url.d.ts.map +1 -1
- package/dist/tools/documents/export-templates/get-export-download-url.js +6 -1
- package/dist/tools/documents/export-templates/get-export-download-url.js.map +1 -1
- package/dist/tools/documents/export-templates/get-export-template.d.ts.map +1 -1
- package/dist/tools/documents/export-templates/get-export-template.js +3 -2
- package/dist/tools/documents/export-templates/get-export-template.js.map +1 -1
- package/dist/tools/documents/export-templates/list-export-templates.d.ts.map +1 -1
- package/dist/tools/documents/export-templates/list-export-templates.js +12 -2
- package/dist/tools/documents/export-templates/list-export-templates.js.map +1 -1
- package/dist/tools/documents/export-templates/list-exports.d.ts.map +1 -1
- package/dist/tools/documents/export-templates/list-exports.js +6 -1
- package/dist/tools/documents/export-templates/list-exports.js.map +1 -1
- package/dist/tools/documents/export-templates/run-export.d.ts.map +1 -1
- package/dist/tools/documents/export-templates/run-export.js +20 -1
- package/dist/tools/documents/export-templates/run-export.js.map +1 -1
- package/dist/tools/documents/export-templates/update-export-template.d.ts.map +1 -1
- package/dist/tools/documents/export-templates/update-export-template.js +9 -1
- package/dist/tools/documents/export-templates/update-export-template.js.map +1 -1
- package/dist/tools/history/get-history.d.ts.map +1 -1
- package/dist/tools/history/get-history.js +9 -1
- package/dist/tools/history/get-history.js.map +1 -1
- package/dist/tools/inboxes/create-inbox-template.d.ts +1 -1
- package/dist/tools/inboxes/create-inbox-template.d.ts.map +1 -1
- package/dist/tools/inboxes/create-inbox-template.js +26 -1
- package/dist/tools/inboxes/create-inbox-template.js.map +1 -1
- package/dist/tools/inboxes/create-inbox.d.ts +1 -1
- package/dist/tools/inboxes/create-inbox.d.ts.map +1 -1
- package/dist/tools/inboxes/create-inbox.js +22 -1
- package/dist/tools/inboxes/create-inbox.js.map +1 -1
- package/dist/tools/inboxes/fetch-inbox.d.ts +1 -1
- package/dist/tools/inboxes/fetch-inbox.d.ts.map +1 -1
- package/dist/tools/inboxes/fetch-inbox.js +14 -1
- package/dist/tools/inboxes/fetch-inbox.js.map +1 -1
- package/dist/tools/inboxes/get-inbound-domain.d.ts.map +1 -1
- package/dist/tools/inboxes/get-inbound-domain.js +14 -1
- package/dist/tools/inboxes/get-inbound-domain.js.map +1 -1
- package/dist/tools/inboxes/list-inbox-templates.d.ts +1 -1
- package/dist/tools/inboxes/list-inbox-templates.d.ts.map +1 -1
- package/dist/tools/inboxes/list-inbox-templates.js +26 -1
- package/dist/tools/inboxes/list-inbox-templates.js.map +1 -1
- package/dist/tools/inboxes/list-inboxes.d.ts +1 -1
- package/dist/tools/inboxes/list-inboxes.d.ts.map +1 -1
- package/dist/tools/inboxes/list-inboxes.js +22 -1
- package/dist/tools/inboxes/list-inboxes.js.map +1 -1
- package/dist/tools/inboxes/update-inbox-template.d.ts +1 -1
- package/dist/tools/inboxes/update-inbox-template.d.ts.map +1 -1
- package/dist/tools/inboxes/update-inbox-template.js +22 -1
- package/dist/tools/inboxes/update-inbox-template.js.map +1 -1
- package/dist/tools/inboxes/update-inbox.d.ts +1 -1
- package/dist/tools/inboxes/update-inbox.d.ts.map +1 -1
- package/dist/tools/inboxes/update-inbox.js +25 -3
- package/dist/tools/inboxes/update-inbox.js.map +1 -1
- package/dist/tools/index.js +2 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/language/get-language-placeholders.d.ts.map +1 -1
- package/dist/tools/language/get-language-placeholders.js +33 -3
- package/dist/tools/language/get-language-placeholders.js.map +1 -1
- package/dist/tools/language/update-language-placeholders.d.ts.map +1 -1
- package/dist/tools/language/update-language-placeholders.js +21 -4
- package/dist/tools/language/update-language-placeholders.js.map +1 -1
- package/dist/tools/models/list-models.js +2 -2
- package/dist/tools/org-admin/teams/fetch-org-team.d.ts.map +1 -1
- package/dist/tools/org-admin/teams/fetch-org-team.js +15 -1
- package/dist/tools/org-admin/teams/fetch-org-team.js.map +1 -1
- package/dist/tools/org-admin/teams/list-org-teams.d.ts.map +1 -1
- package/dist/tools/org-admin/teams/list-org-teams.js +17 -1
- package/dist/tools/org-admin/teams/list-org-teams.js.map +1 -1
- package/dist/tools/org-admin/teams/update-org-team.d.ts.map +1 -1
- package/dist/tools/org-admin/teams/update-org-team.js +16 -1
- package/dist/tools/org-admin/teams/update-org-team.js.map +1 -1
- package/dist/tools/org-admin/users/assign-user-to-team.d.ts +1 -1
- package/dist/tools/org-admin/users/assign-user-to-team.d.ts.map +1 -1
- package/dist/tools/org-admin/users/assign-user-to-team.js +22 -4
- package/dist/tools/org-admin/users/assign-user-to-team.js.map +1 -1
- package/dist/tools/org-admin/users/create-org-user.d.ts.map +1 -1
- package/dist/tools/org-admin/users/create-org-user.js +15 -1
- package/dist/tools/org-admin/users/create-org-user.js.map +1 -1
- package/dist/tools/org-admin/users/fetch-org-user.d.ts.map +1 -1
- package/dist/tools/org-admin/users/fetch-org-user.js +15 -1
- package/dist/tools/org-admin/users/fetch-org-user.js.map +1 -1
- package/dist/tools/org-admin/users/index.d.ts +1 -1
- package/dist/tools/org-admin/users/index.d.ts.map +1 -1
- package/dist/tools/org-admin/users/index.js +1 -1
- package/dist/tools/org-admin/users/index.js.map +1 -1
- package/dist/tools/org-admin/users/list-org-user-groups.d.ts.map +1 -1
- package/dist/tools/org-admin/users/list-org-user-groups.js +20 -1
- package/dist/tools/org-admin/users/list-org-user-groups.js.map +1 -1
- package/dist/tools/org-admin/users/list-org-users.d.ts.map +1 -1
- package/dist/tools/org-admin/users/list-org-users.js +15 -1
- package/dist/tools/org-admin/users/list-org-users.js.map +1 -1
- package/dist/tools/org-admin/users/update-org-user.d.ts.map +1 -1
- package/dist/tools/org-admin/users/update-org-user.js +12 -1
- package/dist/tools/org-admin/users/update-org-user.js.map +1 -1
- package/dist/tools/resources/get-resources.d.ts.map +1 -1
- package/dist/tools/resources/get-resources.js +12 -3
- package/dist/tools/resources/get-resources.js.map +1 -1
- package/dist/tools/resources/update-or-create-resources.d.ts.map +1 -1
- package/dist/tools/resources/update-or-create-resources.js +36 -5
- package/dist/tools/resources/update-or-create-resources.js.map +1 -1
- package/dist/tools/sentences/create-sentence.d.ts.map +1 -1
- package/dist/tools/sentences/create-sentence.js +22 -1
- package/dist/tools/sentences/create-sentence.js.map +1 -1
- package/dist/tools/sentences/get-sentence-template.d.ts.map +1 -1
- package/dist/tools/sentences/get-sentence-template.js +3 -1
- package/dist/tools/sentences/get-sentence-template.js.map +1 -1
- package/dist/tools/sentences/get-sentence.d.ts.map +1 -1
- package/dist/tools/sentences/get-sentence.js +3 -1
- package/dist/tools/sentences/get-sentence.js.map +1 -1
- package/dist/tools/sentences/list-sentence-resources.d.ts.map +1 -1
- package/dist/tools/sentences/list-sentence-resources.js +11 -1
- package/dist/tools/sentences/list-sentence-resources.js.map +1 -1
- package/dist/tools/sentences/list-sentence-templates.d.ts.map +1 -1
- package/dist/tools/sentences/list-sentence-templates.js +5 -1
- package/dist/tools/sentences/list-sentence-templates.js.map +1 -1
- package/dist/tools/sentences/list-sentences.d.ts.map +1 -1
- package/dist/tools/sentences/list-sentences.js +7 -1
- package/dist/tools/sentences/list-sentences.js.map +1 -1
- package/dist/tools/sentences/update-sentence.d.ts.map +1 -1
- package/dist/tools/sentences/update-sentence.js +24 -1
- package/dist/tools/sentences/update-sentence.js.map +1 -1
- package/dist/tools/sentences/update-sentences-order.d.ts.map +1 -1
- package/dist/tools/sentences/update-sentences-order.js +16 -1
- package/dist/tools/sentences/update-sentences-order.js.map +1 -1
- package/dist/tools/users/get-user-groups.d.ts.map +1 -1
- package/dist/tools/users/get-user-groups.js +28 -3
- package/dist/tools/users/get-user-groups.js.map +1 -1
- package/dist/tools/users/get-users.d.ts.map +1 -1
- package/dist/tools/users/get-users.js +34 -3
- package/dist/tools/users/get-users.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,264 +1,595 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Admin service functions for Zudello MCP Server
|
|
3
|
-
* Handles datasets,
|
|
3
|
+
* Handles datasets, field settings, and quick actions
|
|
4
|
+
* Uses General Store API with resource_type parameter
|
|
4
5
|
*/
|
|
5
6
|
import { buildZudelloRequest } from "./core.js";
|
|
6
7
|
import { logger } from "../../utils/logger.js";
|
|
8
|
+
// ============================================================================
|
|
7
9
|
// Dataset Functions
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* List all datasets with simplified response
|
|
13
|
+
*/
|
|
8
14
|
export async function listZudelloDatasets(authContext, options = {}) {
|
|
9
15
|
try {
|
|
10
16
|
const { headers, apiBase } = buildZudelloRequest(authContext);
|
|
11
|
-
const params = new URLSearchParams(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
17
|
+
const params = new URLSearchParams({
|
|
18
|
+
resource_type: "dataset",
|
|
19
|
+
});
|
|
20
|
+
const url = `${apiBase}/general-store/api/v1/resources/?${params.toString()}`;
|
|
21
|
+
logger.info("Zudello list datasets request", { url, includeColumns: options.includeColumns });
|
|
16
22
|
const response = await fetch(url, { method: "GET", headers });
|
|
17
23
|
if (!response.ok) {
|
|
18
|
-
const errorText = await response.text();
|
|
19
|
-
|
|
20
|
-
return { success: false, error: `Failed to list datasets: ${response.statusText}` };
|
|
24
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
25
|
+
throw new Error(`Zudello API error: ${response.status} - ${errorText}`);
|
|
21
26
|
}
|
|
22
27
|
const data = await response.json();
|
|
23
|
-
|
|
28
|
+
logger.info("Zudello list datasets response received", {
|
|
29
|
+
httpStatus: response.status,
|
|
30
|
+
success: data.success,
|
|
31
|
+
datasetCount: Array.isArray(data.data) ? data.data.length : 0,
|
|
32
|
+
});
|
|
33
|
+
if (!data.success) {
|
|
34
|
+
return { success: false, error: data.message || "Failed to list datasets" };
|
|
35
|
+
}
|
|
36
|
+
// Return dataset list with optional column definitions
|
|
37
|
+
const datasets = (data.data || []).map((d) => ({
|
|
38
|
+
uuid: d.uuid,
|
|
39
|
+
name: d.payload?.name || "Unnamed Dataset",
|
|
40
|
+
datasetType: d.payload?.settings?.datasetType || "",
|
|
41
|
+
...(options.includeColumns && { columnDefs: d.payload?.settings?.columnDefs || [] }),
|
|
42
|
+
}));
|
|
43
|
+
return { success: true, data: datasets };
|
|
24
44
|
}
|
|
25
45
|
catch (error) {
|
|
26
46
|
logger.error("listZudelloDatasets error", {}, error);
|
|
27
47
|
return { success: false, error: error.message };
|
|
28
48
|
}
|
|
29
49
|
}
|
|
30
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Get a specific dataset by UUID
|
|
52
|
+
*/
|
|
53
|
+
export async function getZudelloDataset(authContext, datasetUuid) {
|
|
31
54
|
try {
|
|
32
55
|
const { headers, apiBase } = buildZudelloRequest(authContext);
|
|
33
|
-
const
|
|
56
|
+
const params = new URLSearchParams({
|
|
57
|
+
resource_type: "dataset",
|
|
58
|
+
});
|
|
59
|
+
const url = `${apiBase}/general-store/api/v1/resources/${datasetUuid}?${params.toString()}`;
|
|
60
|
+
logger.info("Zudello get dataset request", { url, datasetUuid });
|
|
61
|
+
const response = await fetch(url, { method: "GET", headers });
|
|
34
62
|
if (!response.ok) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
63
|
+
if (response.status === 404) {
|
|
64
|
+
return { success: false, error: `Dataset not found: ${datasetUuid}` };
|
|
65
|
+
}
|
|
66
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
67
|
+
throw new Error(`Zudello API error: ${response.status} - ${errorText}`);
|
|
68
|
+
}
|
|
69
|
+
const data = await response.json();
|
|
70
|
+
logger.info("Zudello get dataset response received", {
|
|
71
|
+
httpStatus: response.status,
|
|
72
|
+
success: data.success,
|
|
73
|
+
hasData: !!data.data,
|
|
74
|
+
});
|
|
75
|
+
if (!data.success || !data.data) {
|
|
76
|
+
return { success: false, error: `Dataset not found: ${datasetUuid}` };
|
|
38
77
|
}
|
|
39
|
-
return { success: true, data:
|
|
78
|
+
return { success: true, data: data.data };
|
|
40
79
|
}
|
|
41
80
|
catch (error) {
|
|
42
|
-
logger.error("getZudelloDataset error", {
|
|
81
|
+
logger.error("getZudelloDataset error", { datasetUuid }, error);
|
|
43
82
|
return { success: false, error: error.message };
|
|
44
83
|
}
|
|
45
84
|
}
|
|
46
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Create a new dataset
|
|
87
|
+
*/
|
|
88
|
+
export async function createZudelloDataset(authContext, name, columnDefs, datasetType = "", onDimensionMismatch) {
|
|
47
89
|
try {
|
|
48
90
|
const { headers, apiBase } = buildZudelloRequest(authContext);
|
|
49
|
-
const
|
|
91
|
+
const params = new URLSearchParams({
|
|
92
|
+
resource_type: "dataset",
|
|
93
|
+
});
|
|
94
|
+
const url = `${apiBase}/general-store/api/v1/resources/?${params.toString()}`;
|
|
95
|
+
const payload = {
|
|
96
|
+
payload: {
|
|
97
|
+
uuid: "",
|
|
98
|
+
name,
|
|
99
|
+
settings: {
|
|
100
|
+
datasetType,
|
|
101
|
+
columnDefs,
|
|
102
|
+
...(onDimensionMismatch && { on_dimension_mismatch: onDimensionMismatch }),
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
logger.info("Zudello create dataset request", {
|
|
107
|
+
url,
|
|
108
|
+
name,
|
|
109
|
+
columnCount: columnDefs.length,
|
|
110
|
+
datasetType,
|
|
111
|
+
});
|
|
112
|
+
const response = await fetch(url, {
|
|
50
113
|
method: "POST",
|
|
51
114
|
headers,
|
|
52
|
-
body: JSON.stringify(
|
|
115
|
+
body: JSON.stringify(payload),
|
|
53
116
|
});
|
|
54
117
|
if (!response.ok) {
|
|
55
|
-
const errorText = await response.text();
|
|
56
|
-
|
|
57
|
-
return { success: false, error: `Failed to create dataset: ${response.statusText}` };
|
|
118
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
119
|
+
throw new Error(`Zudello API error: ${response.status} - ${errorText}`);
|
|
58
120
|
}
|
|
59
|
-
|
|
121
|
+
const data = await response.json();
|
|
122
|
+
logger.info("Zudello create dataset response received", {
|
|
123
|
+
httpStatus: response.status,
|
|
124
|
+
success: data.success,
|
|
125
|
+
uuid: data.data?.uuid,
|
|
126
|
+
});
|
|
127
|
+
if (!data.success) {
|
|
128
|
+
return { success: false, error: data.message || "Failed to create dataset" };
|
|
129
|
+
}
|
|
130
|
+
// Sync payload.uuid with resource uuid
|
|
131
|
+
const createdUuid = data.data?.uuid;
|
|
132
|
+
if (createdUuid) {
|
|
133
|
+
logger.info("Zudello syncing payload.uuid with resource uuid", { createdUuid });
|
|
134
|
+
const syncResult = await updateZudelloDataset(authContext, createdUuid, name, columnDefs, datasetType, onDimensionMismatch);
|
|
135
|
+
if (!syncResult.success) {
|
|
136
|
+
logger.warn("Zudello failed to sync payload.uuid - dataset may be in inconsistent state", {
|
|
137
|
+
createdUuid,
|
|
138
|
+
error: syncResult.error,
|
|
139
|
+
});
|
|
140
|
+
return { success: true, data: data.data };
|
|
141
|
+
}
|
|
142
|
+
return { success: true, data: syncResult.data };
|
|
143
|
+
}
|
|
144
|
+
return { success: true, data: data.data };
|
|
60
145
|
}
|
|
61
146
|
catch (error) {
|
|
62
|
-
logger.error("createZudelloDataset error", {}, error);
|
|
147
|
+
logger.error("createZudelloDataset error", { name }, error);
|
|
63
148
|
return { success: false, error: error.message };
|
|
64
149
|
}
|
|
65
150
|
}
|
|
66
|
-
|
|
151
|
+
/**
|
|
152
|
+
* Update an existing dataset
|
|
153
|
+
*/
|
|
154
|
+
export async function updateZudelloDataset(authContext, datasetUuid, name, columnDefs, datasetType = "", onDimensionMismatch) {
|
|
67
155
|
try {
|
|
68
156
|
const { headers, apiBase } = buildZudelloRequest(authContext);
|
|
69
|
-
const
|
|
70
|
-
|
|
157
|
+
const params = new URLSearchParams({
|
|
158
|
+
resource_type: "dataset",
|
|
159
|
+
});
|
|
160
|
+
const url = `${apiBase}/general-store/api/v1/resources/${datasetUuid}?${params.toString()}`;
|
|
161
|
+
const payload = {
|
|
162
|
+
payload: {
|
|
163
|
+
uuid: datasetUuid,
|
|
164
|
+
name,
|
|
165
|
+
settings: {
|
|
166
|
+
datasetType,
|
|
167
|
+
columnDefs,
|
|
168
|
+
...(onDimensionMismatch && { on_dimension_mismatch: onDimensionMismatch }),
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
logger.info("Zudello update dataset request", {
|
|
173
|
+
url,
|
|
174
|
+
datasetUuid,
|
|
175
|
+
name,
|
|
176
|
+
columnCount: columnDefs.length,
|
|
177
|
+
datasetType,
|
|
178
|
+
});
|
|
179
|
+
const response = await fetch(url, {
|
|
180
|
+
method: "PUT",
|
|
71
181
|
headers,
|
|
72
|
-
body: JSON.stringify(
|
|
182
|
+
body: JSON.stringify(payload),
|
|
73
183
|
});
|
|
74
184
|
if (!response.ok) {
|
|
75
|
-
const errorText = await response.text();
|
|
76
|
-
|
|
77
|
-
|
|
185
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
186
|
+
throw new Error(`Zudello API error: ${response.status} - ${errorText}`);
|
|
187
|
+
}
|
|
188
|
+
const data = await response.json();
|
|
189
|
+
logger.info("Zudello update dataset response received", {
|
|
190
|
+
httpStatus: response.status,
|
|
191
|
+
success: data.success,
|
|
192
|
+
version: data.data?.version,
|
|
193
|
+
});
|
|
194
|
+
if (!data.success) {
|
|
195
|
+
return { success: false, error: data.message || "Failed to update dataset" };
|
|
78
196
|
}
|
|
79
|
-
return { success: true, data:
|
|
197
|
+
return { success: true, data: data.data };
|
|
80
198
|
}
|
|
81
199
|
catch (error) {
|
|
82
|
-
logger.error("updateZudelloDataset error", {
|
|
200
|
+
logger.error("updateZudelloDataset error", { datasetUuid }, error);
|
|
83
201
|
return { success: false, error: error.message };
|
|
84
202
|
}
|
|
85
203
|
}
|
|
86
|
-
//
|
|
87
|
-
|
|
204
|
+
// ============================================================================
|
|
205
|
+
// Field Settings Functions
|
|
206
|
+
// ============================================================================
|
|
207
|
+
/**
|
|
208
|
+
* List all field settings with simplified or full response
|
|
209
|
+
*/
|
|
210
|
+
export async function listZudelloFieldSettings(authContext, options = {}) {
|
|
88
211
|
try {
|
|
89
212
|
const { headers, apiBase } = buildZudelloRequest(authContext);
|
|
90
|
-
const params = new URLSearchParams(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
|
|
213
|
+
const params = new URLSearchParams({
|
|
214
|
+
resource_type: "field_settings",
|
|
215
|
+
});
|
|
216
|
+
const url = `${apiBase}/general-store/api/v1/resources/?${params.toString()}`;
|
|
217
|
+
logger.info("Zudello list field settings request", { url, fullObject: options.fullObject });
|
|
95
218
|
const response = await fetch(url, { method: "GET", headers });
|
|
96
219
|
if (!response.ok) {
|
|
97
|
-
const errorText = await response.text();
|
|
98
|
-
|
|
99
|
-
return { success: false, error: `Failed to list fields: ${response.statusText}` };
|
|
220
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
221
|
+
throw new Error(`Zudello API error: ${response.status} - ${errorText}`);
|
|
100
222
|
}
|
|
101
223
|
const data = await response.json();
|
|
102
|
-
|
|
224
|
+
logger.info("Zudello list field settings response received", {
|
|
225
|
+
httpStatus: response.status,
|
|
226
|
+
success: data.success,
|
|
227
|
+
fieldCount: Array.isArray(data.data) ? data.data.length : 0,
|
|
228
|
+
});
|
|
229
|
+
if (!data.success) {
|
|
230
|
+
return { success: false, error: data.message || "Failed to list field settings" };
|
|
231
|
+
}
|
|
232
|
+
if (options.fullObject) {
|
|
233
|
+
return { success: true, data: data.data || [] };
|
|
234
|
+
}
|
|
235
|
+
// Return simplified summaries
|
|
236
|
+
const summaries = (data.data || []).map((fs) => ({
|
|
237
|
+
uuid: fs.uuid,
|
|
238
|
+
path: fs.payload?.path || "",
|
|
239
|
+
label: fs.payload?.label || "",
|
|
240
|
+
model_name: fs.payload?.model_name || "",
|
|
241
|
+
context: fs.context || {},
|
|
242
|
+
}));
|
|
243
|
+
return { success: true, data: summaries };
|
|
103
244
|
}
|
|
104
245
|
catch (error) {
|
|
105
|
-
logger.error("
|
|
246
|
+
logger.error("listZudelloFieldSettings error", {}, error);
|
|
106
247
|
return { success: false, error: error.message };
|
|
107
248
|
}
|
|
108
249
|
}
|
|
109
|
-
|
|
250
|
+
/**
|
|
251
|
+
* Get a specific field settings by UUID
|
|
252
|
+
*/
|
|
253
|
+
export async function getZudelloFieldSettings(authContext, fieldUuid) {
|
|
110
254
|
try {
|
|
111
255
|
const { headers, apiBase } = buildZudelloRequest(authContext);
|
|
112
|
-
const
|
|
256
|
+
const params = new URLSearchParams({
|
|
257
|
+
resource_type: "field_settings",
|
|
258
|
+
});
|
|
259
|
+
const url = `${apiBase}/general-store/api/v1/resources/${fieldUuid}?${params.toString()}`;
|
|
260
|
+
logger.info("Zudello get field settings request", { url, fieldUuid });
|
|
261
|
+
const response = await fetch(url, { method: "GET", headers });
|
|
113
262
|
if (!response.ok) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
263
|
+
if (response.status === 404) {
|
|
264
|
+
return { success: false, error: `Field settings not found: ${fieldUuid}` };
|
|
265
|
+
}
|
|
266
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
267
|
+
throw new Error(`Zudello API error: ${response.status} - ${errorText}`);
|
|
268
|
+
}
|
|
269
|
+
const data = await response.json();
|
|
270
|
+
logger.info("Zudello get field settings response received", {
|
|
271
|
+
httpStatus: response.status,
|
|
272
|
+
success: data.success,
|
|
273
|
+
hasData: !!data.data,
|
|
274
|
+
});
|
|
275
|
+
if (!data.success || !data.data) {
|
|
276
|
+
return { success: false, error: `Field settings not found: ${fieldUuid}` };
|
|
117
277
|
}
|
|
118
|
-
return { success: true, data:
|
|
278
|
+
return { success: true, data: data.data };
|
|
119
279
|
}
|
|
120
280
|
catch (error) {
|
|
121
|
-
logger.error("
|
|
281
|
+
logger.error("getZudelloFieldSettings error", { fieldUuid }, error);
|
|
122
282
|
return { success: false, error: error.message };
|
|
123
283
|
}
|
|
124
284
|
}
|
|
125
|
-
|
|
285
|
+
/**
|
|
286
|
+
* Create a new field settings
|
|
287
|
+
*/
|
|
288
|
+
export async function createZudelloFieldSettings(authContext, payload, context = {}) {
|
|
126
289
|
try {
|
|
127
290
|
const { headers, apiBase } = buildZudelloRequest(authContext);
|
|
128
|
-
const
|
|
291
|
+
const params = new URLSearchParams({
|
|
292
|
+
resource_type: "field_settings",
|
|
293
|
+
});
|
|
294
|
+
const url = `${apiBase}/general-store/api/v1/resources/?${params.toString()}`;
|
|
295
|
+
const body = {
|
|
296
|
+
payload,
|
|
297
|
+
context,
|
|
298
|
+
};
|
|
299
|
+
logger.info("Zudello create field settings request", {
|
|
300
|
+
url,
|
|
301
|
+
path: payload.path,
|
|
302
|
+
label: payload.label,
|
|
303
|
+
model_name: payload.model_name,
|
|
304
|
+
context,
|
|
305
|
+
});
|
|
306
|
+
const response = await fetch(url, {
|
|
129
307
|
method: "POST",
|
|
130
308
|
headers,
|
|
131
|
-
body: JSON.stringify(
|
|
309
|
+
body: JSON.stringify(body),
|
|
132
310
|
});
|
|
133
311
|
if (!response.ok) {
|
|
134
|
-
const errorText = await response.text();
|
|
135
|
-
|
|
136
|
-
|
|
312
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
313
|
+
throw new Error(`Zudello API error: ${response.status} - ${errorText}`);
|
|
314
|
+
}
|
|
315
|
+
const data = await response.json();
|
|
316
|
+
logger.info("Zudello create field settings response received", {
|
|
317
|
+
httpStatus: response.status,
|
|
318
|
+
success: data.success,
|
|
319
|
+
uuid: data.data?.uuid,
|
|
320
|
+
});
|
|
321
|
+
if (!data.success) {
|
|
322
|
+
return { success: false, error: data.message || "Failed to create field settings" };
|
|
323
|
+
}
|
|
324
|
+
// Sync payload.uuid with resource uuid
|
|
325
|
+
const createdUuid = data.data?.uuid;
|
|
326
|
+
if (createdUuid && !payload.uuid) {
|
|
327
|
+
logger.info("Zudello syncing payload.uuid with resource uuid", { createdUuid });
|
|
328
|
+
const syncResult = await updateZudelloFieldSettings(authContext, createdUuid, { ...payload, uuid: createdUuid }, context);
|
|
329
|
+
if (!syncResult.success) {
|
|
330
|
+
logger.warn("Zudello failed to sync field settings payload.uuid", {
|
|
331
|
+
createdUuid,
|
|
332
|
+
error: syncResult.error,
|
|
333
|
+
});
|
|
334
|
+
return { success: true, data: data.data };
|
|
335
|
+
}
|
|
336
|
+
return { success: true, data: syncResult.data };
|
|
137
337
|
}
|
|
138
|
-
return { success: true, data:
|
|
338
|
+
return { success: true, data: data.data };
|
|
139
339
|
}
|
|
140
340
|
catch (error) {
|
|
141
|
-
logger.error("
|
|
341
|
+
logger.error("createZudelloFieldSettings error", { path: payload.path }, error);
|
|
142
342
|
return { success: false, error: error.message };
|
|
143
343
|
}
|
|
144
344
|
}
|
|
145
|
-
|
|
345
|
+
/**
|
|
346
|
+
* Update an existing field settings
|
|
347
|
+
*/
|
|
348
|
+
export async function updateZudelloFieldSettings(authContext, fieldUuid, payload, context = {}) {
|
|
146
349
|
try {
|
|
147
350
|
const { headers, apiBase } = buildZudelloRequest(authContext);
|
|
148
|
-
const
|
|
149
|
-
|
|
351
|
+
const params = new URLSearchParams({
|
|
352
|
+
resource_type: "field_settings",
|
|
353
|
+
});
|
|
354
|
+
const url = `${apiBase}/general-store/api/v1/resources/${fieldUuid}?${params.toString()}`;
|
|
355
|
+
// Ensure payload.uuid matches the resource uuid
|
|
356
|
+
const body = {
|
|
357
|
+
payload: { ...payload, uuid: fieldUuid },
|
|
358
|
+
context,
|
|
359
|
+
};
|
|
360
|
+
logger.info("Zudello update field settings request", {
|
|
361
|
+
url,
|
|
362
|
+
fieldUuid,
|
|
363
|
+
path: payload.path,
|
|
364
|
+
label: payload.label,
|
|
365
|
+
});
|
|
366
|
+
const response = await fetch(url, {
|
|
367
|
+
method: "PUT",
|
|
150
368
|
headers,
|
|
151
|
-
body: JSON.stringify(
|
|
369
|
+
body: JSON.stringify(body),
|
|
152
370
|
});
|
|
153
371
|
if (!response.ok) {
|
|
154
|
-
const errorText = await response.text();
|
|
155
|
-
|
|
156
|
-
return { success: false, error: `Failed to update field: ${response.statusText}` };
|
|
372
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
373
|
+
throw new Error(`Zudello API error: ${response.status} - ${errorText}`);
|
|
157
374
|
}
|
|
158
|
-
|
|
375
|
+
const data = await response.json();
|
|
376
|
+
logger.info("Zudello update field settings response received", {
|
|
377
|
+
httpStatus: response.status,
|
|
378
|
+
success: data.success,
|
|
379
|
+
version: data.data?.version,
|
|
380
|
+
});
|
|
381
|
+
if (!data.success) {
|
|
382
|
+
return { success: false, error: data.message || "Failed to update field settings" };
|
|
383
|
+
}
|
|
384
|
+
return { success: true, data: data.data };
|
|
159
385
|
}
|
|
160
386
|
catch (error) {
|
|
161
|
-
logger.error("
|
|
387
|
+
logger.error("updateZudelloFieldSettings error", { fieldUuid }, error);
|
|
162
388
|
return { success: false, error: error.message };
|
|
163
389
|
}
|
|
164
390
|
}
|
|
391
|
+
// ============================================================================
|
|
165
392
|
// Quick Action Functions
|
|
166
|
-
|
|
393
|
+
// ============================================================================
|
|
394
|
+
/**
|
|
395
|
+
* List quick actions
|
|
396
|
+
*/
|
|
397
|
+
export async function listZudelloQuickActions(authContext) {
|
|
167
398
|
try {
|
|
168
399
|
const { headers, apiBase } = buildZudelloRequest(authContext);
|
|
169
|
-
const params = new URLSearchParams(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
const
|
|
173
|
-
|
|
400
|
+
const params = new URLSearchParams({
|
|
401
|
+
resource_type: "quick_actions",
|
|
402
|
+
});
|
|
403
|
+
const url = `${apiBase}/general-store/api/v1/resources/?${params.toString()}`;
|
|
404
|
+
logger.info("Zudello list quick actions request", { url });
|
|
174
405
|
const response = await fetch(url, { method: "GET", headers });
|
|
175
406
|
if (!response.ok) {
|
|
176
|
-
|
|
177
|
-
logger.error("listZudelloQuickActions failed", { status: response.status, error: errorText });
|
|
178
|
-
return { success: false, error: `Failed to list quick actions: ${response.statusText}` };
|
|
407
|
+
throw new Error(`Zudello API error: ${response.status} ${response.statusText}`);
|
|
179
408
|
}
|
|
180
409
|
const data = await response.json();
|
|
181
|
-
|
|
410
|
+
logger.info("Zudello list quick actions response received", {
|
|
411
|
+
httpStatus: response.status,
|
|
412
|
+
success: data.success,
|
|
413
|
+
resultCount: Array.isArray(data.data) ? data.data.length : 0,
|
|
414
|
+
});
|
|
415
|
+
return { success: true, data: data.data || [] };
|
|
182
416
|
}
|
|
183
417
|
catch (error) {
|
|
184
418
|
logger.error("listZudelloQuickActions error", {}, error);
|
|
185
419
|
return { success: false, error: error.message };
|
|
186
420
|
}
|
|
187
421
|
}
|
|
188
|
-
|
|
422
|
+
/**
|
|
423
|
+
* Get a single quick action by UUID
|
|
424
|
+
*/
|
|
425
|
+
export async function getZudelloQuickAction(authContext, quickActionUuid) {
|
|
189
426
|
try {
|
|
190
427
|
const { headers, apiBase } = buildZudelloRequest(authContext);
|
|
191
|
-
const
|
|
428
|
+
const params = new URLSearchParams({
|
|
429
|
+
resource_type: "quick_actions",
|
|
430
|
+
});
|
|
431
|
+
const url = `${apiBase}/general-store/api/v1/resources/${quickActionUuid}?${params.toString()}`;
|
|
432
|
+
logger.info("Zudello get quick action request", { url, quickActionUuid });
|
|
433
|
+
const response = await fetch(url, { method: "GET", headers });
|
|
192
434
|
if (!response.ok) {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
435
|
+
if (response.status === 404) {
|
|
436
|
+
return { success: false, error: `Quick action not found: ${quickActionUuid}` };
|
|
437
|
+
}
|
|
438
|
+
throw new Error(`Zudello API error: ${response.status} ${response.statusText}`);
|
|
439
|
+
}
|
|
440
|
+
const data = await response.json();
|
|
441
|
+
logger.info("Zudello get quick action response received", {
|
|
442
|
+
httpStatus: response.status,
|
|
443
|
+
success: data.success,
|
|
444
|
+
hasData: !!data.data,
|
|
445
|
+
});
|
|
446
|
+
if (!data.success || !data.data) {
|
|
447
|
+
return { success: false, error: `Quick action not found with UUID: ${quickActionUuid}` };
|
|
196
448
|
}
|
|
197
|
-
return { success: true, data:
|
|
449
|
+
return { success: true, data: data.data };
|
|
198
450
|
}
|
|
199
451
|
catch (error) {
|
|
200
|
-
logger.error("getZudelloQuickAction error", {
|
|
452
|
+
logger.error("getZudelloQuickAction error", { quickActionUuid }, error);
|
|
201
453
|
return { success: false, error: error.message };
|
|
202
454
|
}
|
|
203
455
|
}
|
|
204
|
-
|
|
456
|
+
/**
|
|
457
|
+
* Create a new quick action
|
|
458
|
+
*/
|
|
459
|
+
export async function createZudelloQuickAction(authContext, payload) {
|
|
205
460
|
try {
|
|
206
461
|
const { headers, apiBase } = buildZudelloRequest(authContext);
|
|
207
|
-
const
|
|
462
|
+
const params = new URLSearchParams({
|
|
463
|
+
resource_type: "quick_actions",
|
|
464
|
+
});
|
|
465
|
+
const url = `${apiBase}/general-store/api/v1/resources/?${params.toString()}`;
|
|
466
|
+
const body = { payload };
|
|
467
|
+
logger.info("Zudello create quick action request", {
|
|
468
|
+
url,
|
|
469
|
+
key: payload.key,
|
|
470
|
+
name: payload.name,
|
|
471
|
+
});
|
|
472
|
+
const response = await fetch(url, {
|
|
208
473
|
method: "POST",
|
|
209
474
|
headers,
|
|
210
|
-
body: JSON.stringify(
|
|
475
|
+
body: JSON.stringify(body),
|
|
211
476
|
});
|
|
212
477
|
if (!response.ok) {
|
|
213
|
-
const errorText = await response.text();
|
|
214
|
-
|
|
215
|
-
return { success: false, error: `Failed to create quick action: ${response.statusText}` };
|
|
478
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
479
|
+
throw new Error(`Zudello API error: ${response.status} - ${errorText}`);
|
|
216
480
|
}
|
|
217
|
-
|
|
481
|
+
const data = await response.json();
|
|
482
|
+
logger.info("Zudello create quick action response received", {
|
|
483
|
+
httpStatus: response.status,
|
|
484
|
+
success: data.success,
|
|
485
|
+
uuid: data.data?.uuid,
|
|
486
|
+
});
|
|
487
|
+
if (!data.success) {
|
|
488
|
+
return { success: false, error: data.message || "Failed to create quick action" };
|
|
489
|
+
}
|
|
490
|
+
return { success: true, data: data.data };
|
|
218
491
|
}
|
|
219
492
|
catch (error) {
|
|
220
|
-
logger.error("createZudelloQuickAction error", {}, error);
|
|
493
|
+
logger.error("createZudelloQuickAction error", { key: payload.key }, error);
|
|
221
494
|
return { success: false, error: error.message };
|
|
222
495
|
}
|
|
223
496
|
}
|
|
224
|
-
|
|
497
|
+
/**
|
|
498
|
+
* Update an existing quick action
|
|
499
|
+
*/
|
|
500
|
+
export async function updateZudelloQuickAction(authContext, quickActionUuid, payload) {
|
|
225
501
|
try {
|
|
226
502
|
const { headers, apiBase } = buildZudelloRequest(authContext);
|
|
227
|
-
const
|
|
228
|
-
|
|
503
|
+
const params = new URLSearchParams({
|
|
504
|
+
resource_type: "quick_actions",
|
|
505
|
+
});
|
|
506
|
+
const url = `${apiBase}/general-store/api/v1/resources/${quickActionUuid}?${params.toString()}`;
|
|
507
|
+
const body = { payload };
|
|
508
|
+
logger.info("Zudello update quick action request", {
|
|
509
|
+
url,
|
|
510
|
+
quickActionUuid,
|
|
511
|
+
key: payload.key,
|
|
512
|
+
name: payload.name,
|
|
513
|
+
});
|
|
514
|
+
const response = await fetch(url, {
|
|
515
|
+
method: "PUT",
|
|
229
516
|
headers,
|
|
230
|
-
body: JSON.stringify(
|
|
517
|
+
body: JSON.stringify(body),
|
|
231
518
|
});
|
|
232
519
|
if (!response.ok) {
|
|
233
|
-
const errorText = await response.text();
|
|
234
|
-
|
|
235
|
-
|
|
520
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
521
|
+
throw new Error(`Zudello API error: ${response.status} - ${errorText}`);
|
|
522
|
+
}
|
|
523
|
+
const data = await response.json();
|
|
524
|
+
logger.info("Zudello update quick action response received", {
|
|
525
|
+
httpStatus: response.status,
|
|
526
|
+
success: data.success,
|
|
527
|
+
version: data.data?.version,
|
|
528
|
+
});
|
|
529
|
+
if (!data.success) {
|
|
530
|
+
return { success: false, error: data.message || "Failed to update quick action" };
|
|
236
531
|
}
|
|
237
|
-
return { success: true, data:
|
|
532
|
+
return { success: true, data: data.data };
|
|
238
533
|
}
|
|
239
534
|
catch (error) {
|
|
240
|
-
logger.error("updateZudelloQuickAction error", {
|
|
535
|
+
logger.error("updateZudelloQuickAction error", { quickActionUuid }, error);
|
|
241
536
|
return { success: false, error: error.message };
|
|
242
537
|
}
|
|
243
538
|
}
|
|
244
|
-
|
|
539
|
+
/**
|
|
540
|
+
* Trigger a quick action on one or more documents
|
|
541
|
+
* This fires a button event that sentences can listen to
|
|
542
|
+
*/
|
|
543
|
+
export async function triggerZudelloQuickAction(authContext, key, documentUuids) {
|
|
245
544
|
try {
|
|
246
545
|
const { headers, apiBase } = buildZudelloRequest(authContext);
|
|
247
|
-
const
|
|
546
|
+
const url = `${apiBase}/team-data/v1/resources/button`;
|
|
547
|
+
const body = {
|
|
548
|
+
key,
|
|
549
|
+
uuids: documentUuids,
|
|
550
|
+
};
|
|
551
|
+
logger.info("Zudello trigger quick action request", {
|
|
552
|
+
url,
|
|
553
|
+
key,
|
|
554
|
+
documentCount: documentUuids.length,
|
|
555
|
+
});
|
|
556
|
+
const response = await fetch(url, {
|
|
248
557
|
method: "POST",
|
|
249
558
|
headers,
|
|
250
|
-
body: JSON.stringify(
|
|
559
|
+
body: JSON.stringify(body),
|
|
251
560
|
});
|
|
252
561
|
if (!response.ok) {
|
|
253
|
-
const errorText = await response.text();
|
|
254
|
-
|
|
255
|
-
return { success: false, error: `Failed to trigger quick action: ${response.statusText}` };
|
|
562
|
+
const errorText = await response.text().catch(() => "Unknown error");
|
|
563
|
+
throw new Error(`Zudello API error: ${response.status} - ${errorText}`);
|
|
256
564
|
}
|
|
257
|
-
|
|
565
|
+
const data = await response.json();
|
|
566
|
+
logger.info("Zudello trigger quick action response received", {
|
|
567
|
+
httpStatus: response.status,
|
|
568
|
+
success: data.success,
|
|
569
|
+
succeeded: data.succeeded?.length || 0,
|
|
570
|
+
failed: data.failed?.length || 0,
|
|
571
|
+
});
|
|
572
|
+
return {
|
|
573
|
+
success: true,
|
|
574
|
+
data: {
|
|
575
|
+
success: data.success,
|
|
576
|
+
status: data.status,
|
|
577
|
+
succeeded: data.succeeded || [],
|
|
578
|
+
failed: data.failed || [],
|
|
579
|
+
},
|
|
580
|
+
};
|
|
258
581
|
}
|
|
259
582
|
catch (error) {
|
|
260
|
-
logger.error("triggerZudelloQuickAction error", {
|
|
583
|
+
logger.error("triggerZudelloQuickAction error", { key }, error);
|
|
261
584
|
return { success: false, error: error.message };
|
|
262
585
|
}
|
|
263
586
|
}
|
|
587
|
+
// ============================================================================
|
|
588
|
+
// Legacy Aliases (for backward compatibility)
|
|
589
|
+
// ============================================================================
|
|
590
|
+
// These aliases maintain backward compatibility with old function names
|
|
591
|
+
export const listZudelloFields = listZudelloFieldSettings;
|
|
592
|
+
export const getZudelloField = getZudelloFieldSettings;
|
|
593
|
+
export const createZudelloField = createZudelloFieldSettings;
|
|
594
|
+
export const updateZudelloField = updateZudelloFieldSettings;
|
|
264
595
|
//# sourceMappingURL=admin.js.map
|