Skip to content

For Developers

This section covers technical changes to the underlying data models and programmable interfaces and is intended for developers or integrators to help facilitate any necessary changes to functional code in Apps that extend Nautobot.

Database (ORM) Changes

Database Field Behavior Changes

Model Field Changes
IPAddress role Changed from CharField to a ForeignKey to the new Role model.
IPAddress primary_ip4_for Now a list as the reverse relation for the Device.primary_ip4 foreign key
IPAddress primary_ip6_for Now a list as the reverse relation for the Device.primary_ip6 foreign key
Prefix is_pool Replaced by new field type, valid choices are "Container", "Network" and "Pool"
Prefix namespace New required foreign key to Namespace, defaulting to 'Global'
Prefix status "Container" status has been replaced by new field type
VRF namespace New required foreign key to Namespace, defaulting to 'Global'

Renamed Database Fields

Most renamed database fields in Nautobot 2.0 fall into the following general categories:

  1. Renaming of foreign keys and reverse relations to more consistently and specifically match the related model name or plural name (for example, Circuit.terminations to Circuit.circuit_terminations, Rack.group to Rack.rack_group)
  2. Explicitly for the IPAddress and Prefix models, family, a derived field, was replaced with ip_version, a concrete integer field that may be used in query filters.
Model Renamed Field New Name
IPAddress family ip_version
IPAddress prefix_length mask_length
Prefix family ip_version
Service ipaddresses ip_addresses
VLAN group vlan_group

Removed Database Fields

Most removed database fields in Nautobot 2.0 fall into the following general categories:

  1. Removal of references to removed models such as Site and Region
  2. Removal of slug fields in preference to the use of the natural key.
Model Removed Field Comments
IPAddress assigned_object Replaced by interfaces and vm_interfaces many-to-many relations
IPAddress broadcast Use parent Prefix's broadcast instead
IPAddress vrf VRF is now related to the assigned Interface(s), as well as the parent Prefix
Prefix is_pool Replaced by new type field
Prefix site Use location instead
Prefix vrf Replaced by vrf_assignments many-to-many relation
RouteTarget slug
VLAN site Use location instead
VLANGroup site Use location instead
VLANGroup slug
VRF enforce_unique Uniqueness of Prefixes and IPAddresses is now enforced by the database

Replaced Models

The ipam.Role model has been removed and replaced by a single extras.Role model. This means that any references to the removed models in the code now use the extras.Role model instead.

Removed Model Replaced With
ipam.Role extras.Role

GraphQL and REST API Changes Changes

API Behavior changes

Most of the API behavior changes in Nautobot 2.0 fall into the following general categories:

  1. The created field on most models has changed from a date only ("2023-04-06") to being a date/time ("2023-04-06T19:57:45.320232Z")
  2. The status fields on various models has changed from a pseudo-enum value (containing a "value" and a "label") to referencing the related Status object in full, similar to other foreign-key fields.
  3. Various models that had a required site field and an optional location field now have a required location field.
Model Field Changes
IPAddress parent A new foreign-key to Prefix. Required on creation, if namespace isn't provided, to find a correct parent Prefix
IPAddress role Now is a foreign-key to Role rather than a string
IPAddress status Now is a foreign-key rather than a pseudo-enum
Prefix namespace New required foreign key to Namespace, defaulting to 'Global'
Prefix status Now is a foreign-key rather than a pseudo-enum
VLAN status Now is a foreign-key rather than a pseudo-enum
VRF namespace New required foreign key to Namespace, defaulting to 'Global'

Renamed Serializer Fields

Most renamed API fields in Nautobot 2.0 fall into the following general categories:

  1. Renaming of foreign keys and reverse relations to more consistently and specifically match the related model name or plural name (for example, Circuit.type to Circuit.circuit_type, Interface.count_ipaddresses to Interface.ip_address_count)
Model Renamed Field New Name
IPAddress family ip_version
Prefix family ip_version
VLAN group vlan_group

Removed Serializer Fields

Most removed database fields in Nautobot 2.0 fall into the following general categories:

  1. Removal of references to removed models such as Site and Region
  2. Removal of slug fields in preference to the use of the natural key.
Model/Endpoint Removed Field Comments
IPAddress assigned_object Changed to many-to-many field. Use the REST API view for IPAddressToInterface(/api/ipam/ip-address-to-interface/) to create/modify/delete associations or interfaces/vm_interfaces on this model to retrieve a list of associated interfaces.
IPAddress broadcast Use parent Prefix's broadcast instead
IPAddress vrf VRF is now related to the assigned Interface(s), as well as the parent Prefix
Prefix is_pool Use type instead
Prefix vrf Prefixes are now assigned to a VRF in the same Namespace via a many-to-many relationship
Prefix site Use location instead
RouteTarget slug
VLAN site Use location instead
VLANGroup site Use location instead
VLANGroup slug
VRF enforce_unique Uniqueness of Prefixes and IPAddresses is now enforced at the database level

Replaced Endpoints

The endpoint /ipam/roles/ is no longer available. Instead, use the /extras/roles/ endpoint to retrieve and manipulate role data.

Removed Endpoints Replaced With
/ipam/roles/ /extras/roles/

UI, GraphQL, and REST API Filter Changes

Renamed Filter Fields

Most renamed filter fields in Nautobot 2.0 fall into the following general categories:

  1. The tag filter is renamed to tags on all models supporting Tags.
  2. Renames to match renamed model/serializer fields as described earlier in this document.
  3. Related membership filters are renamed to has_<related> throughout, for example ConsolePort.cabled is renamed to ConsolePort.has_cable.
  4. Most <related>_id filters have been merged into the corresponding <related> filter (see "Enhanced Filter Fields" below).
Model Renamed Filter New Name Renamed Field
IPAddress assigned_to_interface has_interface_assignments
IPAddress family ip_version
IPAddress parent prefix
IPAddress tag tags
Prefix family ip_versionip_version
Prefix is_pool type
Prefix tag tags
RouteTarget tag tags
Service tag tags
VLAN group vlan_group
VLAN tag tags
VRF tag tags

Enhanced Filter Fields

Below is a table documenting enhanced filter field changes in Nautobot 2.0. These enhancements mostly fall into the following general categories:

  1. Many filters are enhanced to permit filtering by UUID or by name.
  2. Filters that previously only supported a single filter value can now filter on multiple values.
Model Filter Enhancements
IPAddress mask_length Filtering on multiple integer values
IPAddress rir Filter by UUID or by name
IPAddress tenant Filter by UUID or by name
IPAddress tenant_group Filter by UUID or by name
Prefix rir Filter by UUID or by name
Prefix tenant Filter by UUID or by name
Prefix tenant_group Filter by UUID or by name
RouteTarget tenant Filter by UUID or by name
RouteTarget tenant_group Filter by UUID or by name
VLAN available_on_device Filtering on multiple values
VLAN tenant Filter by UUID or by name
VLAN tenant_group Filter by UUID or by name
VLAN vlan_group Filter by UUID or by name
VRF tenant Filter by UUID or by name
VRF tenant_group Filter by UUID or by name

Corrected Filter Fields

Below is a table documenting corrected filter field changes in Nautobot 2.0. These corrections mostly involve filters that previously permitted filtering on related membership only (/api/dcim/devices/?console_ports=True) and have now been corrected into filters for related membership (/api/dcim/devices/?has_console_ports=True) as well as by actual related objects (/api/dcim/devices/?console_ports=<UUID>).

Model Filter Correction
IPAddress parent The parent filter now checks for an exact match of the parent Prefix; for legacy net_host_contained behavior now use the new prefix filter instead

Removed Filter Fields

Below is a table documenting removed filter field changes in v2.x. Most removed database fields in Nautobot 2.0 fall into the following general categories:

  1. Removal of *_id=<uuid> filters as they have have been merged into filters that support both uuid and name/slug (for example, instead of /api/circuits/circuits/?provider_id=<UUID>, use /api/circuits/circuits/?provider=<uuid>).
  2. Removal of filtering on removed models such as Region and Site. (Use location filters instead.)
  3. Removal of slug filters from models that no longer have a slug field.
Model Removed Filter Comments
Prefix region
Prefix region_id
Prefix site
Prefix site_id
Prefix vrf_id Use vrf filter instead
RouteTarget slug
RouteTarget tenant_group_id
VLAN group_id Use vlan_group filter
VLAN region
VLAN region_id
VLAN site
VLAN site_id
VLAN tenant_group_id
VLANGroup region
VLANGroup region_id
VLANGroup site
VLANGroup site_id
VLANGroup slug
VRF tenant_group_id