NetBox v4.3
v4.3.2 (2025-06-05)
Enhancements
- #19200 - Display assigned virtual chassis (if any) on device view
- #19461 - Add color backgrounds for virtual circuit types
- #19605 - Enable filtering IP addresses by family in GraphQL API
- #19627 - Introduce object change migrators
Bug Fixes
- #19415 - Increase maximum supported distance for circuits and wireless links
- #19475 - VLANs belonging to the same location as a VM's cluster should be eligible for assignment to interfaces on that VM
- #19486 - Fix connection card rendering for console server ports
- #19487 - Fix
FieldErrorexception when ordering circuit or tunnel terminations by the terminating object - #19490 - Fix inclusion support for config templates populated via a data source
- #19496 - Fix
AttributeErrorexception when rendering a config template with no output - #19510 - Restore GraphQL API filtering for assigned IP addresses
- #19520 - Restore ability to alter prefix scope via the REST API
- #19587 - The
occupiedfilter should include interfaces terminating a wireless link - #19599 - Fix
AttributeErrorexception when sorting change history under user view - #19610 - Fix
FieldErrorexception when sorting tunnel terminations by tenant - #19623 - Display description under provider account view
v4.3.1 (2025-05-13)
Enhancements
- #17073 - Enable global search for tags
- #18419 - Enable specifying a queue name when calling
Job.enqueue() - #19416 - Add the 1000BASE-SX interface type
- #19434 - Add pre-populated interface speed choices for 2.5 and 5 Gbps
Bug Fixes
- #17107 - Fix cosmetic issue in cable traces ending at a provider network
- #19309 - Improve REST API query performance for prefixes and IP addresses
- #19361 - Fix incorrect GraphQL object types
- #19375 - Fix table configuration after applying a saved table config
- #19376 - Fix
FieldDoesNotExistexception when global search results include a contact - #19380 - Fix column selections for child object tables
- #19381 - Fix syncing of custom scripts from a remote data source
- #19396 - Enable nullifying VLAN
qinq_rolevia the REST API - #19397 - Correct enum type for IPRangeFilter in GraphQL API
- #19432 - Update minimum required PostgreSQL version referenced by server error page
- #19440 - Ensure data migrations use the correct database connection
- #19444 - Fix change logging for contact group assignments
- #19463 - Hide button dropdown for tables which do not support saved configs
- #19464 - Fix bulk editing of inventory items from device view
- #19465 - Fix ability to clear assigned prefix scope in UI
- #19472 - Fix device column rendering in virtual device contexts table
v4.3.0 (2025-05-01)
Breaking Changes
- The GraphQL API Now uses an advanced syntax for filtering, to enable e.g. logical AND/OR filtering and custom field lookups.
- PostgreSQL 13 is no longer supported. NetBox v4.3 requires PostgreSQL 14.0 or later.
- The
ALLOW_TOKEN_RETRIEVALconfiguration parameter now defaults to False. - The
deviceandvirtual_machineforeign keys on the Service model have been replaced with a genericparentrelationship to support the assignment of services to FHRP groups as well. - The
groupforeign key on the Contact model has been replaced with a many-to-manygroupsfield. django-storagesis now a required dependency. (It will be installed automatically on upgrade.)- PluginTemplateExtension no longer supports registration via the singular
modelattribute (usemodelsinstead). - The legacy staged changes functionality has been removed.
New Features
Module Type Profiles & Custom Attributes (#19002)
The new module type profile model enables users to declare custom profiles for module types, with the ability to define custom attributes for each profile according to its functional role. For example, a CPU module type might declare architecture and clock speed attributes; a hard disk profile might declare attributes for type and speed.
Attributes can be declared on each profile using JSON schema, which allows for attributes to be declared as strings (text), integers, decimals, booleans, or choice fields. Profile attributes render as individual form fields when modifying a module type. Several profiles have been included by default to serve as examples, however these may be modified or removed.
Reusable Table Configurations (#14591)
After modifying the displayed columns and/or ordering for a specific object table in the user interface, users now have the option to save that configuration so that it can be reused in the future. Similar to saved filters, table configs can be shared with other users to easily replicate table layouts crafted to serve specific use cases.
Option to Treat IP Ranges as Fully Populated (#9763)
A new mark_populated boolean field has been added to the IPRange model. If set to true, NetBox will consider the IP range to be fully populated, and will not permit the creation of individual IP addresses within the range. For example, you might defer the management of an IP range to an external DHCP server, and wish for NetBox to treat the range as a opaque monolithic block for planning and allocation purposes.
Hierarchical Device Roles (#18245)
Device roles can now be arranged hierarchically, with one role optionally serving as a parent to one or more child roles. For example, you might wish to create a generic "Server" role for devices with "Application Server" and "Database Server" roles beneath it. A device could then be assigned to any of these three roles.
Periodic Synchronization of Data Sources (#18287)
Data sources can now be configured to synchronize automatically at a specified interval, as indicated by the new sync_interval field. No additional system configuration is necessary to support this functionality; background jobs will be scheduled automatically by the RQ worker process.
Proxy Routing (#18627)
User can now declare one or more proxy routers via the PROXY_ROUTERS configuration parameter to control the use of specific proxy servers for various outbound connections. For example, it is now possible to configure NetBox to use different proxies based on the type of outbound traffic or its destination.
Enhancements
- #7598 - Adopt advanced query filtering in GraphQL API to support filtering by custom fields
- #8423 - Enable assigning services to FHRP groups
- #15842 - Introduce the
LOGIN_FORM_HIDDENconfiguration parameter - #16224 - Implement pagination support for the GraphQL API
- #17170 - Enable the assignment of a contact to multiple contact groups
- #17443 - Add a
file_namefield to the export template model - #17602 - Add a
commentsfield to all nested group models (Region, SiteGroup, Location, ContactGroup, TenantGroup, and WirelessLANGroup) - #17608 - Add a
statusfield to the L2VPN model - #17653 - Enable declaring Jinja environment parameters on export templates (similar to config templates)
- #17793 - Introduce a REST API endpoint for tagged objects (
/api/extras/tagged-objects/) - #17841 - Add a
weightfield to the Tag model to influence ordering - #18296 - Add a
tenantfield to the VLAN group model - #18352 - Add a
statusfield to the power outlet model - #18417 - Add an
outer_heightfield to the rack & rack type models - #18535 - The presence of incompatible plugins will no longer prevent NetBox from starting
- #18780 - Introduce
DATABASESandDATABASE_ROUTERSconfiguration parameters to enable defining connections to external databases (e.g. for plugins) - #18783 - Enable filtering all applicable models by tag ID
- #18785 - Enable custom choices for rack, device, and module airflow
- #18896 - Enable the use of remote storage for custom scripts
Plugins
- #16630 - Plugins can now inject content within the HTML
<head>block via the newplugin_head()method on PluginTemplateExtension - #17424 - Extend ViewTab with a
visibleargument to control tab rendering - #17857 - Added a
release_trackattribute to PluginConfig - #18305 - Introduce plugin support for ContactsMixin
- #19073 - Allow installed plugins to be omitted from the plugins list
Other Changes
- #18071 - Removed legacy staged changed functionality in favor of the netbox-branching plugin
- #18072 - Drop support for the singular
modelattribute on PluginTemplateExtension (usemodelsinstead) - #18191 - Remove redundant PostgreSQL indexes
- #18236 - Upgrade the HTMX library to v2.0
- #18540 - Operational plugins are now recorded in the application registry
- #18623 - Upgrade the Tabler CSS theme to v1.2
- #18743 - Upgrade Django to v5.2
- #18751 - Change the default value for
ALLOW_TOKEN_RETRIEVALto False - #18808 - Squashed migration dependencies have been altered to rectify an issue with Django's
sqlmigratemanagement command - #18820 - PostgreSQL 13 is no longer supported
- #19004 - The use of inventory items has been deprecated in favor of modules. Inventory items and roles may be removed in a future NetBox release.
REST API Changes
- Added the following endpoints:
/api/extras/table-configs//api/extras/tagged-objects//api/dcim/module-type-profiles/
- core.DataSource
- Added the optional
sync_intervalfield
- Added the optional
- dcim.DeviceRole
- Added the optional
parentrecursive foreign key field to effect hierarchical ordering - Added a
commentsfield
- Added the optional
- dcim.Location
- Added a
commentsfield
- Added a
- dcim.ModuleType
- Added the optional
profileforeign key to the new ModuleTypeProfile model
- Added the optional
- dcim.PowerOutlet
- Added a
statusfield
- Added a
- dcim.Rack
- Added the optional
outer_heightfield
- Added the optional
- dcim.RackType
- Added the optional
outer_heightfield
- Added the optional
- dcim.Region
- Added a
commentsfield
- Added a
- dcim.SiteGroup
- Added a
commentsfield
- Added a
- extras.ConfigTemplate
- Added optional fields
mime_type,file_name,file_extensionandas_attachment
- Added optional fields
- extras.ExportTemplate
- Added optional fields
file_nameandenvironment_params(JSON)
- Added optional fields
- extras.Tag
- Added a
weightfield
- Added a
- ipam.IPRange
- Added a
mark_populaedboolean field
- Added a
- ipam.L2VPN
- Added a
statusfield
- Added a
- ipam.Service
- Removed the
deviceandvirtual_machineforeign key fields - Added the
parent_object_type,parent_object_id, and (read-only)parentfields
- Removed the
- ipam.VLANGroup
- Added the optional
tenantforeign key field
- Added the optional
- tenancy.Contact
- Removed the
groupforeign key field - Added the
groupsmany-to-many field
- Removed the
- tenancy.ContactGroup
- Added a
commentsfield
- Added a
- tenancy.TenantGroup
- Added a
commentsfield
- Added a
- wireless.WirelessLANGroup
- Added a
commentsfield
- Added a