n8n-nodes-netbox
Version:
n8n community node for NetBox API integration with comprehensive DCIM, IPAM, and data center management operations
559 lines (558 loc) • 17 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ipAddressFields = exports.ipAddressOperations = void 0;
exports.ipAddressOperations = {
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
domain: ['ipam'],
resource: ['ip-addresses'],
},
},
options: [
{
name: 'List',
value: 'list',
description: 'Get a list of IP addresses',
action: 'List IP addresses',
},
{
name: 'Get',
value: 'get',
description: 'Get a specific IP address',
action: 'Get an IP address',
},
{
name: 'Create',
value: 'create',
description: 'Create a new IP address',
action: 'Create an IP address',
},
{
name: 'Update',
value: 'update',
description: 'Update an existing IP address',
action: 'Update an IP address',
},
{
name: 'Delete',
value: 'delete',
description: 'Delete an IP address',
action: 'Delete an IP address',
},
],
default: 'list',
};
exports.ipAddressFields = [
// Common field for get/update/delete operations - support both ID and IP address
{
displayName: 'IP Address ID or Address',
name: 'ipAddressId',
type: 'string',
required: true,
displayOptions: {
show: {
domain: ['ipam'],
resource: ['ip-addresses'],
operation: ['get', 'update', 'delete'],
},
},
default: '',
placeholder: '123 or 192.168.1.1',
description: 'The ID or IP address to identify the record',
},
// List operation - Return All toggle
{
displayName: 'Return All',
name: 'returnAll',
type: 'boolean',
displayOptions: {
show: {
domain: ['ipam'],
resource: ['ip-addresses'],
operation: ['list'],
},
},
default: false,
description: 'Whether to return all results or only up to the limit',
},
// List operation - Limit field (only shown when returnAll is false)
{
displayName: 'Limit',
name: 'limit',
type: 'number',
displayOptions: {
show: {
domain: ['ipam'],
resource: ['ip-addresses'],
operation: ['list'],
returnAll: [false],
},
},
typeOptions: {
minValue: 1,
},
default: 50,
description: 'Max number of results to return',
},
// List operation filters
{
displayName: 'Filters',
name: 'filters',
type: 'collection',
placeholder: 'Add Filter',
default: {},
displayOptions: {
show: {
domain: ['ipam'],
resource: ['ip-addresses'],
operation: ['list'],
},
},
options: [
{
displayName: 'Address',
name: 'address',
type: 'string',
default: '',
description: 'Filter by IP address (e.g., 192.168.1.1/24)',
},
{
displayName: 'Family',
name: 'family',
type: 'options',
options: [
{
name: 'IPv4',
value: 4,
},
{
name: 'IPv6',
value: 6,
},
],
default: 4,
description: 'IP address family',
},
{
displayName: 'Assigned',
name: 'assigned',
type: 'boolean',
default: false,
description: 'Filter by assignment status',
},
{
displayName: 'Assigned to Interface',
name: 'assigned_to_interface',
type: 'boolean',
default: false,
description: 'Filter by interface assignment',
},
{
displayName: 'Status',
name: 'status',
type: 'options',
options: [
{
name: 'Active',
value: 'active',
},
{
name: 'Reserved',
value: 'reserved',
},
{
name: 'Deprecated',
value: 'deprecated',
},
{
name: 'DHCP',
value: 'dhcp',
},
{
name: 'SLAAC',
value: 'slaac',
},
],
default: 'active',
description: 'Operational status of the IP address',
},
{
displayName: 'Role',
name: 'role',
type: 'string',
default: '',
description: 'Functional role of the IP address',
},
{
displayName: 'VRF ID',
name: 'vrf_id',
type: 'string',
default: '',
description: 'VRF (Virtual Routing and Forwarding) ID or name',
},
{
displayName: 'Tenant ID',
name: 'tenant_id',
type: 'string',
default: '',
description: 'Tenant ID or name',
},
{
displayName: 'Device ID',
name: 'device_id',
type: 'string',
default: '',
description: 'Device ID or name',
},
{
displayName: 'Interface ID',
name: 'interface_id',
type: 'string',
default: '',
description: 'Interface ID or name',
},
{
displayName: 'Virtual Machine ID',
name: 'virtual_machine_id',
type: 'string',
default: '',
description: 'Virtual machine ID or name',
},
{
displayName: 'VM Interface ID',
name: 'vminterface_id',
type: 'string',
default: '',
description: 'VM interface ID or name',
},
{
displayName: 'DNS Name',
name: 'dns_name',
type: 'string',
default: '',
description: 'Filter by DNS name',
},
{
displayName: 'Description',
name: 'description',
type: 'string',
default: '',
description: 'Filter by description',
},
{
displayName: 'Parent',
name: 'parent',
type: 'string',
default: '',
description: 'Filter by parent prefix',
},
{
displayName: 'Tag',
name: 'tag',
type: 'string',
default: '',
description: 'Filter by tag name or slug',
},
],
},
// Raw JSON option for create/update
{
displayName: 'Use Raw JSON',
name: 'useRawJson',
type: 'boolean',
displayOptions: {
show: {
domain: ['ipam'],
resource: ['ip-addresses'],
operation: ['create', 'update'],
},
},
default: false,
description: 'Whether to use raw JSON input instead of individual fields',
},
// Raw JSON data field
{
displayName: 'IP Address Data (JSON)',
name: 'ipAddressData',
type: 'json',
displayOptions: {
show: {
domain: ['ipam'],
resource: ['ip-addresses'],
operation: ['create', 'update'],
useRawJson: [true],
},
},
default: '{\n "address": "192.168.1.1/24",\n "status": "active"\n}',
description: 'IP address data as JSON object',
},
// Create operation fields
{
displayName: 'Address',
name: 'address',
type: 'string',
required: true,
displayOptions: {
show: {
domain: ['ipam'],
resource: ['ip-addresses'],
operation: ['create'],
useRawJson: [false],
},
},
default: '',
placeholder: '192.168.1.1/24',
description: 'IP address with optional prefix length',
},
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
domain: ['ipam'],
resource: ['ip-addresses'],
operation: ['create'],
useRawJson: [false],
},
},
options: [
{
displayName: 'VRF',
name: 'vrf',
type: 'string',
default: '',
description: 'VRF ID or name',
},
{
displayName: 'Tenant',
name: 'tenant',
type: 'string',
default: '',
description: 'Tenant ID or name',
},
{
displayName: 'Status',
name: 'status',
type: 'options',
options: [
{
name: 'Active',
value: 'active',
},
{
name: 'Reserved',
value: 'reserved',
},
{
name: 'Deprecated',
value: 'deprecated',
},
{
name: 'DHCP',
value: 'dhcp',
},
{
name: 'SLAAC',
value: 'slaac',
},
],
default: 'active',
description: 'Operational status',
},
{
displayName: 'Role',
name: 'role',
type: 'string',
default: '',
description: 'Functional role of the IP address',
},
{
displayName: 'Assigned Object Type',
name: 'assigned_object_type',
type: 'string',
default: '',
description: 'Content type of the assigned object',
},
{
displayName: 'Assigned Object ID',
name: 'assigned_object_id',
type: 'number',
default: null,
description: 'ID of the assigned object',
},
{
displayName: 'NAT Inside IP ID',
name: 'nat_inside',
type: 'number',
default: null,
description: 'ID of the inside IP address for NAT',
},
{
displayName: 'DNS Name',
name: 'dns_name',
type: 'string',
default: '',
description: 'DNS name for the IP address',
},
{
displayName: 'Description',
name: 'description',
type: 'string',
default: '',
description: 'Description of the IP address',
},
{
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',
},
],
},
// Update operation fields
{
displayName: 'Update Fields',
name: 'updateFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
domain: ['ipam'],
resource: ['ip-addresses'],
operation: ['update'],
useRawJson: [false],
},
},
options: [
{
displayName: 'Address',
name: 'address',
type: 'string',
default: '',
placeholder: '192.168.1.1/24',
description: 'IP address with optional prefix length',
},
{
displayName: 'VRF',
name: 'vrf',
type: 'string',
default: '',
description: 'VRF ID or name',
},
{
displayName: 'Tenant',
name: 'tenant',
type: 'string',
default: '',
description: 'Tenant ID or name',
},
{
displayName: 'Status',
name: 'status',
type: 'options',
options: [
{
name: 'Active',
value: 'active',
},
{
name: 'Reserved',
value: 'reserved',
},
{
name: 'Deprecated',
value: 'deprecated',
},
{
name: 'DHCP',
value: 'dhcp',
},
{
name: 'SLAAC',
value: 'slaac',
},
],
default: 'active',
description: 'Operational status',
},
{
displayName: 'Role',
name: 'role',
type: 'string',
default: '',
description: 'Functional role of the IP address',
},
{
displayName: 'Assigned Object Type',
name: 'assigned_object_type',
type: 'string',
default: '',
description: 'Content type of the assigned object',
},
{
displayName: 'Assigned Object ID',
name: 'assigned_object_id',
type: 'number',
default: null,
description: 'ID of the assigned object',
},
{
displayName: 'NAT Inside IP ID',
name: 'nat_inside',
type: 'number',
default: null,
description: 'ID of the inside IP address for NAT',
},
{
displayName: 'DNS Name',
name: 'dns_name',
type: 'string',
default: '',
description: 'DNS name for the IP address',
},
{
displayName: 'Description',
name: 'description',
type: 'string',
default: '',
description: 'Description of the IP address',
},
{
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',
},
],
},
];