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
JavaScript
"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
];