UNPKG

@panoptic-it-solutions/n8n-nodes-datto-rmm

Version:

n8n node for Datto RMM integration

150 lines 8.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeDeviceOperation = executeDeviceOperation; const n8n_workflow_1 = require("n8n-workflow"); const api_helper_1 = require("../../helpers/api.helper"); const errorHandler_1 = require("../../helpers/errorHandler"); async function executeDeviceOperation() { const items = this.getInputData(); const operation = this.getNodeParameter('operation', 0); const returnData = []; return (0, errorHandler_1.handleErrors)(this, async () => { for (let i = 0; i < items.length; i++) { try { let responseData; switch (operation) { case 'get': { const deviceUid = this.getNodeParameter('deviceUid', i); responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', `/api/v2/device/${deviceUid}`); } break; case 'getById': { const deviceId = this.getNodeParameter('deviceId', i); responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', `/api/v2/device/id/${deviceId}`); } break; case 'getByMacAddress': { const macAddress = this.getNodeParameter('macAddress', i); responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', `/api/v2/device/macAddress/${macAddress}`); } break; case 'getOpenAlerts': { const deviceUid = this.getNodeParameter('deviceUid', i); const retrieveAll = this.getNodeParameter('retrieveAll', i, true); const muted = this.getNodeParameter('muted', i, false); const qs = { muted }; if (retrieveAll) { const allAlerts = await api_helper_1.dattoRmmApiRequestAllItems.call(this, 'GET', `/api/v2/device/${deviceUid}/alerts/open`, {}, qs); responseData = { alerts: allAlerts }; } else { const page = this.getNodeParameter('page', i, 0); const max = this.getNodeParameter('max', i, 100); qs.page = page; qs.max = max; responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', `/api/v2/device/${deviceUid}/alerts/open`, {}, qs); } } break; case 'getResolvedAlerts': { const deviceUid = this.getNodeParameter('deviceUid', i); const retrieveAll = this.getNodeParameter('retrieveAll', i, true); const muted = this.getNodeParameter('muted', i, false); const qs = { muted }; if (retrieveAll) { const allAlerts = await api_helper_1.dattoRmmApiRequestAllItems.call(this, 'GET', `/api/v2/device/${deviceUid}/alerts/resolved`, {}, qs); responseData = { alerts: allAlerts }; } else { const page = this.getNodeParameter('page', i, 0); const max = this.getNodeParameter('max', i, 100); qs.page = page; qs.max = max; responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', `/api/v2/device/${deviceUid}/alerts/resolved`, {}, qs); } } break; case 'moveDevice': { const deviceUid = this.getNodeParameter('deviceUid', i); const siteUid = this.getNodeParameter('siteUid', i); responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'PUT', `/api/v2/device/${deviceUid}/site/${siteUid}`); } break; case 'createQuickJob': { const deviceUid = this.getNodeParameter('deviceUid', i); const jobName = this.getNodeParameter('jobName', i); const componentUid = this.getNodeParameter('componentUid', i); const body = { jobName, jobComponent: { componentUid, variables: [], }, }; responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'PUT', `/api/v2/device/${deviceUid}/quickjob`, body); } break; case 'setWarranty': { const deviceUid = this.getNodeParameter('deviceUid', i); const warrantyDate = this.getNodeParameter('warrantyDate', i, ''); const body = { warrantyDate: warrantyDate || null, }; responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'POST', `/api/v2/device/${deviceUid}/warranty`, body); } break; case 'setUdfFields': { const deviceUid = this.getNodeParameter('deviceUid', i); const udfFields = this.getNodeParameter('udfFields', i, {}); const udfData = {}; if (udfFields.field && Array.isArray(udfFields.field)) { for (const field of udfFields.field) { udfData[field.name] = field.value; } } responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'POST', `/api/v2/device/${deviceUid}/udf`, udfData); } break; default: throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The operation "${operation}" is not supported for device resource`, { description: `Available operations: get, getById, getByMacAddress, getOpenAlerts, getResolvedAlerts, moveDevice, createQuickJob, setWarranty, setUdfFields`, }); } returnData.push({ json: responseData, pairedItem: { item: i, }, }); } catch (error) { if (this.continueOnFail()) { returnData.push({ json: { error: error.message || 'Unknown error occurred', itemIndex: i, operation: operation, resource: 'device', }, pairedItem: { item: i, }, }); continue; } throw error; } } return [returnData]; }); } //# sourceMappingURL=execute.js.map