n8n-nodes-netbox
Version:
n8n community node for NetBox API integration with comprehensive DCIM, IPAM, and data center management operations
604 lines (603 loc) • 18.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.prefixFields = exports.prefixOperations = void 0;
const baseProperties_1 = require("../baseProperties");
// Prefix Operations
exports.prefixOperations = {
...baseProperties_1.baseProperties,
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
domain: ['ipam'],
resource: ['prefixes'],
},
},
options: [
{
name: 'List',
value: 'list',
description: 'Get all prefixes',
action: 'List all prefixes',
},
{
name: 'Get',
value: 'get',
description: 'Get a specific prefix by ID or CIDR',
action: 'Get a prefix',
},
{
name: 'Create',
value: 'create',
description: 'Create a new prefix',
action: 'Create a prefix',
},
{
name: 'Update',
value: 'update',
description: 'Update an existing prefix',
action: 'Update a prefix',
},
{
name: 'Delete',
value: 'delete',
description: 'Delete a prefix',
action: 'Delete a prefix',
},
{
name: 'Get Available IPs',
value: 'getAvailableIPs',
description: 'List available IP addresses within a prefix',
action: 'Get available IPs from a prefix',
},
{
name: 'Add Tags',
value: 'addTags',
description: 'Add tags to an existing prefix',
action: 'Add tags to a prefix',
},
],
default: 'list',
};
// Prefix Fields
exports.prefixFields = [
// List operation fields
{
...baseProperties_1.returnAllOption,
displayOptions: {
show: {
domain: ['ipam'],
resource: ['prefixes'],
operation: ['list'],
},
},
},
{
...baseProperties_1.limitOption,
displayOptions: {
show: {
domain: ['ipam'],
resource: ['prefixes'],
operation: ['list'],
returnAll: [false],
},
},
},
{
displayName: 'Filters',
name: 'filters',
type: 'collection',
placeholder: 'Add Filter',
default: {},
displayOptions: {
show: {
domain: ['ipam'],
resource: ['prefixes'],
operation: ['list'],
},
},
options: [
{
displayName: 'Prefix',
name: 'prefix',
type: 'string',
default: '',
description: 'Filter by prefix (CIDR notation)',
},
{
displayName: 'Prefix (Contains)',
name: 'prefix__ic',
type: 'string',
default: '',
description: 'Filter by prefixes containing this value',
},
{
displayName: 'Family',
name: 'family',
type: 'options',
options: [
{
name: 'IPv4',
value: '4',
},
{
name: 'IPv6',
value: '6',
},
],
default: '',
description: 'Filter by IP address family',
},
{
displayName: 'Site',
name: 'site',
type: 'string',
default: '',
description: 'Filter by site name or slug (comma-separated for multiple)',
},
{
displayName: 'Site ID',
name: 'site_id',
type: 'string',
default: '',
description: 'Filter by site ID (comma-separated for multiple)',
},
{
displayName: 'VRF',
name: 'vrf',
type: 'string',
default: '',
description: 'Filter by VRF name or RD (comma-separated for multiple)',
},
{
displayName: 'VRF ID',
name: 'vrf_id',
type: 'string',
default: '',
description: 'Filter by VRF ID (comma-separated for multiple)',
},
{
displayName: 'Role',
name: 'role',
type: 'string',
default: '',
description: 'Filter by role name or slug (comma-separated for multiple)',
},
{
displayName: 'Role ID',
name: 'role_id',
type: 'string',
default: '',
description: 'Filter by role ID (comma-separated for multiple)',
},
{
displayName: 'Status',
name: 'status',
type: 'options',
options: [
{
name: 'Active',
value: 'active',
},
{
name: 'Reserved',
value: 'reserved',
},
{
name: 'Deprecated',
value: 'deprecated',
},
{
name: 'Container',
value: 'container',
},
],
default: '',
description: 'Filter by prefix status',
},
{
displayName: 'Is Pool',
name: 'is_pool',
type: 'options',
options: [
{
name: 'True',
value: 'true',
},
{
name: 'False',
value: 'false',
},
],
default: '',
description: 'Filter by pool status',
},
{
displayName: 'Tenant',
name: 'tenant',
type: 'string',
default: '',
description: 'Filter by tenant name or slug (comma-separated for multiple)',
},
{
displayName: 'Tenant ID',
name: 'tenant_id',
type: 'string',
default: '',
description: 'Filter by tenant ID (comma-separated for multiple)',
},
{
displayName: 'Parent prefix',
name: 'parent',
type: 'string',
default: '',
description: 'Filter by parent prefix (comma-separated for multiple)',
},
{
displayName: 'Search Query',
name: 'q',
type: 'string',
default: '',
description: 'Search for prefixes matching this query',
},
{
displayName: 'Tag',
name: 'tag',
type: 'string',
default: '',
description: 'Filter by tag (comma-separated for multiple)',
},
{
displayName: 'Mask Length',
name: 'mask_length',
type: 'string',
default: '',
description: 'Filter by prefix mask length (e.g., 24 for /24)',
},
{
displayName: 'Mask Length Greater Than',
name: 'mask_length__gte',
type: 'string',
default: '',
description: 'Filter by prefix mask length greater than or equal to value',
},
{
displayName: 'Mask Length Less Than',
name: 'mask_length__lte',
type: 'string',
default: '',
description: 'Filter by prefix mask length less than or equal to value',
},
{
displayName: 'Present in VRF',
name: 'present_in_vrf_id',
type: 'string',
default: '',
description: 'Filter by VRF that includes this prefix',
},
{
displayName: 'Region',
name: 'region_id',
type: 'string',
default: '',
description: 'Filter by region ID (comma-separated for multiple)',
},
{
displayName: 'Region',
name: 'region',
type: 'string',
default: '',
description: 'Filter by region name or slug (comma-separated for multiple)',
},
{
displayName: 'Contains Address',
name: 'contains',
type: 'string',
default: '',
description: 'Filter by prefixes containing this IP address',
},
{
displayName: 'Within Prefix',
name: 'within',
type: 'string',
default: '',
description: 'Filter by prefixes within this prefix (CIDR notation)',
},
{
displayName: 'Within Include',
name: 'within_include',
type: 'string',
default: '',
description: 'Filter by prefixes within or equal to this prefix (CIDR notation)',
},
{
displayName: 'Ordering',
name: 'ordering',
type: 'options',
options: [
{
name: 'Prefix',
value: 'prefix',
},
{
name: 'Prefix (Descending)',
value: '-prefix',
},
{
name: 'VRF',
value: 'vrf',
},
{
name: 'VRF (Descending)',
value: '-vrf',
},
{
name: 'Status',
value: 'status',
},
{
name: 'Site',
value: 'site',
},
{
name: 'Created',
value: 'created',
},
{
name: 'Last Updated',
value: 'last_updated',
},
],
default: 'prefix',
description: 'Order of the results',
},
],
},
// Get operation fields
{
displayName: 'Prefix ID or CIDR',
name: 'prefixId',
type: 'string',
required: true,
default: '',
displayOptions: {
show: {
domain: ['ipam'],
resource: ['prefixes'],
operation: ['get', 'update', 'delete', 'getAvailableIPs', 'addTags'],
},
},
description: 'ID of the prefix or CIDR notation (e.g., 192.168.1.0/24)',
},
// Create operation fields - improved structure
{
displayName: 'Prefix (CIDR)',
name: 'prefix',
type: 'string',
required: true,
default: '',
displayOptions: {
show: {
domain: ['ipam'],
resource: ['prefixes'],
operation: ['create'],
},
},
description: 'The prefix in CIDR notation (e.g., 192.168.1.0/24)',
},
{
displayName: 'Tags to Add',
name: 'tagsToAdd',
type: 'string',
required: true,
default: '',
displayOptions: {
show: {
domain: ['ipam'],
resource: ['prefixes'],
operation: ['addTags'],
},
},
description: 'Comma-separated list of tag names to add to the prefix',
placeholder: 'production,important,network',
},
{
displayName: 'Options',
name: 'addTagsOptions',
type: 'collection',
placeholder: 'Add Option',
default: {},
displayOptions: {
show: {
domain: ['ipam'],
resource: ['prefixes'],
operation: ['addTags'],
},
},
options: [
{
displayName: 'Create Tags if Not Exist',
name: 'createTags',
type: 'boolean',
default: true,
description: "Whether to create tags if they don't exist in NetBox",
},
{
displayName: 'Replace Existing Tags',
name: 'replaceTags',
type: 'boolean',
default: false,
description: 'Whether to replace all existing tags (true) or add to existing tags (false)',
},
],
},
{
displayName: 'Status',
name: 'status',
type: 'options',
options: [
{
name: 'Active',
value: 'active',
},
{
name: 'Reserved',
value: 'reserved',
},
{
name: 'Deprecated',
value: 'deprecated',
},
{
name: 'Container',
value: 'container',
},
],
default: 'active',
required: true,
displayOptions: {
show: {
domain: ['ipam'],
resource: ['prefixes'],
operation: ['create'],
},
},
description: 'Operational status of this prefix',
},
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
domain: ['ipam'],
resource: ['prefixes'],
operation: ['create'],
},
},
options: [
{
displayName: 'Site (Name or Slug)',
name: 'site',
type: 'string',
default: '',
description: 'Site name or slug where this prefix is located',
},
{
displayName: 'VRF (Name or RD)',
name: 'vrf',
type: 'string',
default: '',
description: 'VRF name or route distinguisher',
},
{
displayName: 'Tenant (Name or Slug)',
name: 'tenant',
type: 'string',
default: '',
description: 'Tenant name or slug',
},
{
displayName: 'Role (Name or Slug)',
name: 'role',
type: 'string',
default: '',
description: 'Role name or slug',
},
{
displayName: 'VLAN ID',
name: 'vlan_id',
type: 'number',
default: 0,
description: 'VLAN ID (1-4094)',
},
{
displayName: 'Is Pool',
name: 'is_pool',
type: 'boolean',
default: false,
description: 'Whether this prefix is a pool',
},
{
displayName: 'Mark Utilized',
name: 'mark_utilized',
type: 'boolean',
default: false,
description: 'Treat as fully utilized',
},
{
displayName: 'Description',
name: 'description',
type: 'string',
default: '',
description: 'A brief description of this prefix',
},
{
displayName: 'Comments',
name: 'comments',
type: 'string',
typeOptions: {
rows: 3,
},
default: '',
description: 'Additional comments',
},
{
displayName: 'Tags',
name: 'tags',
type: 'string',
default: '',
description: 'Comma-separated list of tag names',
},
],
},
// Legacy JSON field for advanced users
{
displayName: 'Or Use Raw JSON',
name: 'useRawJson',
type: 'boolean',
default: false,
displayOptions: {
show: {
domain: ['ipam'],
resource: ['prefixes'],
operation: ['create', 'update'],
},
},
description: 'Whether to use raw JSON input instead of individual fields',
},
{
displayName: 'Prefix Data (JSON)',
name: 'prefixData',
type: 'json',
default: '{\n "prefix": "192.168.1.0/24",\n "status": "active"\n}',
displayOptions: {
show: {
domain: ['ipam'],
resource: ['prefixes'],
operation: ['create'],
useRawJson: [true],
},
},
description: 'Prefix data as JSON object. You can use names/slugs instead of IDs for related objects like site, vrf, role, tenant.',
},
{
displayName: 'Update Data (JSON)',
name: 'prefixData',
type: 'json',
default: '{\n "description": "Updated description"\n}',
displayOptions: {
show: {
domain: ['ipam'],
resource: ['prefixes'],
operation: ['update'],
useRawJson: [true],
},
},
description: 'Fields to update in the prefix. You can use names/slugs instead of IDs for related objects.',
},
];