@ev1lc0rp/n8n-nodes-ninjaone
Version:
Professional NinjaOne RMM integration for n8n with complete ticketing and device management
512 lines • 19.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NinjaOne = void 0;
const operations_1 = require("./operations");
class NinjaOne {
constructor() {
this.description = {
displayName: 'NinjaOne',
name: 'ninjaOne',
icon: { light: 'file:ninjaone.svg', dark: 'file:ninjaone.svg' },
group: ['transform'],
version: 1,
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
description: 'Interact with the NinjaOne API',
defaults: {
name: 'NinjaOne',
},
inputs: ["main"],
outputs: ["main"],
usableAsTool: true,
credentials: [
{
name: 'ninjaOneOAuth2Api',
required: true,
},
],
requestDefaults: {
baseURL: '={{$credentials.baseUrl || "https://api.ninjaone.com"}}',
url: '',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
},
properties: [
{
displayName: 'Resource',
name: 'resource',
type: 'options',
noDataExpression: true,
options: [
{
name: 'Device',
value: 'device',
},
{
name: 'Ticket',
value: 'ticket',
},
],
default: 'device',
},
...operations_1.deviceOperations,
...operations_1.ticketOperations,
{
displayName: 'Device ID',
name: 'deviceId',
description: 'ID of the device',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['device'],
operation: ['get', 'getActivities', 'getAlerts', 'getCustomFields', 'getDisks', 'getJobs', 'getLastLoggedOnUser', 'getNetworkInterfaces', 'getOsPatchInstalls', 'getOsPatches', 'getPolicyOverrides', 'getProcessors', 'getSoftware', 'getSoftwarePatchInstalls', 'getSoftwarePatches', 'getVolumes', 'getWindowsServices', 'updateCustomFields'],
},
},
},
{
displayName: 'Ticket ID',
name: 'ticketId',
description: 'ID of the ticket',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['get', 'update', 'comment'],
},
},
},
{
displayName: 'Board ID',
name: 'boardId',
description: 'ID of the ticketing board to list tickets from',
type: 'number',
default: 0,
required: true,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['getTicketsByBoard'],
},
},
},
{
displayName: 'Limit',
name: 'limit',
type: 'number',
default: 50,
description: 'Max number of results to return',
typeOptions: {
minValue: 1,
},
displayOptions: {
show: {
resource: ['device', 'ticket'],
operation: ['getAll', 'getTicketsByBoard'],
},
},
},
{
displayName: 'Offset',
name: 'offset',
type: 'number',
default: 0,
description: 'Offset to start from',
typeOptions: {
minValue: 0,
},
displayOptions: {
show: {
resource: ['device', 'ticket'],
operation: ['getAll', 'getTicketsByBoard'],
},
},
},
{
displayName: 'Version',
name: 'version',
description: 'Version number for optimistic locking',
type: 'number',
default: 1,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Client ID',
name: 'clientId',
description: 'Organization ID',
type: 'number',
default: 0,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Ticket Form ID',
name: 'ticketFormId',
description: 'ID of the ticket form',
type: 'number',
default: 0,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Location ID',
name: 'locationId',
description: 'Location ID',
type: 'number',
default: 0,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Node ID',
name: 'nodeId',
description: 'Device/Node ID',
type: 'number',
default: 0,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Summary',
name: 'summary',
description: 'Ticket summary/subject',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Status',
name: 'status',
description: 'Ticket status',
type: 'options',
options: [
{ name: 'New', value: '1000' },
{ name: 'Open', value: '2000' },
{ name: 'Waiting for Customer', value: '3000' },
{ name: 'Hold', value: '4000' },
],
default: '1000',
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Type',
name: 'type',
description: 'Ticket type',
type: 'options',
options: [
{ name: 'Problem', value: 'PROBLEM' },
{ name: 'Task', value: 'TASK' },
{ name: 'Question', value: 'QUESTION' },
],
default: 'PROBLEM',
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'CC User IDs',
name: 'ccUids',
description: 'Array of user UIDs to CC on ticket',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'CC Emails',
name: 'ccEmails',
description: 'Array of email addresses to CC on ticket',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Assigned App User ID',
name: 'assignedAppUserId',
description: 'ID of the assigned technician',
type: 'number',
default: 0,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Requester UID',
name: 'requesterUid',
description: 'UID of the ticket requester',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Severity',
name: 'severity',
description: 'Ticket severity level',
type: 'options',
options: [
{ name: 'None', value: 'NONE' },
{ name: 'Minor', value: 'MINOR' },
{ name: 'Moderate', value: 'MODERATE' },
{ name: 'Major', value: 'MAJOR' },
{ name: 'Critical', value: 'CRITICAL' },
],
default: 'NONE',
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Priority',
name: 'priority',
description: 'Ticket priority level',
type: 'options',
options: [
{ name: 'None', value: 'NONE' },
{ name: 'Low', value: 'LOW' },
{ name: 'Medium', value: 'MEDIUM' },
{ name: 'High', value: 'HIGH' },
{ name: 'Critical', value: 'CRITICAL' },
],
default: 'NONE',
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Parent Ticket ID',
name: 'parentTicketId',
description: 'ID of the parent ticket for sub-tickets',
type: 'number',
default: 0,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Tags',
name: 'tags',
description: 'Array of tags for the ticket',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Attributes',
name: 'attributes',
description: 'Custom attributes for the ticket',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Organization',
name: 'organization',
description: 'Department or organization assignment',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Total Time Tracked',
name: 'totalTimeTracked',
description: 'Total time tracked in seconds',
type: 'number',
default: 0,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['update', 'create'],
},
},
},
{
displayName: 'Description',
name: 'description',
description: 'Ticket description (required for create)',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['create'],
},
},
},
{
displayName: 'Description Public',
name: 'descriptionPublic',
description: 'Whether the description is public',
type: 'boolean',
default: true,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['create'],
},
},
},
{
displayName: 'HTML Body',
name: 'htmlBody',
description: 'HTML formatted description',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['ticket'],
operation: ['create'],
},
},
},
{
displayName: 'Time Tracked',
name: 'timeTracked',
description: 'Time tracked for this entry in seconds',
type: 'number',
default: 0,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['create'],
},
},
},
{
displayName: 'Duplicate in Incidents',
name: 'duplicateInIncidents',
description: 'Whether to duplicate in incidents',
type: 'boolean',
default: false,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['create'],
},
},
},
{
displayName: 'Comment Body',
name: 'commentBody',
description: 'Comment text (required for comment)',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['comment'],
},
},
},
{
displayName: 'Comment Public',
name: 'commentPublic',
description: 'Whether the comment is public',
type: 'boolean',
default: true,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['comment'],
},
},
},
{
displayName: 'Comment Time Tracked',
name: 'commentTimeTracked',
description: 'Time tracked for this comment in seconds',
type: 'number',
default: 0,
displayOptions: {
show: {
resource: ['ticket'],
operation: ['comment'],
},
},
},
],
};
}
}
exports.NinjaOne = NinjaOne;
//# sourceMappingURL=NinjaOne.node.js.map