zudello-chat-sdk 0.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 +325 -0
- package/dist/cjs/client.js +124 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/constants.js +578 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/errors.js +195 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/http/client.js +218 -0
- package/dist/cjs/http/client.js.map +1 -0
- package/dist/cjs/index.js +80 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/modules/approvals.js +90 -0
- package/dist/cjs/modules/approvals.js.map +1 -0
- package/dist/cjs/modules/automation.js +110 -0
- package/dist/cjs/modules/automation.js.map +1 -0
- package/dist/cjs/modules/config.js +264 -0
- package/dist/cjs/modules/config.js.map +1 -0
- package/dist/cjs/modules/datasets.js +103 -0
- package/dist/cjs/modules/datasets.js.map +1 -0
- package/dist/cjs/modules/exports.js +126 -0
- package/dist/cjs/modules/exports.js.map +1 -0
- package/dist/cjs/modules/inboxes.js +99 -0
- package/dist/cjs/modules/inboxes.js.map +1 -0
- package/dist/cjs/modules/models.js +105 -0
- package/dist/cjs/modules/models.js.map +1 -0
- package/dist/cjs/modules/org.js +335 -0
- package/dist/cjs/modules/org.js.map +1 -0
- package/dist/cjs/modules/quick-actions.js +71 -0
- package/dist/cjs/modules/quick-actions.js.map +1 -0
- package/dist/cjs/modules/resources.js +236 -0
- package/dist/cjs/modules/resources.js.map +1 -0
- package/dist/cjs/modules/search.js +188 -0
- package/dist/cjs/modules/search.js.map +1 -0
- package/dist/cjs/modules/sentences.js +155 -0
- package/dist/cjs/modules/sentences.js.map +1 -0
- package/dist/cjs/modules/users.js +120 -0
- package/dist/cjs/modules/users.js.map +1 -0
- package/dist/cjs/types.js +8 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/client.js +120 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/constants.js +565 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/errors.js +183 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/http/client.js +214 -0
- package/dist/esm/http/client.js.map +1 -0
- package/dist/esm/index.js +49 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/modules/approvals.js +86 -0
- package/dist/esm/modules/approvals.js.map +1 -0
- package/dist/esm/modules/automation.js +106 -0
- package/dist/esm/modules/automation.js.map +1 -0
- package/dist/esm/modules/config.js +260 -0
- package/dist/esm/modules/config.js.map +1 -0
- package/dist/esm/modules/datasets.js +99 -0
- package/dist/esm/modules/datasets.js.map +1 -0
- package/dist/esm/modules/exports.js +122 -0
- package/dist/esm/modules/exports.js.map +1 -0
- package/dist/esm/modules/inboxes.js +95 -0
- package/dist/esm/modules/inboxes.js.map +1 -0
- package/dist/esm/modules/models.js +101 -0
- package/dist/esm/modules/models.js.map +1 -0
- package/dist/esm/modules/org.js +331 -0
- package/dist/esm/modules/org.js.map +1 -0
- package/dist/esm/modules/quick-actions.js +67 -0
- package/dist/esm/modules/quick-actions.js.map +1 -0
- package/dist/esm/modules/resources.js +232 -0
- package/dist/esm/modules/resources.js.map +1 -0
- package/dist/esm/modules/search.js +184 -0
- package/dist/esm/modules/search.js.map +1 -0
- package/dist/esm/modules/sentences.js +151 -0
- package/dist/esm/modules/sentences.js.map +1 -0
- package/dist/esm/modules/users.js +116 -0
- package/dist/esm/modules/users.js.map +1 -0
- package/dist/esm/types.js +7 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/types/client.d.ts +105 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/constants.d.ts +505 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/errors.d.ts +143 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/http/client.d.ts +42 -0
- package/dist/types/http/client.d.ts.map +1 -0
- package/dist/types/index.d.ts +37 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/modules/approvals.d.ts +62 -0
- package/dist/types/modules/approvals.d.ts.map +1 -0
- package/dist/types/modules/automation.d.ts +79 -0
- package/dist/types/modules/automation.d.ts.map +1 -0
- package/dist/types/modules/config.d.ts +173 -0
- package/dist/types/modules/config.d.ts.map +1 -0
- package/dist/types/modules/datasets.d.ts +55 -0
- package/dist/types/modules/datasets.d.ts.map +1 -0
- package/dist/types/modules/exports.d.ts +76 -0
- package/dist/types/modules/exports.d.ts.map +1 -0
- package/dist/types/modules/inboxes.d.ts +91 -0
- package/dist/types/modules/inboxes.d.ts.map +1 -0
- package/dist/types/modules/models.d.ts +91 -0
- package/dist/types/modules/models.d.ts.map +1 -0
- package/dist/types/modules/org.d.ts +122 -0
- package/dist/types/modules/org.d.ts.map +1 -0
- package/dist/types/modules/quick-actions.d.ts +58 -0
- package/dist/types/modules/quick-actions.d.ts.map +1 -0
- package/dist/types/modules/resources.d.ts +111 -0
- package/dist/types/modules/resources.d.ts.map +1 -0
- package/dist/types/modules/search.d.ts +72 -0
- package/dist/types/modules/search.d.ts.map +1 -0
- package/dist/types/modules/sentences.d.ts +105 -0
- package/dist/types/modules/sentences.d.ts.map +1 -0
- package/dist/types/modules/users.d.ts +65 -0
- package/dist/types/modules/users.d.ts.map +1 -0
- package/dist/types/types.d.ts +2056 -0
- package/dist/types/types.d.ts.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resources Module
|
|
3
|
+
*
|
|
4
|
+
* Methods for creating, updating, and managing Zudello resources.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Resource mutation operations for Zudello.
|
|
8
|
+
*/
|
|
9
|
+
export class ResourcesModule {
|
|
10
|
+
http;
|
|
11
|
+
constructor(http) {
|
|
12
|
+
this.http = http;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create a new resource.
|
|
16
|
+
*
|
|
17
|
+
* @param model - The model name (e.g., 'Transaction', 'Supplier')
|
|
18
|
+
* @param options - Creation options including data
|
|
19
|
+
* @returns Promise resolving to the created resource
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* const supplier = await client.resources.create('Supplier', {
|
|
23
|
+
* data: {
|
|
24
|
+
* trading_name: 'ACME Corp',
|
|
25
|
+
* code: 'SUP-001',
|
|
26
|
+
* external_id: 'ERP-SUP-001'
|
|
27
|
+
* }
|
|
28
|
+
* });
|
|
29
|
+
*/
|
|
30
|
+
async create(model, options) {
|
|
31
|
+
const requestBody = {
|
|
32
|
+
simplified: false,
|
|
33
|
+
clear_nulls: false,
|
|
34
|
+
data: [{
|
|
35
|
+
model,
|
|
36
|
+
data: options.data,
|
|
37
|
+
fetch: options.fetch ?? false,
|
|
38
|
+
create: true,
|
|
39
|
+
update: false,
|
|
40
|
+
replace: false,
|
|
41
|
+
submit: options.submit ?? false,
|
|
42
|
+
enrich: options.enrich ?? false,
|
|
43
|
+
extracted_event: false,
|
|
44
|
+
update_status: false,
|
|
45
|
+
...(options.dryRun && { dry_run: true }),
|
|
46
|
+
}],
|
|
47
|
+
};
|
|
48
|
+
const response = await this.http.request('POST', '/team-data/v1/resources/update_or_create', requestBody);
|
|
49
|
+
const result = response.resources?.[0];
|
|
50
|
+
if (!result?.success) {
|
|
51
|
+
return {
|
|
52
|
+
success: false,
|
|
53
|
+
model,
|
|
54
|
+
error: result?.message || 'Create failed',
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
success: true,
|
|
59
|
+
model: result.model || model,
|
|
60
|
+
data: result.data,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Update an existing resource.
|
|
65
|
+
*
|
|
66
|
+
* @param model - The model name (e.g., 'Transaction', 'Supplier')
|
|
67
|
+
* @param identifier - Either { uuid: string } or { externalId: string }
|
|
68
|
+
* @param options - Update options including data
|
|
69
|
+
* @returns Promise resolving to the updated resource
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* const updated = await client.resources.update(
|
|
73
|
+
* 'Supplier',
|
|
74
|
+
* { uuid: 'supplier-uuid' },
|
|
75
|
+
* { data: { trading_name: 'ACME Corporation' } }
|
|
76
|
+
* );
|
|
77
|
+
*/
|
|
78
|
+
async update(model, identifier, options) {
|
|
79
|
+
const data = { ...options.data };
|
|
80
|
+
if ('uuid' in identifier) {
|
|
81
|
+
data.uuid = identifier.uuid;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
data.external_id = identifier.externalId;
|
|
85
|
+
}
|
|
86
|
+
const requestBody = {
|
|
87
|
+
simplified: false,
|
|
88
|
+
clear_nulls: false,
|
|
89
|
+
data: [{
|
|
90
|
+
model,
|
|
91
|
+
data,
|
|
92
|
+
fetch: options.fetch ?? false,
|
|
93
|
+
create: false,
|
|
94
|
+
update: true,
|
|
95
|
+
replace: options.replace ?? false,
|
|
96
|
+
submit: options.submit ?? false,
|
|
97
|
+
enrich: false,
|
|
98
|
+
extracted_event: false,
|
|
99
|
+
update_status: options.updateStatus ?? false,
|
|
100
|
+
...(options.dryRun && { dry_run: true }),
|
|
101
|
+
}],
|
|
102
|
+
};
|
|
103
|
+
const response = await this.http.request('POST', '/team-data/v1/resources/update_or_create', requestBody);
|
|
104
|
+
const result = response.resources?.[0];
|
|
105
|
+
if (!result?.success) {
|
|
106
|
+
return {
|
|
107
|
+
success: false,
|
|
108
|
+
model,
|
|
109
|
+
error: result?.message || 'Update failed',
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
success: true,
|
|
114
|
+
model: result.model || model,
|
|
115
|
+
data: result.data,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Fetch multiple resources in a single batch request.
|
|
120
|
+
*
|
|
121
|
+
* @param requests - Array of resource fetch requests
|
|
122
|
+
* @param options - Optional batch options
|
|
123
|
+
* @returns Promise resolving to batch fetch results
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* const results = await client.resources.getMany([
|
|
127
|
+
* { model: 'Supplier', uuid: 'sup-uuid-1' },
|
|
128
|
+
* { model: 'Supplier', uuid: 'sup-uuid-2' },
|
|
129
|
+
* { model: 'Item', external_id: 'ITEM-001' }
|
|
130
|
+
* ]);
|
|
131
|
+
*/
|
|
132
|
+
async getMany(requests, options = {}) {
|
|
133
|
+
const params = new URLSearchParams();
|
|
134
|
+
if (options.simplified)
|
|
135
|
+
params.set('simplified', 'true');
|
|
136
|
+
if (options.activeOnly !== false)
|
|
137
|
+
params.set('active_only', 'true');
|
|
138
|
+
if (options.includeNulls !== false)
|
|
139
|
+
params.set('include_nulls', 'true');
|
|
140
|
+
const requestBody = {
|
|
141
|
+
data: requests.map(req => ({
|
|
142
|
+
model: req.model,
|
|
143
|
+
...(req.uuid && { uuid: req.uuid }),
|
|
144
|
+
...(req.external_id && { external_id: req.external_id }),
|
|
145
|
+
fetch_details: req.fetch_details ?? true,
|
|
146
|
+
...(req.include_models && { include_models: req.include_models }),
|
|
147
|
+
...(req.exclude_models && { exclude_models: req.exclude_models }),
|
|
148
|
+
})),
|
|
149
|
+
};
|
|
150
|
+
const response = await this.http.request('POST', `/team-data/v1/resources/get?${params.toString()}`, requestBody);
|
|
151
|
+
return {
|
|
152
|
+
success: response.status === 'success',
|
|
153
|
+
results: response.resources ?? [],
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Update or create multiple resources in a single batch request.
|
|
158
|
+
*
|
|
159
|
+
* @param requests - Array of update/create requests
|
|
160
|
+
* @param options - Optional batch options
|
|
161
|
+
* @returns Promise resolving to batch operation results
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* const results = await client.resources.upsertMany([
|
|
165
|
+
* { model: 'Supplier', data: { external_id: 'SUP-001', trading_name: 'ACME' } },
|
|
166
|
+
* { model: 'Supplier', data: { external_id: 'SUP-002', trading_name: 'Widget Co' } }
|
|
167
|
+
* ]);
|
|
168
|
+
*/
|
|
169
|
+
async upsertMany(requests, options = {}) {
|
|
170
|
+
const params = new URLSearchParams();
|
|
171
|
+
if (options.batch)
|
|
172
|
+
params.set('batch', 'true');
|
|
173
|
+
if (options.simplified)
|
|
174
|
+
params.set('simplified', 'true');
|
|
175
|
+
if (options.dryRun)
|
|
176
|
+
params.set('dry_run', 'true');
|
|
177
|
+
if (options.includeNulls !== false)
|
|
178
|
+
params.set('include_nulls', 'true');
|
|
179
|
+
if (options.clearNulls)
|
|
180
|
+
params.set('clear_nulls', 'true');
|
|
181
|
+
if (options.migration)
|
|
182
|
+
params.set('migration', 'true');
|
|
183
|
+
const requestBody = {
|
|
184
|
+
simplified: options.simplified ?? false,
|
|
185
|
+
clear_nulls: options.clearNulls ?? false,
|
|
186
|
+
data: requests.map(req => ({
|
|
187
|
+
model: req.model,
|
|
188
|
+
data: req.data,
|
|
189
|
+
fetch: req.fetch ?? false,
|
|
190
|
+
create: req.create ?? true,
|
|
191
|
+
update: req.update ?? true,
|
|
192
|
+
replace: req.replace ?? false,
|
|
193
|
+
submit: req.submit ?? false,
|
|
194
|
+
enrich: req.enrich ?? false,
|
|
195
|
+
extracted_event: false,
|
|
196
|
+
update_status: false,
|
|
197
|
+
...(req.dry_run && { dry_run: true }),
|
|
198
|
+
})),
|
|
199
|
+
};
|
|
200
|
+
const response = await this.http.request('POST', `/team-data/v1/resources/update_or_create?${params.toString()}`, requestBody);
|
|
201
|
+
// Batch mode returns task_id
|
|
202
|
+
if (options.batch && response.task_id) {
|
|
203
|
+
return {
|
|
204
|
+
success: true,
|
|
205
|
+
results: [],
|
|
206
|
+
taskId: response.task_id,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
success: response.status === 'success',
|
|
211
|
+
results: response.resources ?? [],
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Get audit history for a resource.
|
|
216
|
+
*
|
|
217
|
+
* @param model - The model name (e.g., 'Transaction')
|
|
218
|
+
* @param uuid - The resource UUID
|
|
219
|
+
* @returns Promise resolving to array of audit events
|
|
220
|
+
*
|
|
221
|
+
* @example
|
|
222
|
+
* const history = await client.resources.getHistory('Transaction', 'invoice-uuid');
|
|
223
|
+
* for (const event of history.data ?? []) {
|
|
224
|
+
* console.log(`${event.event_type} at ${event.timestamp} by ${event.user?.name}`);
|
|
225
|
+
* }
|
|
226
|
+
*/
|
|
227
|
+
async getHistory(model, uuid) {
|
|
228
|
+
const response = await this.http.request('GET', `/audit/v1/audit/history/${encodeURIComponent(model)}/${encodeURIComponent(uuid)}`);
|
|
229
|
+
return { success: true, data: response.events ?? [] };
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/modules/resources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH;;GAEG;AACH,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,MAAM,CACV,KAAa,EACb,OAAsB;QAEtB,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,CAAC;oBACL,KAAK;oBACL,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;oBAC7B,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;oBAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;oBAC/B,eAAe,EAAE,KAAK;oBACtB,aAAa,EAAE,KAAK;oBACpB,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;iBACzC,CAAC;SACH,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAQrC,MAAM,EAAE,0CAA0C,EAAE,WAAW,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACrB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK;gBACL,KAAK,EAAE,MAAM,EAAE,OAAO,IAAI,eAAe;aAC1C,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;YAC5B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,MAAM,CACV,KAAa,EACb,UAAqD,EACrD,OAAsB;QAEtB,MAAM,IAAI,GAA4B,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1D,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;QAC3C,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,CAAC;oBACL,KAAK;oBACL,IAAI;oBACJ,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;oBAC7B,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;oBACjC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;oBAC/B,MAAM,EAAE,KAAK;oBACb,eAAe,EAAE,KAAK;oBACtB,aAAa,EAAE,OAAO,CAAC,YAAY,IAAI,KAAK;oBAC5C,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;iBACzC,CAAC;SACH,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAQrC,MAAM,EAAE,0CAA0C,EAAE,WAAW,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACrB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK;gBACL,KAAK,EAAE,MAAM,EAAE,OAAO,IAAI,eAAe;aAC1C,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;YAC5B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,OAAO,CACX,QAAgC,EAChC,UAA6B,EAAE;QAE/B,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,UAAU;YAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAExE,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;gBACnC,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;gBACxD,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI;gBACxC,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;gBACjE,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;aAClE,CAAC,CAAC;SACJ,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAQrC,MAAM,EAAE,+BAA+B,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAE5E,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,SAAS;YACtC,OAAO,EAAE,QAAQ,CAAC,SAAS,IAAI,EAAE;SAClC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,UAAU,CACd,QAAiC,EACjC,UAAsC,EAAE;QAExC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,OAAO,CAAC,UAAU;YAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACxE,IAAI,OAAO,CAAC,UAAU;YAAE,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAEvD,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;YACvC,WAAW,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;YACxC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,KAAK;gBACzB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;gBAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;gBAC1B,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,KAAK;gBAC7B,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK;gBAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK;gBAC3B,eAAe,EAAE,KAAK;gBACtB,aAAa,EAAE,KAAK;gBACpB,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;aACtC,CAAC,CAAC;SACJ,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAIrC,MAAM,EAAE,4CAA4C,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAEzF,6BAA6B;QAC7B,IAAI,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,QAAQ,CAAC,OAAO;aACzB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,SAAS;YACtC,OAAO,EAAE,QAAQ,CAAC,SAAS,IAAI,EAAE;SAClC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,UAAU,CACd,KAAa,EACb,IAAY;QAEZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CACtC,KAAK,EACL,2BAA2B,kBAAkB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CACnF,CAAC;QAEF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;IACxD,CAAC;CACF"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Module
|
|
3
|
+
*
|
|
4
|
+
* Methods for searching, listing, and fetching Zudello resources.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Search and retrieval operations for Zudello resources.
|
|
8
|
+
*/
|
|
9
|
+
export class SearchModule {
|
|
10
|
+
http;
|
|
11
|
+
constructor(http) {
|
|
12
|
+
this.http = http;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Search for resources matching the given criteria.
|
|
16
|
+
*
|
|
17
|
+
* @param options - Search options including model, filters, and pagination
|
|
18
|
+
* @returns Promise resolving to search results
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* // Find all pending invoices over $1000
|
|
22
|
+
* const invoices = await client.search.query({
|
|
23
|
+
* model: 'Transaction',
|
|
24
|
+
* module: 'PURCHASING',
|
|
25
|
+
* submodule: 'INVOICE',
|
|
26
|
+
* filter: { status__in: ['REVIEW', 'APPROVAL'], total__gt: 1000 },
|
|
27
|
+
* select: ['uuid', 'document_number', 'total', 'date_due'],
|
|
28
|
+
* order_by: ['-total']
|
|
29
|
+
* });
|
|
30
|
+
*/
|
|
31
|
+
async query(options) {
|
|
32
|
+
// Build filter with module/submodule if provided
|
|
33
|
+
const filter = { ...options.filter };
|
|
34
|
+
if (options.module) {
|
|
35
|
+
filter.module = options.module;
|
|
36
|
+
}
|
|
37
|
+
if (options.submodule) {
|
|
38
|
+
filter.submodule = options.submodule;
|
|
39
|
+
}
|
|
40
|
+
const requestBody = {
|
|
41
|
+
model: options.model,
|
|
42
|
+
offset: options.offset ?? 0,
|
|
43
|
+
limit: options.limit ?? 100,
|
|
44
|
+
select: options.select ?? ['uuid', 'status', 'module', 'submodule', 'created_at', 'updated_at'],
|
|
45
|
+
order_by: options.order_by ?? ['-created_at'],
|
|
46
|
+
distinct: options.distinct ?? [],
|
|
47
|
+
filter,
|
|
48
|
+
exclude: options.exclude ?? {},
|
|
49
|
+
annotate: options.annotate ?? {},
|
|
50
|
+
...(options.search && { search: options.search }),
|
|
51
|
+
...(options.aggregate && { aggregate: options.aggregate }),
|
|
52
|
+
};
|
|
53
|
+
const queryParams = new URLSearchParams();
|
|
54
|
+
if (options.activeOnly !== false) {
|
|
55
|
+
queryParams.set('active_only', 'true');
|
|
56
|
+
}
|
|
57
|
+
queryParams.set('paginate', 'true');
|
|
58
|
+
const endpoint = `/team-data/v1/resources/search?${queryParams.toString()}`;
|
|
59
|
+
const response = await this.http.request('POST', endpoint, requestBody);
|
|
60
|
+
// Handle API error response
|
|
61
|
+
if (response.success === false) {
|
|
62
|
+
return {
|
|
63
|
+
success: false,
|
|
64
|
+
model: options.model,
|
|
65
|
+
error: response.message || response.error || 'Search failed',
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
success: true,
|
|
70
|
+
model: response.model || options.model,
|
|
71
|
+
data: response.data,
|
|
72
|
+
metadata: {
|
|
73
|
+
count: response.count ?? response.total_count,
|
|
74
|
+
offset: response.offset,
|
|
75
|
+
limit: response.limit,
|
|
76
|
+
has_more: response.has_more,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Iterate over all resources matching the given criteria using async iteration.
|
|
82
|
+
* Automatically handles pagination.
|
|
83
|
+
*
|
|
84
|
+
* @param options - List options including model, filters, and page size
|
|
85
|
+
* @yields Each resource matching the criteria
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* // Process all invoices
|
|
89
|
+
* for await (const invoice of client.search.list({ model: 'Transaction', module: 'PURCHASING' })) {
|
|
90
|
+
* console.log(invoice.document_number);
|
|
91
|
+
* }
|
|
92
|
+
*/
|
|
93
|
+
async *list(options) {
|
|
94
|
+
const pageSize = options.pageSize ?? options.limit ?? 100;
|
|
95
|
+
let offset = options.offset ?? 0;
|
|
96
|
+
let hasMore = true;
|
|
97
|
+
while (hasMore) {
|
|
98
|
+
const result = await this.query({
|
|
99
|
+
...options,
|
|
100
|
+
offset,
|
|
101
|
+
limit: pageSize,
|
|
102
|
+
});
|
|
103
|
+
if (!result.success || !result.data) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
for (const item of result.data) {
|
|
107
|
+
yield item;
|
|
108
|
+
}
|
|
109
|
+
// Check if there are more pages
|
|
110
|
+
if (result.data.length < pageSize) {
|
|
111
|
+
hasMore = false;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
offset += pageSize;
|
|
115
|
+
hasMore = result.metadata?.has_more !== false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Fetch a single resource by UUID or external ID.
|
|
121
|
+
*
|
|
122
|
+
* @param model - The model name (e.g., 'Transaction', 'Supplier')
|
|
123
|
+
* @param identifier - Either { uuid: string } or { externalId: string }
|
|
124
|
+
* @param options - Additional fetch options
|
|
125
|
+
* @returns Promise resolving to the fetched resource
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* // Fetch by UUID
|
|
129
|
+
* const invoice = await client.search.fetch('Transaction', { uuid: 'invoice-uuid' });
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* // Fetch by external ID with related data
|
|
133
|
+
* const supplier = await client.search.fetch(
|
|
134
|
+
* 'Supplier',
|
|
135
|
+
* { externalId: 'SUP-001' },
|
|
136
|
+
* { includeModels: 'BankAccount,Contact' }
|
|
137
|
+
* );
|
|
138
|
+
*/
|
|
139
|
+
async fetch(model, identifier, options = {}) {
|
|
140
|
+
const params = new URLSearchParams({ model });
|
|
141
|
+
// Identifier
|
|
142
|
+
if ('uuid' in identifier) {
|
|
143
|
+
params.set('uuid', identifier.uuid);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
params.set('external_id', identifier.externalId);
|
|
147
|
+
}
|
|
148
|
+
// Fetch options
|
|
149
|
+
if (options.fetchDetails !== false) {
|
|
150
|
+
params.set('fetch_details', 'true');
|
|
151
|
+
}
|
|
152
|
+
if (options.activeOnly !== false) {
|
|
153
|
+
params.set('active_only', 'true');
|
|
154
|
+
}
|
|
155
|
+
// Include/exclude models (already strings)
|
|
156
|
+
if (options.includeModels) {
|
|
157
|
+
params.set('include_models', options.includeModels);
|
|
158
|
+
}
|
|
159
|
+
if (options.excludeModels) {
|
|
160
|
+
params.set('exclude_models', options.excludeModels);
|
|
161
|
+
}
|
|
162
|
+
if (options.includePaths) {
|
|
163
|
+
params.set('include_paths', options.includePaths);
|
|
164
|
+
}
|
|
165
|
+
if (options.excludePaths) {
|
|
166
|
+
params.set('exclude_paths', options.excludePaths);
|
|
167
|
+
}
|
|
168
|
+
const endpoint = `/team-data/v1/resources/?${params.toString()}`;
|
|
169
|
+
const response = await this.http.request('GET', endpoint);
|
|
170
|
+
if (response.success === false || !response.data) {
|
|
171
|
+
return {
|
|
172
|
+
success: false,
|
|
173
|
+
model,
|
|
174
|
+
error: response.message || response.error || 'Resource not found',
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
success: true,
|
|
179
|
+
model: response.model || model,
|
|
180
|
+
data: response.data,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/modules/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sentences Module
|
|
3
|
+
*
|
|
4
|
+
* Methods for managing Zudello sentences (automation/business rules).
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Sentence (automation rule) operations for Zudello.
|
|
8
|
+
*/
|
|
9
|
+
export class SentencesModule {
|
|
10
|
+
http;
|
|
11
|
+
constructor(http) {
|
|
12
|
+
this.http = http;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get a specific sentence by UUID.
|
|
16
|
+
*/
|
|
17
|
+
async get(uuid, returnDeleted = false) {
|
|
18
|
+
const params = new URLSearchParams({ return_deleted: String(returnDeleted) });
|
|
19
|
+
const response = await this.http.request('GET', `/general-store/api/v1/sentences/${uuid}?${params.toString()}`);
|
|
20
|
+
if (response.success === false) {
|
|
21
|
+
return { success: false, error: response.message || 'Failed to get sentence' };
|
|
22
|
+
}
|
|
23
|
+
return { success: true, data: response.data };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get a specific sentence template by UUID.
|
|
27
|
+
*/
|
|
28
|
+
async getTemplate(uuid, returnDeleted = false) {
|
|
29
|
+
const params = new URLSearchParams({ return_deleted: String(returnDeleted) });
|
|
30
|
+
const response = await this.http.request('GET', `/general-store/api/v1/sentence-templates/${uuid}?${params.toString()}`);
|
|
31
|
+
if (response.success === false) {
|
|
32
|
+
return { success: false, error: response.message || 'Failed to get sentence template' };
|
|
33
|
+
}
|
|
34
|
+
return { success: true, data: response.data };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* List sentences for a module.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* const sentences = await client.sentences.list('PURCHASING', {
|
|
41
|
+
* submodule: 'INVOICE',
|
|
42
|
+
* enabled: true
|
|
43
|
+
* });
|
|
44
|
+
*/
|
|
45
|
+
async list(module, options = {}) {
|
|
46
|
+
const params = new URLSearchParams({ module });
|
|
47
|
+
if (options.submodule)
|
|
48
|
+
params.set('submodule', options.submodule);
|
|
49
|
+
if (options.isTemplate !== undefined)
|
|
50
|
+
params.set('isTemplate', String(options.isTemplate));
|
|
51
|
+
if (options.enabled !== undefined)
|
|
52
|
+
params.set('enabled', String(options.enabled));
|
|
53
|
+
if (options.page !== undefined)
|
|
54
|
+
params.set('page', String(options.page));
|
|
55
|
+
if (options.perPage !== undefined)
|
|
56
|
+
params.set('per_page', String(options.perPage));
|
|
57
|
+
options.triggers?.forEach(t => params.append('triggers[]', t));
|
|
58
|
+
options.fields?.forEach(f => params.append('fields[]', f));
|
|
59
|
+
options.actions?.forEach(a => params.append('actions[]', a));
|
|
60
|
+
const response = await this.http.request('GET', `/general-store/api/v1/sentences/?${params.toString()}`);
|
|
61
|
+
if (response.success === false) {
|
|
62
|
+
return { success: false, error: response.message || 'Failed to list sentences' };
|
|
63
|
+
}
|
|
64
|
+
const data = Array.isArray(response.data) ? response.data : (response.data ? [response.data] : []);
|
|
65
|
+
return { success: true, data };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* List sentence templates for a module.
|
|
69
|
+
*/
|
|
70
|
+
async listTemplates(module, submodule) {
|
|
71
|
+
const params = new URLSearchParams({ module });
|
|
72
|
+
if (submodule)
|
|
73
|
+
params.set('submodule', submodule);
|
|
74
|
+
const response = await this.http.request('GET', `/general-store/api/v1/sentence-templates/?${params.toString()}`);
|
|
75
|
+
if (response.success === false) {
|
|
76
|
+
return { success: false, error: response.message || 'Failed to list sentence templates' };
|
|
77
|
+
}
|
|
78
|
+
const data = Array.isArray(response.data) ? response.data : (response.data ? [response.data] : []);
|
|
79
|
+
return { success: true, data };
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* List sentence resources (action or condition templates).
|
|
83
|
+
*
|
|
84
|
+
* @param resourceType - Either 'ACTION_TEMPLATE' or 'CONDITION_TEMPLATE'
|
|
85
|
+
* @param module - The module context
|
|
86
|
+
*/
|
|
87
|
+
async listResources(resourceType, module) {
|
|
88
|
+
const params = new URLSearchParams({ resource_type: resourceType, module });
|
|
89
|
+
const response = await this.http.request('GET', `/general-store/api/v1/sentences/resource?${params.toString()}`);
|
|
90
|
+
if (response.success === false) {
|
|
91
|
+
return { success: false, error: response.message || 'Failed to list sentence resources' };
|
|
92
|
+
}
|
|
93
|
+
return { success: true, data: response.data ?? [] };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Create a new sentence.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* const sentence = await client.sentences.create('PURCHASING', {
|
|
100
|
+
* categories: ['Workflow'],
|
|
101
|
+
* evalOrder: 10,
|
|
102
|
+
* enabled: true,
|
|
103
|
+
* recipe: {
|
|
104
|
+
* name: 'Auto-approve small invoices',
|
|
105
|
+
* event_type: ['TRANSACTION_CREATED'],
|
|
106
|
+
* blocks: [{
|
|
107
|
+
* conditions: [{ type: 'CUSTOM_CONDITION', field: { value: 'total' }, operator: { value: '<' }, value: 100 }],
|
|
108
|
+
* actions: [{ type: 'SET_STATUS', params: { status: 'APPROVED' } }]
|
|
109
|
+
* }]
|
|
110
|
+
* }
|
|
111
|
+
* });
|
|
112
|
+
*/
|
|
113
|
+
async create(module, payload, user, sendToLpm = true) {
|
|
114
|
+
const params = new URLSearchParams({
|
|
115
|
+
module,
|
|
116
|
+
send_to_lpm: String(sendToLpm),
|
|
117
|
+
});
|
|
118
|
+
if (user)
|
|
119
|
+
params.set('user', user);
|
|
120
|
+
const response = await this.http.request('POST', `/general-store/api/v1/sentences/?${params.toString()}`, payload);
|
|
121
|
+
if (!response.success) {
|
|
122
|
+
return { success: false, error: response.message || 'Failed to create sentence' };
|
|
123
|
+
}
|
|
124
|
+
return { success: true, data: response.data };
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Update an existing sentence.
|
|
128
|
+
*/
|
|
129
|
+
async update(uuid, module, payload, user, sendToLpm = true) {
|
|
130
|
+
const params = new URLSearchParams({
|
|
131
|
+
module,
|
|
132
|
+
send_to_lpm: String(sendToLpm),
|
|
133
|
+
});
|
|
134
|
+
if (user)
|
|
135
|
+
params.set('user', user);
|
|
136
|
+
const response = await this.http.request('PUT', `/general-store/api/v1/sentences/${uuid}?${params.toString()}`, payload);
|
|
137
|
+
if (!response.success) {
|
|
138
|
+
return { success: false, error: response.message || 'Failed to update sentence' };
|
|
139
|
+
}
|
|
140
|
+
return { success: true, data: response.data };
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Update the order of sentences.
|
|
144
|
+
*/
|
|
145
|
+
async updateOrder(module, sentenceOrders) {
|
|
146
|
+
const params = new URLSearchParams({ module });
|
|
147
|
+
await this.http.request('PUT', `/general-store/api/v1/sentences/order?${params.toString()}`, sentenceOrders);
|
|
148
|
+
return { success: true };
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=sentences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentences.js","sourceRoot":"","sources":["../../../src/modules/sentences.ts"],"names":[],"mappings":"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"}
|