@panoptic-it-solutions/n8n-nodes-datto-rmm
Version:
n8n node for Datto RMM integration
150 lines • 8.11 kB
JavaScript
"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