UNPKG

n8n-nodes-netbox

Version:

n8n community node for NetBox API integration with comprehensive DCIM, IPAM, Virtualization, Circuits, Wireless, and data center management operations

1,204 lines (1,203 loc) 34.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extrasProperties = exports.configTemplateFields = exports.configTemplateOperations = exports.reportFields = exports.reportOperations = exports.journalEntryFields = exports.journalEntryOperations = exports.configContextFields = exports.configContextOperations = exports.tagFields = exports.tagOperations = exports.extrasResources = void 0; const baseProperties_1 = require("./baseProperties"); // Resource options for extras domain exports.extrasResources = [ { name: 'Tag', value: 'tags', description: 'Manage tags', }, { name: 'Journal Entry', value: 'journal-entries', description: 'Manage journal entries', }, { name: 'Config Context', value: 'config-contexts', description: 'Manage config contexts', }, { name: 'Config Template', value: 'config-templates', description: 'Manage config templates', }, { name: 'Report', value: 'reports', description: 'Manage reports', }, ]; // Tag operations exports.tagOperations = { displayName: 'Operation', name: 'operation', type: 'options', displayOptions: { show: { domain: ['extras'], resource: ['tags'], }, }, options: [ { name: 'List', value: 'list', description: 'Get all tags', action: 'List tags', }, { name: 'Get', value: 'get', description: 'Get a tag by ID', action: 'Get a tag', }, { name: 'Create', value: 'create', description: 'Create a new tag', action: 'Create a tag', }, { name: 'Update', value: 'update', description: 'Update a tag', action: 'Update a tag', }, { name: 'Delete', value: 'delete', description: 'Delete a tag', action: 'Delete a tag', }, ], default: 'list', }; // Tag fields exports.tagFields = [ // Return All option for list operation { displayName: 'Return All', name: 'returnAll', type: 'boolean', default: false, description: 'Whether to return all results or only up to a given limit', displayOptions: { show: { domain: ['extras'], resource: ['tags'], operation: ['list'], }, }, }, { displayName: 'Limit', name: 'limit', type: 'number', default: 50, description: 'Max number of results to return', typeOptions: { minValue: 1, }, displayOptions: { show: { domain: ['extras'], resource: ['tags'], operation: ['list'], returnAll: [false], }, }, }, // Fields for get, update, delete operations { displayName: 'Tag ID', name: 'tagId', type: 'string', required: true, default: '', displayOptions: { show: { domain: ['extras'], resource: ['tags'], operation: ['get', 'update', 'delete'], }, }, description: 'The ID of the tag', }, // Fields for create, update operations { displayName: 'Name', name: 'tagName', type: 'string', required: true, default: undefined, noDataExpression: false, displayOptions: { show: { domain: ['extras'], resource: ['tags'], operation: ['create', 'update'], }, }, description: 'The name of the tag', }, { displayName: 'Color', name: 'color', type: 'string', default: '9e9e9e', displayOptions: { show: { domain: ['extras'], resource: ['tags'], operation: ['create', 'update'], }, }, description: 'The color for the tag in hex format (6 characters, without #). Example: ff0000 for red', placeholder: 'ff0000', typeOptions: { validation: [ { type: 'regex', properties: { regex: '^[0-9A-Fa-f]{6}$', errorMessage: 'Color must be exactly 6 hexadecimal characters (0-9, A-F). Example: ff0000', }, }, ], }, }, { displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', placeholder: 'Add Field', default: {}, displayOptions: { show: { domain: ['extras'], resource: ['tags'], operation: ['create', 'update'], }, }, options: [ { displayName: 'Description', name: 'tagDescription', type: 'string', default: '', noDataExpression: false, description: 'The description of the tag', }, { displayName: 'Slug', name: 'slug', type: 'string', default: '', description: 'The slug of the tag. If not provided, it will be auto-generated from the name', placeholder: 'my-tag-slug', }, { displayName: 'Object Types', name: 'object_types', type: 'string', default: '', description: 'Comma-separated list of object types this tag can be applied to (e.g., "dcim.device,ipam.prefix")', placeholder: 'dcim.device,ipam.prefix', }, { displayName: 'Custom Fields (JSON)', name: 'custom_fields', type: 'json', default: '{}', description: 'Custom fields as JSON object', }, ], }, // Comprehensive filter fields for list operation { displayName: 'Filters', name: 'filters', type: 'collection', placeholder: 'Add Filter', default: {}, displayOptions: { show: { domain: ['extras'], resource: ['tags'], operation: ['list'], }, }, options: [ { displayName: 'Name', name: 'name', type: 'string', default: '', description: 'Filter by tag name', }, { displayName: 'Name (Exact Match)', name: 'name__ie', type: 'string', default: '', description: 'Filter by exact tag name', }, { displayName: 'Name (Contains)', name: 'name__ic', type: 'string', default: '', description: 'Filter by tags containing name', }, { displayName: 'Name (Starts With)', name: 'name__isw', type: 'string', default: '', description: 'Filter by tags starting with name', }, { displayName: 'Name (Ends With)', name: 'name__iew', type: 'string', default: '', description: 'Filter by tags ending with name', }, { displayName: 'Slug', name: 'slug', type: 'string', default: '', description: 'Filter by tag slug', }, { displayName: 'Slug (Exact Match)', name: 'slug__ie', type: 'string', default: '', description: 'Filter by exact tag slug', }, { displayName: 'Slug (Contains)', name: 'slug__ic', type: 'string', default: '', description: 'Filter by tags containing slug', }, { displayName: 'Color', name: 'color', type: 'string', default: '', description: 'Filter by color (hex format without #)', placeholder: 'ff0000', }, { displayName: 'Description', name: 'description', type: 'string', default: '', description: 'Filter by description', }, { displayName: 'Description (Contains)', name: 'description__ic', type: 'string', default: '', description: 'Filter by tags containing description', }, { displayName: 'ID', name: 'id', type: 'string', default: '', description: 'Filter by ID (comma separated list of IDs)', }, { displayName: 'Content Type', name: 'content_type', type: 'string', default: '', description: 'Filter by content type (e.g., dcim.device)', }, { displayName: 'Content Type ID', name: 'content_type_id', type: 'number', default: '', description: 'Filter by content type ID', }, { displayName: 'For Object Type ID', name: 'for_object_type_id', type: 'number', default: '', description: 'Filter by object type ID', }, { displayName: 'Object Types', name: 'object_types', type: 'string', default: '', description: 'Filter by object types (comma-separated list)', }, { displayName: 'Created Before', name: 'created__lt', type: 'dateTime', default: '', description: 'Filter by created date (before)', }, { displayName: 'Created After', name: 'created__gt', type: 'dateTime', default: '', description: 'Filter by created date (after)', }, { displayName: 'Last Updated Before', name: 'last_updated__lt', type: 'dateTime', default: '', description: 'Filter by last updated date (before)', }, { displayName: 'Last Updated After', name: 'last_updated__gt', type: 'dateTime', default: '', description: 'Filter by last updated date (after)', }, { displayName: 'Search Query', name: 'q', type: 'string', default: '', description: 'Search query', }, { displayName: 'Ordering', name: 'ordering', type: 'options', options: [ { name: 'Name (A-Z)', value: 'name', }, { name: 'Name (Z-A)', value: '-name', }, { name: 'Slug (A-Z)', value: 'slug', }, { name: 'Slug (Z-A)', value: '-slug', }, { name: 'Color', value: 'color', }, { name: 'Created (Oldest First)', value: 'created', }, { name: 'Created (Newest First)', value: '-created', }, { name: 'Last Updated (Oldest First)', value: 'last_updated', }, { name: 'Last Updated (Newest First)', value: '-last_updated', }, ], default: 'name', description: 'Order of the results', }, ], }, ]; // Similarly define operations and fields for other resources like journal-entries, etc. // For brevity, I'll provide just one more example for config-contexts // Config Context operations exports.configContextOperations = { displayName: 'Operation', name: 'operation', type: 'options', displayOptions: { show: { domain: ['extras'], resource: ['config-contexts'], }, }, options: [ { name: 'List', value: 'list', description: 'Get all config contexts', action: 'List config contexts', }, { name: 'Get', value: 'get', description: 'Get a config context by ID', action: 'Get a config context', }, { name: 'Create', value: 'create', description: 'Create a new config context', action: 'Create a config context', }, { name: 'Update', value: 'update', description: 'Update a config context', action: 'Update a config context', }, { name: 'Delete', value: 'delete', description: 'Delete a config context', action: 'Delete a config context', }, ], default: 'list', }; // Config Context fields exports.configContextFields = [ // Return All option for list operation { ...baseProperties_1.returnAllOption, displayOptions: { show: { domain: ['extras'], resource: ['config-contexts'], operation: ['list'], }, }, }, // Limit option for list operation { ...baseProperties_1.limitOption, displayOptions: { show: { domain: ['extras'], resource: ['config-contexts'], operation: ['list'], returnAll: [false], }, }, }, // Fields for get, update, delete operations { displayName: 'Config Context ID', name: 'configContextId', type: 'string', required: true, default: '', displayOptions: { show: { domain: ['extras'], resource: ['config-contexts'], operation: ['get', 'update', 'delete'], }, }, description: 'The ID of the config context', }, // Fields for create, update operations { displayName: 'Name', name: 'configContextName', type: 'string', required: true, default: '', noDataExpression: false, displayOptions: { show: { domain: ['extras'], resource: ['config-contexts'], operation: ['create', 'update'], }, }, description: 'The name of the config context', }, { displayName: 'Data (JSON)', name: 'data', type: 'json', required: true, default: '{}', displayOptions: { show: { domain: ['extras'], resource: ['config-contexts'], operation: ['create', 'update'], }, }, description: 'The config context data in JSON format', }, { displayName: 'Weight', name: 'weight', type: 'number', default: 1000, displayOptions: { show: { domain: ['extras'], resource: ['config-contexts'], operation: ['create', 'update'], }, }, description: 'Determines the order in which contexts are applied (higher values take precedence)', }, { displayName: 'Is Active', name: 'is_active', type: 'boolean', default: true, displayOptions: { show: { domain: ['extras'], resource: ['config-contexts'], operation: ['create', 'update'], }, }, description: 'Whether the config context is active', }, { displayName: 'Description', name: 'configContextDescription', type: 'string', default: '', noDataExpression: false, displayOptions: { show: { domain: ['extras'], resource: ['config-contexts'], operation: ['create', 'update'], }, }, description: 'The description of the config context', }, ]; // Journal Entry operations exports.journalEntryOperations = { displayName: 'Operation', name: 'operation', type: 'options', displayOptions: { show: { domain: ['extras'], resource: ['journal-entries'], }, }, options: [ { name: 'List', value: 'list', description: 'Get all journal entries', action: 'List journal entries', }, { name: 'Get', value: 'get', description: 'Get a journal entry by ID', action: 'Get a journal entry', }, { name: 'Create', value: 'create', description: 'Create a new journal entry', action: 'Create a journal entry', }, { name: 'Update', value: 'update', description: 'Update a journal entry', action: 'Update a journal entry', }, { name: 'Delete', value: 'delete', description: 'Delete a journal entry', action: 'Delete a journal entry', }, ], default: 'list', }; // Journal Entry fields exports.journalEntryFields = [ // Return All option for list operation { ...baseProperties_1.returnAllOption, displayOptions: { show: { domain: ['extras'], resource: ['journal-entries'], operation: ['list'], }, }, }, // Limit option for list operation { ...baseProperties_1.limitOption, displayOptions: { show: { domain: ['extras'], resource: ['journal-entries'], operation: ['list'], returnAll: [false], }, }, }, // Fields for get, update, delete operations { displayName: 'Journal Entry ID', name: 'journalEntryId', type: 'string', required: true, default: '', displayOptions: { show: { domain: ['extras'], resource: ['journal-entries'], operation: ['get', 'update', 'delete'], }, }, description: 'The ID of the journal entry', }, // Fields for create, update operations { displayName: 'Assigned Object Type', name: 'assigned_object_type', type: 'string', required: true, default: '', displayOptions: { show: { domain: ['extras'], resource: ['journal-entries'], operation: ['create', 'update'], }, }, description: 'The type of object this journal entry is assigned to (e.g., dcim.device, ipam.prefix)', }, { displayName: 'Assigned Object ID', name: 'assigned_object_id', type: 'number', required: true, default: 0, displayOptions: { show: { domain: ['extras'], resource: ['journal-entries'], operation: ['create', 'update'], }, }, description: 'The ID of the object this journal entry is assigned to', }, { displayName: 'Kind', name: 'kind', type: 'options', options: [ { name: 'Info', value: 'info', }, { name: 'Success', value: 'success', }, { name: 'Warning', value: 'warning', }, { name: 'Danger', value: 'danger', }, ], default: 'info', displayOptions: { show: { domain: ['extras'], resource: ['journal-entries'], operation: ['create', 'update'], }, }, description: 'The kind of journal entry', }, { displayName: 'Comments', name: 'comments', type: 'string', typeOptions: { rows: 4, }, required: true, default: '', displayOptions: { show: { domain: ['extras'], resource: ['journal-entries'], operation: ['create', 'update'], }, }, description: 'The journal entry comments', }, // Filter fields for list operation { displayName: 'Filter', name: 'filter', type: 'collection', placeholder: 'Add Filter', default: {}, displayOptions: { show: { domain: ['extras'], resource: ['journal-entries'], operation: ['list'], }, }, options: [ { displayName: 'Assigned Object Type', name: 'assigned_object_type', type: 'string', default: '', description: 'Filter by assigned object type', }, { displayName: 'Assigned Object ID', name: 'assigned_object_id', type: 'number', default: 0, description: 'Filter by assigned object ID', }, { displayName: 'Kind', name: 'kind', type: 'options', options: [ { name: 'Info', value: 'info', }, { name: 'Success', value: 'success', }, { name: 'Warning', value: 'warning', }, { name: 'Danger', value: 'danger', }, ], default: '', description: 'Filter by journal entry kind', }, { displayName: 'Created By', name: 'created_by', type: 'string', default: '', description: 'Filter by user who created the entry', }, { displayName: 'Search Query', name: 'q', type: 'string', default: '', description: 'Search query', }, { displayName: 'Limit', name: 'limit', type: 'number', default: 50, description: 'Maximum number of results to return', }, { displayName: 'Offset', name: 'offset', type: 'number', default: 0, description: 'Number of results to skip', }, ], }, ]; // Report operations exports.reportOperations = { displayName: 'Operation', name: 'operation', type: 'options', displayOptions: { show: { domain: ['extras'], resource: ['reports'], }, }, options: [ { name: 'List', value: 'list', description: 'Get all reports', action: 'List reports', }, { name: 'Get', value: 'get', description: 'Get a report by ID', action: 'Get a report', }, { name: 'Run', value: 'run', description: 'Run a report', action: 'Run a report', }, ], default: 'list', }; // Report fields exports.reportFields = [ // Return All option for list operation { ...baseProperties_1.returnAllOption, displayOptions: { show: { domain: ['extras'], resource: ['reports'], operation: ['list'], }, }, }, // Limit option for list operation { ...baseProperties_1.limitOption, displayOptions: { show: { domain: ['extras'], resource: ['reports'], operation: ['list'], returnAll: [false], }, }, }, // Fields for get, run operations { displayName: 'Report ID', name: 'reportId', type: 'string', required: true, default: '', displayOptions: { show: { domain: ['extras'], resource: ['reports'], operation: ['get', 'run'], }, }, description: 'The ID of the report', }, // Filter fields for list operation { displayName: 'Filter', name: 'filter', type: 'collection', placeholder: 'Add Filter', default: {}, displayOptions: { show: { domain: ['extras'], resource: ['reports'], operation: ['list'], }, }, options: [ { displayName: 'Name', name: 'name', type: 'string', default: '', description: 'Filter by report name', }, { displayName: 'Module', name: 'module', type: 'string', default: '', description: 'Filter by report module', }, { displayName: 'Search Query', name: 'q', type: 'string', default: '', description: 'Search query', }, { displayName: 'Limit', name: 'limit', type: 'number', default: 50, description: 'Maximum number of results to return', }, { displayName: 'Offset', name: 'offset', type: 'number', default: 0, description: 'Number of results to skip', }, ], }, ]; // Config Template operations exports.configTemplateOperations = { displayName: 'Operation', name: 'operation', type: 'options', displayOptions: { show: { domain: ['extras'], resource: ['config-templates'], }, }, options: [ { name: 'List', value: 'list', description: 'Get all config templates', action: 'List config templates', }, { name: 'Get', value: 'get', description: 'Get a config template by ID', action: 'Get a config template', }, { name: 'Create', value: 'create', description: 'Create a new config template', action: 'Create a config template', }, { name: 'Update', value: 'update', description: 'Update a config template', action: 'Update a config template', }, { name: 'Delete', value: 'delete', description: 'Delete a config template', action: 'Delete a config template', }, { name: 'Render', value: 'render', description: 'Render a config template', action: 'Render a config template', }, ], default: 'list', }; // Config Template fields exports.configTemplateFields = [ // Return All option for list operation { ...baseProperties_1.returnAllOption, displayOptions: { show: { domain: ['extras'], resource: ['config-templates'], operation: ['list'], }, }, }, // Limit option for list operation { ...baseProperties_1.limitOption, displayOptions: { show: { domain: ['extras'], resource: ['config-templates'], operation: ['list'], returnAll: [false], }, }, }, // Fields for get, update, delete, render operations { displayName: 'Config Template ID', name: 'configTemplateId', type: 'string', required: true, default: '', displayOptions: { show: { domain: ['extras'], resource: ['config-templates'], operation: ['get', 'update', 'delete', 'render'], }, }, description: 'The ID of the config template', }, // Fields for create, update operations { displayName: 'Name', name: 'configTemplateName', type: 'string', required: true, default: '', noDataExpression: false, displayOptions: { show: { domain: ['extras'], resource: ['config-templates'], operation: ['create', 'update'], }, }, description: 'The name of the config template', }, { displayName: 'Template Code', name: 'template_code', type: 'string', typeOptions: { rows: 10, }, required: true, default: '', displayOptions: { show: { domain: ['extras'], resource: ['config-templates'], operation: ['create', 'update'], }, }, description: 'The Jinja2 template code for this config template', }, { displayName: 'Description', name: 'configTemplateDescription', type: 'string', default: '', noDataExpression: false, displayOptions: { show: { domain: ['extras'], resource: ['config-templates'], operation: ['create', 'update'], }, }, description: 'The description of the config template', }, { displayName: 'Environment Parameters (JSON)', name: 'environment_params', type: 'json', default: '{}', displayOptions: { show: { domain: ['extras'], resource: ['config-templates'], operation: ['create', 'update'], }, }, description: 'Environment parameters for the Jinja2 template renderer', }, // Fields for render operation { displayName: 'Context (JSON)', name: 'context', type: 'json', default: '{}', displayOptions: { show: { domain: ['extras'], resource: ['config-templates'], operation: ['render'], }, }, description: 'Context data for template rendering (variables to be used in the template)', }, // Filter fields for list operation { displayName: 'Filter', name: 'filter', type: 'collection', placeholder: 'Add Filter', default: {}, displayOptions: { show: { domain: ['extras'], resource: ['config-templates'], operation: ['list'], }, }, options: [ { displayName: 'Name', name: 'name', type: 'string', default: '', description: 'Filter by template name', }, { displayName: 'Search Query', name: 'q', type: 'string', default: '', description: 'Search query', }, { displayName: 'Limit', name: 'limit', type: 'number', default: 50, description: 'Maximum number of results to return', }, { displayName: 'Offset', name: 'offset', type: 'number', default: 0, description: 'Number of results to skip', }, ], }, ]; // Combine all properties exports.extrasProperties = [ exports.tagOperations, ...exports.tagFields, exports.configContextOperations, ...exports.configContextFields, exports.journalEntryOperations, ...exports.journalEntryFields, exports.reportOperations, ...exports.reportFields, exports.configTemplateOperations, ...exports.configTemplateFields, // Add other resources' operations and fields here ];