UNPKG

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
"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.', }, ];