@joshuanode/n8n-nodes-datto-backup 0.1.0-beta.1 → 0.1.0-beta.3

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 CHANGED
@@ -1,8 +1,10 @@
1
1
  # Datto Backup Node for n8n
2
2
 
3
3
  [![npm version](https://badge.fury.io/js/%40joshuanode%2Fn8n-nodes-datto-backup.svg)](https://www.npmjs.com/package/@joshuanode/n8n-nodes-datto-backup)
4
- [![GitHub](https://img.shields.io/badge/GitHub-ajoshuasmith-181717?logo=github)](https://github.com/ajoshuasmith)
5
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![n8n community](https://img.shields.io/badge/n8n-community%20node-ff6d5a?style=flat-square)](https://n8n.io)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
7
+ [![GitHub](https://img.shields.io/badge/GitHub-ajoshuasmith-181717?logo=github)](https://github.com/ajoshuasmith)
6
8
 
7
9
  Community node for the **Datto API** — built for MSPs managing backup devices at scale.
8
10
 
@@ -34,7 +34,7 @@ class DattoBackupApi {
34
34
  type: 'generic',
35
35
  properties: {
36
36
  headers: {
37
- Authorization: '=Basic {{Buffer.from($credentials.publicKey + ":" + $credentials.secretKey).toString("base64")}}',
37
+ Authorization: '=Basic {{btoa($credentials.publicKey.toString().trim() + ":" + $credentials.secretKey.toString().trim())}}',
38
38
  },
39
39
  },
40
40
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DattoBackupApi.credentials.js","sourceRoot":"","sources":["../../credentials/DattoBackupApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,cAAc;IAC1B,IAAI,GAAG,gBAAgB,CAAC;IAExB,WAAW,GAAG,kBAAkB,CAAC;IAEjC,gBAAgB,GAAG,iDAAiD,CAAC;IAErE,IAAI,GAAG;QACN,KAAK,EAAE,2CAA2C;QAClD,IAAI,EAAE,2CAA2C;KACxC,CAAC;IAEX,UAAU,GAAsB;QAC/B;YACC,WAAW,EAAE,gBAAgB;YAC7B,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,gFAAgF;SAC7F;QACD;YACC,WAAW,EAAE,gBAAgB;YAC7B,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE;gBACZ,QAAQ,EAAE,IAAI;aACd;YACD,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,gFAAgF;SAC7F;KACD,CAAC;IAEF,YAAY,GAAyB;QACpC,IAAI,EAAE,SAAS;QACf,UAAU,EAAE;YACX,OAAO,EAAE;gBACR,aAAa,EACZ,kGAAkG;aACnG;SACD;KACD,CAAC;IAEF,IAAI,GAA2B;QAC9B,OAAO,EAAE;YACR,OAAO,EAAE,0BAA0B;YACnC,GAAG,EAAE,cAAc;YACnB,MAAM,EAAE,KAAK;YACb,EAAE,EAAE;gBACH,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,CAAC;aACX;SACD;KACD,CAAC;CACF;AAvDD,wCAuDC"}
1
+ {"version":3,"file":"DattoBackupApi.credentials.js","sourceRoot":"","sources":["../../credentials/DattoBackupApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,cAAc;IAC1B,IAAI,GAAG,gBAAgB,CAAC;IAExB,WAAW,GAAG,kBAAkB,CAAC;IAEjC,gBAAgB,GAAG,iDAAiD,CAAC;IAErE,IAAI,GAAG;QACN,KAAK,EAAE,2CAA2C;QAClD,IAAI,EAAE,2CAA2C;KACxC,CAAC;IAEX,UAAU,GAAsB;QAC/B;YACC,WAAW,EAAE,gBAAgB;YAC7B,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,gFAAgF;SAC7F;QACD;YACC,WAAW,EAAE,gBAAgB;YAC7B,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE;gBACZ,QAAQ,EAAE,IAAI;aACd;YACD,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,gFAAgF;SAC7F;KACD,CAAC;IAEF,YAAY,GAAyB;QACpC,IAAI,EAAE,SAAS;QACf,UAAU,EAAE;YACX,OAAO,EAAE;gBACR,aAAa,EACZ,4GAA4G;aAC7G;SACD;KACD,CAAC;IAEF,IAAI,GAA2B;QAC9B,OAAO,EAAE;YACR,OAAO,EAAE,0BAA0B;YACnC,GAAG,EAAE,cAAc;YACnB,MAAM,EAAE,KAAK;YACb,EAAE,EAAE;gBACH,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,CAAC;aACX;SACD;KACD,CAAC;CACF;AAvDD,wCAuDC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DattoBackup.node.d.ts","sourceRoot":"","sources":["../../../nodes/DattoBackup/DattoBackup.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EAEjB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,EACT,oBAAoB,EACpB,MAAM,cAAc,CAAC;AAyCtB,qBAAa,WAAY,YAAW,SAAS;IAC5C,WAAW,EAAE,oBAAoB,CA+I/B;IAEF,OAAO;;6BAEkB,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;mCAGjD,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;;MAIpF;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CA2dvE"}
1
+ {"version":3,"file":"DattoBackup.node.d.ts","sourceRoot":"","sources":["../../../nodes/DattoBackup/DattoBackup.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EAEjB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,EACT,oBAAoB,EACpB,MAAM,cAAc,CAAC;AAyCtB,qBAAa,WAAY,YAAW,SAAS;IAC5C,WAAW,EAAE,oBAAoB,CA+I/B;IAEF,OAAO;;6BAEkB,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;mCAGjD,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;;MAIpF;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAoCvE"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DattoBackup = void 0;
4
4
  const n8n_workflow_1 = require("n8n-workflow");
5
5
  const GenericFunctions_1 = require("./GenericFunctions");
6
+ const OperationHandlers_1 = require("./OperationHandlers");
6
7
  const descriptions_1 = require("./descriptions");
7
8
  class DattoBackup {
8
9
  description = {
@@ -162,318 +163,16 @@ class DattoBackup {
162
163
  async execute() {
163
164
  const items = this.getInputData();
164
165
  const returnData = [];
165
- const resource = this.getNodeParameter('resource', 0);
166
- const operation = this.getNodeParameter('operation', 0);
167
166
  for (let i = 0; i < items.length; i++) {
168
167
  try {
169
- let responseData;
170
- // ----------------------------------------
171
- // device
172
- // ----------------------------------------
173
- if (resource === 'device') {
174
- if (operation === 'get') {
175
- const serialNumber = this.getNodeParameter('serialNumber', i);
176
- responseData = await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/bcdr/device/${serialNumber}`);
177
- }
178
- else if (operation === 'getMany') {
179
- const returnAll = this.getNodeParameter('returnAll', i);
180
- const options = this.getNodeParameter('options', i);
181
- const qs = {};
182
- if (options.showHiddenDevices !== undefined) {
183
- qs.showHiddenDevices = options.showHiddenDevices ? '1' : '0';
184
- }
185
- if (options.showChildResellerDevices !== undefined) {
186
- qs.showChildResellerDevices = options.showChildResellerDevices ? '1' : '0';
187
- }
188
- if (returnAll) {
189
- responseData = await GenericFunctions_1.dattoApiRequestAllItems.call(this, 'GET', '/bcdr/device', {}, qs);
190
- }
191
- else {
192
- const limit = this.getNodeParameter('limit', i);
193
- qs._perPage = limit;
194
- const response = (await GenericFunctions_1.dattoApiRequest.call(this, 'GET', '/bcdr/device', {}, qs));
195
- responseData = response.items || [];
196
- }
197
- }
198
- else {
199
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
200
- }
201
- }
202
- // ----------------------------------------
203
- // agent
204
- // ----------------------------------------
205
- else if (resource === 'agent') {
206
- if (operation === 'getMany') {
207
- const serialNumber = this.getNodeParameter('serialNumber', i);
208
- const returnAll = this.getNodeParameter('returnAll', i);
209
- if (returnAll) {
210
- responseData = await GenericFunctions_1.dattoApiRequestAllItems.call(this, 'GET', `/bcdr/device/${serialNumber}/asset/agent`);
211
- }
212
- else {
213
- const limit = this.getNodeParameter('limit', i);
214
- const response = (await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/bcdr/device/${serialNumber}/asset/agent`, {}, { _perPage: limit }));
215
- responseData = response.items || [];
216
- }
217
- }
218
- else {
219
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
220
- }
221
- }
222
- // ----------------------------------------
223
- // alert
224
- // ----------------------------------------
225
- else if (resource === 'alert') {
226
- if (operation === 'getMany') {
227
- const serialNumber = this.getNodeParameter('serialNumber', i);
228
- const returnAll = this.getNodeParameter('returnAll', i);
229
- if (returnAll) {
230
- responseData = await GenericFunctions_1.dattoApiRequestAllItems.call(this, 'GET', `/bcdr/device/${serialNumber}/alert`);
231
- }
232
- else {
233
- const limit = this.getNodeParameter('limit', i);
234
- const response = (await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/bcdr/device/${serialNumber}/alert`, {}, { _perPage: limit }));
235
- responseData = response.items || [];
236
- }
237
- }
238
- else {
239
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
240
- }
241
- }
242
- // ----------------------------------------
243
- // asset
244
- // ----------------------------------------
245
- else if (resource === 'asset') {
246
- if (operation === 'getMany') {
247
- const serialNumber = this.getNodeParameter('serialNumber', i);
248
- const returnAll = this.getNodeParameter('returnAll', i);
249
- if (returnAll) {
250
- responseData = await GenericFunctions_1.dattoApiRequestAllItems.call(this, 'GET', `/bcdr/device/${serialNumber}/asset`);
251
- }
252
- else {
253
- const limit = this.getNodeParameter('limit', i);
254
- const response = (await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/bcdr/device/${serialNumber}/asset`, {}, { _perPage: limit }));
255
- responseData = response.items || [];
256
- }
257
- }
258
- else {
259
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
260
- }
261
- }
262
- // ----------------------------------------
263
- // share
264
- // ----------------------------------------
265
- else if (resource === 'share') {
266
- if (operation === 'getMany') {
267
- const serialNumber = this.getNodeParameter('serialNumber', i);
268
- const returnAll = this.getNodeParameter('returnAll', i);
269
- if (returnAll) {
270
- responseData = await GenericFunctions_1.dattoApiRequestAllItems.call(this, 'GET', `/bcdr/device/${serialNumber}/asset/share`);
271
- }
272
- else {
273
- const limit = this.getNodeParameter('limit', i);
274
- const response = (await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/bcdr/device/${serialNumber}/asset/share`, {}, { _perPage: limit }));
275
- responseData = response.items || [];
276
- }
277
- }
278
- else {
279
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
280
- }
281
- }
282
- // ----------------------------------------
283
- // volume
284
- // ----------------------------------------
285
- else if (resource === 'volume') {
286
- if (operation === 'get') {
287
- const serialNumber = this.getNodeParameter('serialNumber', i);
288
- const volumeName = this.getNodeParameter('volumeName', i);
289
- responseData = await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/bcdr/device/${serialNumber}/asset/volume`, {}, { volumeName });
290
- }
291
- else {
292
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
293
- }
294
- }
295
- // ----------------------------------------
296
- // vmRestore
297
- // ----------------------------------------
298
- else if (resource === 'vmRestore') {
299
- if (operation === 'getMany') {
300
- const serialNumber = this.getNodeParameter('serialNumber', i);
301
- responseData = await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/bcdr/device/${serialNumber}/vm-restores`);
302
- // Normalize response to array
303
- if (!Array.isArray(responseData)) {
304
- responseData = responseData.items || [responseData];
305
- }
306
- }
307
- else {
308
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
309
- }
310
- }
311
- // ----------------------------------------
312
- // activityLog
313
- // ----------------------------------------
314
- else if (resource === 'activityLog') {
315
- if (operation === 'getMany') {
316
- const returnAll = this.getNodeParameter('returnAll', i);
317
- const filters = this.getNodeParameter('filters', i);
318
- const qs = {};
319
- if (filters.clientName) {
320
- qs.clientName = filters.clientName;
321
- }
322
- if (filters.since) {
323
- qs.since = filters.since;
324
- }
325
- if (filters.sinceUnits) {
326
- qs.sinceUnits = filters.sinceUnits;
327
- }
328
- if (filters.targetType) {
329
- qs.targetType = filters.targetType;
330
- }
331
- if (filters.user) {
332
- qs.user = filters.user;
333
- }
334
- if (returnAll) {
335
- responseData = await GenericFunctions_1.dattoApiRequestAllItems.call(this, 'GET', '/report/activity-log', {}, qs);
336
- }
337
- else {
338
- const limit = this.getNodeParameter('limit', i);
339
- qs._perPage = limit;
340
- const response = (await GenericFunctions_1.dattoApiRequest.call(this, 'GET', '/report/activity-log', {}, qs));
341
- responseData = response.items || [];
342
- }
343
- }
344
- else {
345
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
346
- }
347
- }
348
- // ----------------------------------------
349
- // saasDomain
350
- // ----------------------------------------
351
- else if (resource === 'saasDomain') {
352
- if (operation === 'getMany') {
353
- const returnAll = this.getNodeParameter('returnAll', i);
354
- if (returnAll) {
355
- responseData = await GenericFunctions_1.dattoApiRequestAllItems.call(this, 'GET', '/saas/domains');
356
- }
357
- else {
358
- const limit = this.getNodeParameter('limit', i);
359
- const response = (await GenericFunctions_1.dattoApiRequest.call(this, 'GET', '/saas/domains', {}, { _perPage: limit }));
360
- responseData = response.items || [];
361
- }
362
- }
363
- else {
364
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
365
- }
366
- }
367
- // ----------------------------------------
368
- // saasSeat
369
- // ----------------------------------------
370
- else if (resource === 'saasSeat') {
371
- if (operation === 'getMany') {
372
- const saasCustomerId = this.getNodeParameter('saasCustomerId', i);
373
- const returnAll = this.getNodeParameter('returnAll', i);
374
- if (returnAll) {
375
- responseData = await GenericFunctions_1.dattoApiRequestAllItems.call(this, 'GET', `/saas/${saasCustomerId}/seats`);
376
- }
377
- else {
378
- const limit = this.getNodeParameter('limit', i);
379
- const response = (await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/saas/${saasCustomerId}/seats`, {}, { _perPage: limit }));
380
- responseData = response.items || [];
381
- }
382
- }
383
- else {
384
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
385
- }
386
- }
387
- // ----------------------------------------
388
- // saasApplication
389
- // ----------------------------------------
390
- else if (resource === 'saasApplication') {
391
- if (operation === 'getMany') {
392
- const saasCustomerId = this.getNodeParameter('saasCustomerId', i);
393
- const returnAll = this.getNodeParameter('returnAll', i);
394
- if (returnAll) {
395
- responseData = await GenericFunctions_1.dattoApiRequestAllItems.call(this, 'GET', `/saas/${saasCustomerId}/applications`);
396
- }
397
- else {
398
- const limit = this.getNodeParameter('limit', i);
399
- const response = (await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/saas/${saasCustomerId}/applications`, {}, { _perPage: limit }));
400
- responseData = response.items || [];
401
- }
402
- }
403
- else {
404
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
405
- }
406
- }
407
- // ----------------------------------------
408
- // dtcAsset
409
- // ----------------------------------------
410
- else if (resource === 'dtcAsset') {
411
- if (operation === 'get') {
412
- const clientId = this.getNodeParameter('clientId', i);
413
- const assetUuid = this.getNodeParameter('assetUuid', i);
414
- responseData = await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/dtc/${clientId}/assets/${assetUuid}`);
415
- }
416
- else if (operation === 'getMany') {
417
- const returnAll = this.getNodeParameter('returnAll', i);
418
- if (returnAll) {
419
- responseData = await GenericFunctions_1.dattoApiRequestAllItems.call(this, 'GET', '/dtc/assets');
420
- }
421
- else {
422
- const limit = this.getNodeParameter('limit', i);
423
- const response = (await GenericFunctions_1.dattoApiRequest.call(this, 'GET', '/dtc/assets', {}, { _perPage: limit }));
424
- responseData = response.items || [];
425
- }
426
- }
427
- else if (operation === 'getManyByClient') {
428
- const clientId = this.getNodeParameter('clientId', i);
429
- const returnAll = this.getNodeParameter('returnAll', i);
430
- if (returnAll) {
431
- responseData = await GenericFunctions_1.dattoApiRequestAllItems.call(this, 'GET', `/dtc/${clientId}/assets`);
432
- }
433
- else {
434
- const limit = this.getNodeParameter('limit', i);
435
- const response = (await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/dtc/${clientId}/assets`, {}, { _perPage: limit }));
436
- responseData = response.items || [];
437
- }
438
- }
439
- else {
440
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
441
- }
442
- }
443
- // ----------------------------------------
444
- // dtcRmmTemplate
445
- // ----------------------------------------
446
- else if (resource === 'dtcRmmTemplate') {
447
- if (operation === 'getMany') {
448
- responseData = await GenericFunctions_1.dattoApiRequest.call(this, 'GET', '/dtc/rmm-templates');
449
- // Normalize response to array
450
- if (!Array.isArray(responseData)) {
451
- responseData = responseData.items || [responseData];
452
- }
453
- }
454
- else {
455
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
456
- }
457
- }
458
- // ----------------------------------------
459
- // dtcStoragePool
460
- // ----------------------------------------
461
- else if (resource === 'dtcStoragePool') {
462
- if (operation === 'getMany') {
463
- responseData = await GenericFunctions_1.dattoApiRequest.call(this, 'GET', '/dtc/storage-pool');
464
- // Normalize response to array
465
- if (!Array.isArray(responseData)) {
466
- responseData = responseData.items || [responseData];
467
- }
468
- }
469
- else {
470
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`);
471
- }
472
- }
473
- else {
474
- throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown resource: ${resource}`);
475
- }
476
- // Handle response
168
+ const resource = this.getNodeParameter('resource', i);
169
+ const operation = this.getNodeParameter('operation', i);
170
+ const handlerKey = `${resource}:${operation}`;
171
+ const handler = OperationHandlers_1.operationHandlers[handlerKey];
172
+ if (!handler) {
173
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${handlerKey}`);
174
+ }
175
+ const responseData = await handler.call(this, i);
477
176
  const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
478
177
  returnData.push(...executionData);
479
178
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DattoBackup.node.js","sourceRoot":"","sources":["../../../nodes/DattoBackup/DattoBackup.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DattoBackup.node.js","sourceRoot":"","sources":["../../../nodes/DattoBackup/DattoBackup.node.ts"],"names":[],"mappings":";;;AASA,+CAAkD;AAElD,yDAG4B;AAE5B,2DAAwD;AAExD,iDA6BwB;AAExB,MAAa,WAAW;IACvB,WAAW,GAAyB;QACnC,WAAW,EAAE,cAAc;QAC3B,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,8DAA8D;QACxE,WAAW,EAAE,mEAAmE;QAChF,QAAQ,EAAE;YACT,IAAI,EAAE,cAAc;SACpB;QACD,MAAM,EAAE,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC,MAAM,CAAC;QACjB,WAAW,EAAE;YACZ;gBACC,IAAI,EAAE,gBAAgB;gBACtB,QAAQ,EAAE,IAAI;aACd;SACD;QACD,UAAU,EAAE;YACX;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;gBACf,gBAAgB,EAAE,IAAI;gBACtB,OAAO,EAAE;oBACR;wBACC,IAAI,EAAE,cAAc;wBACpB,KAAK,EAAE,aAAa;wBACpB,WAAW,EAAE,yBAAyB;qBACtC;oBACD;wBACC,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,OAAO;wBACd,WAAW,EAAE,oCAAoC;qBACjD;oBACD;wBACC,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,OAAO;wBACd,WAAW,EAAE,iCAAiC;qBAC9C;oBACD;wBACC,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,OAAO;wBACd,WAAW,EAAE,yCAAyC;qBACtD;oBACD;wBACC,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,QAAQ;wBACf,WAAW,EAAE,iCAAiC;qBAC9C;oBACD;wBACC,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,UAAU;wBACjB,WAAW,EAAE,0CAA0C;qBACvD;oBACD;wBACC,IAAI,EAAE,kBAAkB;wBACxB,KAAK,EAAE,gBAAgB;wBACvB,WAAW,EAAE,0BAA0B;qBACvC;oBACD;wBACC,IAAI,EAAE,kBAAkB;wBACxB,KAAK,EAAE,gBAAgB;wBACvB,WAAW,EAAE,gCAAgC;qBAC7C;oBACD;wBACC,IAAI,EAAE,kBAAkB;wBACxB,KAAK,EAAE,iBAAiB;wBACxB,WAAW,EAAE,6BAA6B;qBAC1C;oBACD;wBACC,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE,YAAY;wBACnB,WAAW,EAAE,yBAAyB;qBACtC;oBACD;wBACC,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,UAAU;wBACjB,WAAW,EAAE,uBAAuB;qBACpC;oBACD;wBACC,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,OAAO;wBACd,WAAW,EAAE,gCAAgC;qBAC7C;oBACD;wBACC,IAAI,EAAE,YAAY;wBAClB,KAAK,EAAE,WAAW;wBAClB,WAAW,EAAE,oCAAoC;qBACjD;oBACD;wBACC,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,QAAQ;wBACf,WAAW,EAAE,6BAA6B;qBAC1C;iBACD;gBACD,OAAO,EAAE,QAAQ;aACjB;YACD,SAAS;YACT,GAAG,+BAAgB;YACnB,GAAG,2BAAY;YACf,QAAQ;YACR,GAAG,8BAAe;YAClB,GAAG,0BAAW;YACd,QAAQ;YACR,GAAG,8BAAe;YAClB,GAAG,0BAAW;YACd,QAAQ;YACR,GAAG,8BAAe;YAClB,GAAG,0BAAW;YACd,QAAQ;YACR,GAAG,8BAAe;YAClB,GAAG,0BAAW;YACd,SAAS;YACT,GAAG,+BAAgB;YACnB,GAAG,2BAAY;YACf,aAAa;YACb,GAAG,kCAAmB;YACtB,GAAG,8BAAe;YAClB,eAAe;YACf,GAAG,oCAAqB;YACxB,GAAG,gCAAiB;YACpB,cAAc;YACd,GAAG,mCAAoB;YACvB,GAAG,+BAAgB;YACnB,YAAY;YACZ,GAAG,iCAAkB;YACrB,GAAG,6BAAc;YACjB,mBAAmB;YACnB,GAAG,wCAAyB;YAC5B,GAAG,oCAAqB;YACxB,YAAY;YACZ,GAAG,iCAAkB;YACrB,GAAG,6BAAc;YACjB,mBAAmB;YACnB,GAAG,uCAAwB;YAC3B,GAAG,mCAAoB;YACvB,mBAAmB;YACnB,GAAG,uCAAwB;YAC3B,GAAG,mCAAoB;SACvB;QACD,YAAY,EAAE,IAAI;KAClB,CAAC;IAEF,OAAO,GAAG;QACT,WAAW,EAAE;YACZ,KAAK,CAAC,UAAU;gBACf,OAAO,6BAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;YACD,KAAK,CAAC,gBAAgB;gBACrB,OAAO,mCAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;SACD;KACD,CAAC;IAEF,KAAK,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAW,CAAC;gBAChE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAW,CAAC;gBAClE,MAAM,UAAU,GAAG,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;gBAC9C,MAAM,OAAO,GAAG,qCAAiB,CAAC,UAAU,CAAC,CAAC;gBAE9C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACd,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,sBAAsB,UAAU,EAAE,CAAC,CAAC;gBAClF,CAAC;gBAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAEjD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAC5D,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,EAC1C,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CACzB,CAAC;gBACF,UAAU,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC3B,UAAU,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE;wBACzC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;qBACvB,CAAC,CAAC;oBACH,SAAS;gBACV,CAAC;gBACD,MAAM,KAAK,CAAC;YACb,CAAC;QACF,CAAC;QAED,OAAO,CAAC,UAAU,CAAC,CAAC;IACrB,CAAC;CACD;AAjMD,kCAiMC"}
@@ -7,6 +7,10 @@ export declare function dattoApiRequest(this: IExecuteFunctions | ILoadOptionsFu
7
7
  * Make an authenticated request and return all items (handles pagination)
8
8
  */
9
9
  export declare function dattoApiRequestAllItems(this: IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, endpoint: string, body?: IDataObject, qs?: IDataObject): Promise<IDataObject[]>;
10
+ /**
11
+ * Handle standard "Get Many" request with pagination options
12
+ */
13
+ export declare function handleGetManyRequest(this: IExecuteFunctions, i: number, endpoint: string, qs?: IDataObject): Promise<IDataObject[]>;
10
14
  /**
11
15
  * Load devices for dropdown selection (fetches ALL pages for MSPs with many devices)
12
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"GenericFunctions.d.ts","sourceRoot":"","sources":["../../../nodes/DattoBackup/GenericFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EAEnB,WAAW,EAEX,MAAM,cAAc,CAAC;AAKtB;;GAEG;AACH,wBAAsB,eAAe,CACpC,IAAI,EAAE,iBAAiB,GAAG,qBAAqB,EAC/C,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,WAAgB,EACtB,EAAE,GAAE,WAAgB,GAClB,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,CAuBtC;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC5C,IAAI,EAAE,iBAAiB,GAAG,qBAAqB,EAC/C,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,WAAgB,EACtB,EAAE,GAAE,WAAgB,GAClB,OAAO,CAAC,WAAW,EAAE,CAAC,CA6BxB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC/B,IAAI,EAAE,qBAAqB,GACzB,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAuBjD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACrC,IAAI,EAAE,qBAAqB,GACzB,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAsBjD"}
1
+ {"version":3,"file":"GenericFunctions.d.ts","sourceRoot":"","sources":["../../../nodes/DattoBackup/GenericFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EAEnB,WAAW,EAEX,MAAM,cAAc,CAAC;AAKtB;;GAEG;AACH,wBAAsB,eAAe,CACpC,IAAI,EAAE,iBAAiB,GAAG,qBAAqB,EAC/C,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,WAAgB,EACtB,EAAE,GAAE,WAAgB,GAClB,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,CA4BtC;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC5C,IAAI,EAAE,iBAAiB,GAAG,qBAAqB,EAC/C,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,WAAgB,EACtB,EAAE,GAAE,WAAgB,GAClB,OAAO,CAAC,WAAW,EAAE,CAAC,CAuCxB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACzC,IAAI,EAAE,iBAAiB,EACvB,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,MAAM,EAChB,EAAE,GAAE,WAAgB,GAClB,OAAO,CAAC,WAAW,EAAE,CAAC,CAiBxB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC/B,IAAI,EAAE,qBAAqB,GACzB,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAuBjD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACrC,IAAI,EAAE,qBAAqB,GACzB,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAsBjD"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.dattoApiRequest = dattoApiRequest;
4
4
  exports.dattoApiRequestAllItems = dattoApiRequestAllItems;
5
+ exports.handleGetManyRequest = handleGetManyRequest;
5
6
  exports.getDevices = getDevices;
6
7
  exports.getSaasCustomers = getSaasCustomers;
7
8
  const n8n_workflow_1 = require("n8n-workflow");
@@ -10,19 +11,26 @@ const BASE_URL = 'https://api.datto.com/v1';
10
11
  * Make an authenticated request to the Datto API
11
12
  */
12
13
  async function dattoApiRequest(method, endpoint, body = {}, qs = {}) {
14
+ const credentials = await this.getCredentials('dattoBackupApi');
15
+ const publicKey = credentials.publicKey.trim();
16
+ const secretKey = credentials.secretKey.trim();
17
+ const authHeader = `Basic ${Buffer.from(`${publicKey}:${secretKey}`).toString('base64')}`;
13
18
  const options = {
14
19
  method,
15
20
  url: `${BASE_URL}${endpoint}`,
16
21
  qs,
17
22
  body,
18
23
  json: true,
24
+ headers: {
25
+ 'Authorization': authHeader,
26
+ 'Content-Type': 'application/json',
27
+ },
19
28
  };
20
29
  if (Object.keys(body).length === 0) {
21
30
  delete options.body;
22
31
  }
23
32
  try {
24
- const response = await this.helpers.httpRequestWithAuthentication.call(this, 'dattoBackupApi', options);
25
- return response;
33
+ return await this.helpers.httpRequest.call(this, options);
26
34
  }
27
35
  catch (error) {
28
36
  throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
@@ -37,9 +45,8 @@ async function dattoApiRequestAllItems(method, endpoint, body = {}, qs = {}) {
37
45
  const perPage = 100;
38
46
  let hasMorePages = true;
39
47
  while (hasMorePages) {
40
- qs._page = page;
41
- qs._perPage = perPage;
42
- const response = (await dattoApiRequest.call(this, method, endpoint, body, qs));
48
+ const requestQs = { ...qs, _page: page, _perPage: perPage };
49
+ const response = (await dattoApiRequest.call(this, method, endpoint, body, requestQs));
43
50
  const items = response.items || [];
44
51
  returnData.push(...items);
45
52
  // Check pagination metadata
@@ -53,9 +60,28 @@ async function dattoApiRequestAllItems(method, endpoint, body = {}, qs = {}) {
53
60
  hasMorePages = false;
54
61
  }
55
62
  page++;
63
+ if (page > 500) {
64
+ // Safety break to prevent infinite loops
65
+ hasMorePages = false;
66
+ }
56
67
  }
57
68
  return returnData;
58
69
  }
70
+ /**
71
+ * Handle standard "Get Many" request with pagination options
72
+ */
73
+ async function handleGetManyRequest(i, endpoint, qs = {}) {
74
+ const returnAll = this.getNodeParameter('returnAll', i);
75
+ if (returnAll) {
76
+ return await dattoApiRequestAllItems.call(this, 'GET', endpoint, {}, qs);
77
+ }
78
+ else {
79
+ const limit = this.getNodeParameter('limit', i);
80
+ qs._perPage = limit;
81
+ const response = (await dattoApiRequest.call(this, 'GET', endpoint, {}, qs));
82
+ return response.items || [];
83
+ }
84
+ }
59
85
  /**
60
86
  * Load devices for dropdown selection (fetches ALL pages for MSPs with many devices)
61
87
  */
@@ -1 +1 @@
1
- {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/DattoBackup/GenericFunctions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/DattoBackup/GenericFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { IExecuteFunctions, IDataObject } from 'n8n-workflow';
2
+ export type OperationHandler = (this: IExecuteFunctions, index: number) => Promise<IDataObject | IDataObject[]>;
3
+ export declare const operationHandlers: {
4
+ [key: string]: OperationHandler;
5
+ };
6
+ //# sourceMappingURL=OperationHandlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationHandlers.d.ts","sourceRoot":"","sources":["../../../nodes/DattoBackup/OperationHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,WAAW,EACX,MAAM,cAAc,CAAC;AAQtB,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,CAAC;AAEhH,eAAO,MAAM,iBAAiB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAsOhE,CAAC"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.operationHandlers = void 0;
4
+ const GenericFunctions_1 = require("./GenericFunctions");
5
+ exports.operationHandlers = {
6
+ // ----------------------------------------
7
+ // device
8
+ // ----------------------------------------
9
+ 'device:get': async function (i) {
10
+ const serialNumber = this.getNodeParameter('serialNumber', i);
11
+ return await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/bcdr/device/${serialNumber}`);
12
+ },
13
+ 'device:getMany': async function (i) {
14
+ const returnAll = this.getNodeParameter('returnAll', i);
15
+ const options = this.getNodeParameter('options', i);
16
+ const qs = {};
17
+ if (options.showHiddenDevices !== undefined) {
18
+ qs.showHiddenDevices = options.showHiddenDevices ? '1' : '0';
19
+ }
20
+ if (options.showChildResellerDevices !== undefined) {
21
+ qs.showChildResellerDevices = options.showChildResellerDevices ? '1' : '0';
22
+ }
23
+ if (returnAll) {
24
+ return await GenericFunctions_1.dattoApiRequestAllItems.call(this, 'GET', '/bcdr/device', {}, qs);
25
+ }
26
+ else {
27
+ const limit = this.getNodeParameter('limit', i);
28
+ qs._perPage = limit;
29
+ const response = (await GenericFunctions_1.dattoApiRequest.call(this, 'GET', '/bcdr/device', {}, qs));
30
+ return response.items || [];
31
+ }
32
+ },
33
+ // ----------------------------------------
34
+ // agent
35
+ // ----------------------------------------
36
+ 'agent:getMany': async function (i) {
37
+ const serialNumber = this.getNodeParameter('serialNumber', i);
38
+ return await GenericFunctions_1.handleGetManyRequest.call(this, i, `/bcdr/device/${serialNumber}/asset/agent`);
39
+ },
40
+ // ----------------------------------------
41
+ // alert
42
+ // ----------------------------------------
43
+ 'alert:getMany': async function (i) {
44
+ const serialNumber = this.getNodeParameter('serialNumber', i);
45
+ return await GenericFunctions_1.handleGetManyRequest.call(this, i, `/bcdr/device/${serialNumber}/alert`);
46
+ },
47
+ // ----------------------------------------
48
+ // asset
49
+ // ----------------------------------------
50
+ 'asset:getMany': async function (i) {
51
+ const serialNumber = this.getNodeParameter('serialNumber', i);
52
+ return await GenericFunctions_1.handleGetManyRequest.call(this, i, `/bcdr/device/${serialNumber}/asset`);
53
+ },
54
+ // ----------------------------------------
55
+ // share
56
+ // ----------------------------------------
57
+ 'share:getMany': async function (i) {
58
+ const serialNumber = this.getNodeParameter('serialNumber', i);
59
+ return await GenericFunctions_1.handleGetManyRequest.call(this, i, `/bcdr/device/${serialNumber}/asset/share`);
60
+ },
61
+ // ----------------------------------------
62
+ // volume
63
+ // ----------------------------------------
64
+ 'volume:get': async function (i) {
65
+ const serialNumber = this.getNodeParameter('serialNumber', i);
66
+ const volumeName = this.getNodeParameter('volumeName', i);
67
+ return await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/bcdr/device/${serialNumber}/asset/volume`, {}, { volumeName });
68
+ },
69
+ // ----------------------------------------
70
+ // vmRestore
71
+ // ----------------------------------------
72
+ 'vmRestore:getMany': async function (i) {
73
+ const serialNumber = this.getNodeParameter('serialNumber', i);
74
+ const responseData = await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/bcdr/device/${serialNumber}/vm-restores`);
75
+ // Normalize response to array
76
+ if (!Array.isArray(responseData)) {
77
+ return responseData.items || [responseData];
78
+ }
79
+ return responseData;
80
+ },
81
+ // ----------------------------------------
82
+ // activityLog
83
+ // ----------------------------------------
84
+ 'activityLog:getMany': async function (i) {
85
+ const returnAll = this.getNodeParameter('returnAll', i);
86
+ const filters = this.getNodeParameter('filters', i);
87
+ const qs = {};
88
+ if (filters.clientName) {
89
+ qs.clientName = filters.clientName;
90
+ }
91
+ if (filters.since) {
92
+ qs.since = filters.since;
93
+ }
94
+ if (filters.sinceUnits) {
95
+ qs.sinceUnits = filters.sinceUnits;
96
+ }
97
+ if (filters.targetType) {
98
+ qs.targetType = filters.targetType;
99
+ }
100
+ if (filters.user) {
101
+ qs.user = filters.user;
102
+ }
103
+ if (returnAll) {
104
+ return await GenericFunctions_1.dattoApiRequestAllItems.call(this, 'GET', '/report/activity-log', {}, qs);
105
+ }
106
+ else {
107
+ const limit = this.getNodeParameter('limit', i);
108
+ qs._perPage = limit;
109
+ const response = (await GenericFunctions_1.dattoApiRequest.call(this, 'GET', '/report/activity-log', {}, qs));
110
+ return response.items || [];
111
+ }
112
+ },
113
+ // ----------------------------------------
114
+ // saasDomain
115
+ // ----------------------------------------
116
+ 'saasDomain:getMany': async function (i) {
117
+ return await GenericFunctions_1.handleGetManyRequest.call(this, i, '/saas/domains');
118
+ },
119
+ // ----------------------------------------
120
+ // saasSeat
121
+ // ----------------------------------------
122
+ 'saasSeat:getMany': async function (i) {
123
+ const saasCustomerId = this.getNodeParameter('saasCustomerId', i);
124
+ return await GenericFunctions_1.handleGetManyRequest.call(this, i, `/saas/${saasCustomerId}/seats`);
125
+ },
126
+ // ----------------------------------------
127
+ // saasApplication
128
+ // ----------------------------------------
129
+ 'saasApplication:getMany': async function (i) {
130
+ const saasCustomerId = this.getNodeParameter('saasCustomerId', i);
131
+ return await GenericFunctions_1.handleGetManyRequest.call(this, i, `/saas/${saasCustomerId}/applications`);
132
+ },
133
+ // ----------------------------------------
134
+ // dtcAsset
135
+ // ----------------------------------------
136
+ 'dtcAsset:get': async function (i) {
137
+ const clientId = this.getNodeParameter('clientId', i);
138
+ const assetUuid = this.getNodeParameter('assetUuid', i);
139
+ return await GenericFunctions_1.dattoApiRequest.call(this, 'GET', `/dtc/${clientId}/assets/${assetUuid}`);
140
+ },
141
+ 'dtcAsset:getMany': async function (i) {
142
+ return await GenericFunctions_1.handleGetManyRequest.call(this, i, '/dtc/assets');
143
+ },
144
+ 'dtcAsset:getManyByClient': async function (i) {
145
+ const clientId = this.getNodeParameter('clientId', i);
146
+ return await GenericFunctions_1.handleGetManyRequest.call(this, i, `/dtc/${clientId}/assets`);
147
+ },
148
+ // ----------------------------------------
149
+ // dtcRmmTemplate
150
+ // ----------------------------------------
151
+ 'dtcRmmTemplate:getMany': async function (i) {
152
+ const responseData = await GenericFunctions_1.dattoApiRequest.call(this, 'GET', '/dtc/rmm-templates');
153
+ // Normalize response to array
154
+ if (!Array.isArray(responseData)) {
155
+ return responseData.items || [responseData];
156
+ }
157
+ return responseData;
158
+ },
159
+ // ----------------------------------------
160
+ // dtcStoragePool
161
+ // ----------------------------------------
162
+ 'dtcStoragePool:getMany': async function (i) {
163
+ const responseData = await GenericFunctions_1.dattoApiRequest.call(this, 'GET', '/dtc/storage-pool');
164
+ // Normalize response to array
165
+ if (!Array.isArray(responseData)) {
166
+ return responseData.items || [responseData];
167
+ }
168
+ return responseData;
169
+ },
170
+ };
171
+ //# sourceMappingURL=OperationHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationHandlers.js","sourceRoot":"","sources":["../../../nodes/DattoBackup/OperationHandlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=OperationHandlers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationHandlers.test.d.ts","sourceRoot":"","sources":["../../../nodes/DattoBackup/OperationHandlers.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const OperationHandlers_1 = require("./OperationHandlers");
4
+ // Don't mock GenericFunctions - verify the real logic flow
5
+ // jest.mock('./GenericFunctions');
6
+ describe('OperationHandlers', () => {
7
+ let mockExecuteFunctions;
8
+ let mockGetNodeParameter;
9
+ let mockHttpRequest;
10
+ beforeEach(() => {
11
+ mockGetNodeParameter = jest.fn();
12
+ mockHttpRequest = jest.fn();
13
+ mockExecuteFunctions = {
14
+ getNodeParameter: mockGetNodeParameter,
15
+ getCredentials: jest.fn().mockResolvedValue({
16
+ publicKey: 'test-public',
17
+ secretKey: 'test-secret',
18
+ }),
19
+ getNode: jest.fn().mockReturnValue({}),
20
+ continueOnFail: jest.fn().mockReturnValue(false),
21
+ helpers: {
22
+ returnJsonArray: jest.fn((data) => data),
23
+ constructExecutionMetaData: jest.fn(),
24
+ httpRequest: mockHttpRequest,
25
+ },
26
+ };
27
+ jest.clearAllMocks();
28
+ });
29
+ describe('device:get', () => {
30
+ it('should call httpRequestWithAuthentication with correct path', async () => {
31
+ const serialNumber = '12345';
32
+ mockGetNodeParameter.mockReturnValue(serialNumber);
33
+ mockHttpRequest.mockResolvedValue({ name: 'test-device' });
34
+ const handler = OperationHandlers_1.operationHandlers['device:get'];
35
+ await handler.call(mockExecuteFunctions, 0);
36
+ expect(mockGetNodeParameter).toHaveBeenCalledWith('serialNumber', 0);
37
+ expect(mockHttpRequest).toHaveBeenCalledWith(expect.objectContaining({
38
+ url: 'https://api.datto.com/v1/bcdr/device/12345',
39
+ method: 'GET',
40
+ headers: expect.objectContaining({
41
+ Authorization: expect.stringContaining('Basic '),
42
+ }),
43
+ }));
44
+ });
45
+ });
46
+ describe('device:getMany', () => {
47
+ it('should fetch all pages when returnAll is true', async () => {
48
+ mockGetNodeParameter.mockImplementation((param) => {
49
+ if (param === 'returnAll')
50
+ return true;
51
+ if (param === 'options')
52
+ return {};
53
+ return undefined;
54
+ });
55
+ // Mock first page response with pagination indicating more pages
56
+ mockHttpRequest.mockResolvedValueOnce({
57
+ items: [{ id: 1 }],
58
+ pagination: { totalPages: 2 }
59
+ });
60
+ // Mock second page response
61
+ mockHttpRequest.mockResolvedValueOnce({
62
+ items: [{ id: 2 }],
63
+ pagination: { totalPages: 2 }
64
+ });
65
+ const handler = OperationHandlers_1.operationHandlers['device:getMany'];
66
+ const result = await handler.call(mockExecuteFunctions, 0);
67
+ expect(mockHttpRequest).toHaveBeenCalledTimes(2);
68
+ expect(result).toHaveLength(2);
69
+ expect(mockHttpRequest).toHaveBeenNthCalledWith(1, expect.objectContaining({
70
+ qs: expect.objectContaining({ _page: 1 })
71
+ }));
72
+ expect(mockHttpRequest).toHaveBeenNthCalledWith(2, expect.objectContaining({
73
+ qs: expect.objectContaining({ _page: 2 })
74
+ }));
75
+ });
76
+ it('should fetch single page with limit when returnAll is false', async () => {
77
+ mockGetNodeParameter.mockImplementation((param) => {
78
+ if (param === 'returnAll')
79
+ return false;
80
+ if (param === 'options')
81
+ return {};
82
+ if (param === 'limit')
83
+ return 50;
84
+ return undefined;
85
+ });
86
+ mockHttpRequest.mockResolvedValue({ items: [{ id: 1 }] });
87
+ const handler = OperationHandlers_1.operationHandlers['device:getMany'];
88
+ await handler.call(mockExecuteFunctions, 0);
89
+ expect(mockHttpRequest).toHaveBeenCalledWith(expect.objectContaining({
90
+ qs: expect.objectContaining({ _perPage: 50 })
91
+ }));
92
+ });
93
+ });
94
+ describe('agent:getMany', () => {
95
+ it('should call handleGetManyRequest logic correctly', async () => {
96
+ const serialNumber = '12345';
97
+ mockGetNodeParameter.mockImplementation((param) => {
98
+ if (param === 'serialNumber')
99
+ return serialNumber;
100
+ if (param === 'returnAll')
101
+ return true;
102
+ return undefined;
103
+ });
104
+ mockHttpRequest.mockResolvedValue({
105
+ items: [],
106
+ pagination: { totalPages: 1 }
107
+ });
108
+ const handler = OperationHandlers_1.operationHandlers['agent:getMany'];
109
+ await handler.call(mockExecuteFunctions, 0);
110
+ expect(mockHttpRequest).toHaveBeenCalledWith(expect.objectContaining({
111
+ url: `https://api.datto.com/v1/bcdr/device/${serialNumber}/asset/agent`
112
+ }));
113
+ });
114
+ });
115
+ });
116
+ //# sourceMappingURL=OperationHandlers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationHandlers.test.js","sourceRoot":"","sources":["../../../nodes/DattoBackup/OperationHandlers.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joshuanode/n8n-nodes-datto-backup",
3
- "version": "0.1.0-beta.1",
3
+ "version": "0.1.0-beta.3",
4
4
  "description": "n8n community node for Datto BCDR (Backup, Continuity & Disaster Recovery) API",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -54,9 +54,13 @@
54
54
  },
55
55
  "devDependencies": {
56
56
  "@n8n/node-cli": "*",
57
+ "@types/jest": "^30.0.0",
57
58
  "eslint": "9.32.0",
59
+ "jest": "^30.2.0",
58
60
  "n8n-workflow": "*",
59
61
  "prettier": "3.6.2",
62
+ "ts-jest": "^29.4.6",
63
+ "ts-node": "^10.9.2",
60
64
  "typescript": "5.9.2"
61
65
  },
62
66
  "peerDependencies": {