UNPKG

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

Version:

n8n node for Datto RMM integration

293 lines 15.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.DattoRmm = void 0; const n8n_workflow_1 = require("n8n-workflow"); const execute_1 = require("./resources/account/execute"); const execute_2 = require("./resources/device/execute"); const execute_3 = require("./resources/site/execute"); const execute_4 = require("./resources/alert/execute"); const execute_5 = require("./resources/job/execute"); const execute_6 = require("./resources/audit/execute"); const execute_7 = require("./resources/system/execute"); const execute_8 = require("./resources/filter/execute"); const execute_9 = require("./resources/activity-log/execute"); const definitions_1 = require("./resources/definitions"); const description_1 = require("./resources/account/description"); const description_2 = require("./resources/device/description"); const description_3 = require("./resources/site/description"); const description_4 = require("./resources/alert/description"); const description_5 = require("./resources/job/description"); const description_6 = require("./resources/audit/description"); const description_7 = require("./resources/system/description"); const description_8 = require("./resources/filter/description"); const description_9 = require("./resources/activity-log/description"); const resource_operations_helper_1 = require("./helpers/resource-operations.helper"); const resourceMapper_1 = require("./helpers/resourceMapper"); class DattoRmm { constructor() { this.description = { displayName: 'Datto RMM', name: 'dattoRmm', icon: 'file:datto-rmm.svg', group: ['transform'], usableAsTool: true, version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Interact with Datto RMM API to manage devices, sites, alerts, and monitoring', defaults: { name: 'Datto RMM', }, inputs: ['main'], outputs: ['main'], credentials: [ { name: 'dattoRmmApi', required: true, }, ], requestDefaults: { baseURL: '={{$credentials.apiUrl}}', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, }, properties: [ { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: definitions_1.RESOURCE_DEFINITIONS, default: 'account', required: true, }, ...(0, resource_operations_helper_1.addOperationsToResource)(description_1.accountFields, { resourceName: 'account' }), ...(0, resource_operations_helper_1.addOperationsToResource)(description_2.deviceFields, { resourceName: 'device' }), ...(0, resource_operations_helper_1.addOperationsToResource)(description_3.siteFields, { resourceName: 'site' }), ...(0, resource_operations_helper_1.addOperationsToResource)(description_4.alertFields, { resourceName: 'alert' }), ...(0, resource_operations_helper_1.addOperationsToResource)(description_5.jobFields, { resourceName: 'job' }), ...(0, resource_operations_helper_1.addOperationsToResource)(description_6.auditFields, { resourceName: 'audit' }), ...(0, resource_operations_helper_1.addOperationsToResource)(description_7.systemFields, { resourceName: 'system' }), ...(0, resource_operations_helper_1.addOperationsToResource)(description_8.filterFields, { resourceName: 'filter' }), ...(0, resource_operations_helper_1.addOperationsToResource)(description_9.activityLogFields, { resourceName: 'activityLog' }), ], }; this.methods = { resourceMapping: { async getFields() { const resource = this.getNodeParameter('resource', 0); return resourceMapper_1.getResourceMapperFields.call(this, resource); }, }, loadOptions: { async getResources() { return definitions_1.RESOURCE_DEFINITIONS.map((resource) => ({ name: resource.name, value: resource.value, })); }, async getSelectColumns() { const resource = this.getNodeParameter('resource', 0); try { const { fields } = await resourceMapper_1.getResourceMapperFields.call(this, resource); return fields.map((field) => ({ name: field.displayName || field.id, value: field.id, })); } catch (error) { console.error(`Error loading select columns options: ${error.message}`); return []; } }, async getSites() { try { const { dattoRmmApiRequestAllItems } = await Promise.resolve().then(() => __importStar(require('./helpers/api.helper'))); const sites = await dattoRmmApiRequestAllItems.call(this, 'GET', '/api/v2/account/sites'); return sites.map((site) => ({ name: `${site.name} (${site.deviceCount || 0} devices)`, value: site.uid, })); } catch (error) { console.error('Error loading sites:', error.message); return []; } }, async getOpenAlerts() { try { const { dattoRmmApiRequestAllItems } = await Promise.resolve().then(() => __importStar(require('./helpers/api.helper'))); const alerts = await dattoRmmApiRequestAllItems.call(this, 'GET', '/api/v2/account/alerts/open'); return alerts.map((alert) => ({ name: `${alert.alertType || 'Alert'} - ${alert.deviceName || alert.uid} (${alert.priority || 'Normal'})`, value: alert.uid, })); } catch (error) { console.error('Error loading alerts:', error.message); return []; } }, async getDevices() { try { const { dattoRmmApiRequestAllItems } = await Promise.resolve().then(() => __importStar(require('./helpers/api.helper'))); const devices = await dattoRmmApiRequestAllItems.call(this, 'GET', '/api/v2/account/devices'); return devices.map((device) => ({ name: `${device.hostname || device.displayName || 'Unknown'} - ${device.deviceType || 'Device'} (${device.intIpAddress || 'No IP'})`, value: device.uid, })); } catch (error) { console.error('Error loading devices:', error.message); return []; } }, async getJobs() { try { const { dattoRmmApiRequestAllItems } = await Promise.resolve().then(() => __importStar(require('./helpers/api.helper'))); const jobs = await dattoRmmApiRequestAllItems.call(this, 'GET', '/api/v2/job'); return jobs.map((job) => ({ name: `${job.name} (${job.status})`, value: job.uid, })); } catch (error) { console.error('Error loading jobs:', error.message); return []; } }, async getSiteDevices() { try { const siteUid = this.getNodeParameter('siteUid', 0); if (!siteUid) return []; const { dattoRmmApiRequest } = await Promise.resolve().then(() => __importStar(require('./helpers/api.helper'))); const response = await dattoRmmApiRequest.call(this, 'GET', `/api/v2/site/${siteUid}/devices`); if ((response === null || response === void 0 ? void 0 : response.data) && Array.isArray(response.data)) { return response.data.map((device) => ({ name: `${device.hostname || device.displayName || 'Unknown'} - ${device.deviceType || 'Device'}`, value: device.uid, })); } return []; } catch (error) { console.error('Error loading site devices:', error.message); return []; } }, async getSiteOpenAlerts() { try { const siteUid = this.getNodeParameter('siteUid', 0); if (!siteUid) return []; const { dattoRmmApiRequest } = await Promise.resolve().then(() => __importStar(require('./helpers/api.helper'))); const response = await dattoRmmApiRequest.call(this, 'GET', `/api/v2/site/${siteUid}/alerts/open`); if ((response === null || response === void 0 ? void 0 : response.data) && Array.isArray(response.data)) { return response.data.map((alert) => ({ name: `${alert.alertType || 'Alert'} - ${alert.deviceName || 'Unknown Device'} (${alert.priority || 'Normal'})`, value: alert.uid, })); } return []; } catch (error) { console.error('Error loading site alerts:', error.message); return []; } }, async getCustomFilters() { try { const { dattoRmmApiRequest } = await Promise.resolve().then(() => __importStar(require('./helpers/api.helper'))); const response = await dattoRmmApiRequest.call(this, 'GET', '/api/v2/filter/custom'); if ((response === null || response === void 0 ? void 0 : response.data) && Array.isArray(response.data)) { return response.data.map((filter) => ({ name: `${filter.name} - ${filter.category || 'General'} (${filter.uid})`, value: filter.uid, })); } return []; } catch (error) { console.error('Error loading custom filters:', error.message); return []; } }, async getComponents() { try { const { dattoRmmApiRequestAllItems } = await Promise.resolve().then(() => __importStar(require('./helpers/api.helper'))); const components = await dattoRmmApiRequestAllItems.call(this, 'GET', '/api/v2/account/components'); return components.map((component) => ({ name: `${component.name} - ${component.description || 'No description'}`, value: component.uid, })); } catch { return []; } }, }, }; } async execute() { const resource = this.getNodeParameter('resource', 0); switch (resource) { case 'account': return execute_1.executeAccountOperation.call(this); case 'device': return execute_2.executeDeviceOperation.call(this); case 'site': return execute_3.executeSiteOperation.call(this); case 'alert': return execute_4.executeAlertOperation.call(this); case 'job': return execute_5.executeJobOperation.call(this); case 'audit': return execute_6.executeAuditOperation.call(this); case 'system': return execute_7.executeSystemOperation.call(this); case 'filter': return execute_8.executeFilterOperation.call(this); case 'activityLog': return execute_9.executeActivityLogOperation.call(this); default: throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Resource ${resource} is not supported yet. Please check back later or contribute to the implementation.`); } } } exports.DattoRmm = DattoRmm; //# sourceMappingURL=DattoRmm.node.js.map