Skip to content

Commit 44e731a

Browse files
Release v4.5.0-beta1
1 parent a364ee8 commit 44e731a

File tree

25 files changed

+14486
-7316
lines changed

25 files changed

+14486
-7316
lines changed

contrib/openapi.json

Lines changed: 8036 additions & 1054 deletions
Large diffs are not rendered by default.

docs/release-notes/index.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@ Minor releases are published in April, August, and December of each calendar yea
1010

1111
This page contains a history of all major and minor releases since NetBox v2.0. For more detail on a specific patch release, please see the release notes page for that specific minor release.
1212

13+
#### [Version 4.5](./version-4.5.md) (January 2026)
14+
15+
* Lookup Modifiers in Filter Forms ([#7604](https://github.com/netbox-community/netbox/issues/7604))
16+
* Improved API Authentication Tokens ([#20210](https://github.com/netbox-community/netbox/issues/20210))
17+
* Object Ownership ([#20304](https://github.com/netbox-community/netbox/issues/20304))
18+
* Advanced Port Mappings ([#20564](https://github.com/netbox-community/netbox/issues/20564))
19+
* Cable Profiles ([#20788](https://github.com/netbox-community/netbox/issues/20788))
20+
1321
#### [Version 4.4](./version-4.4.md) (September 2025)
1422

1523
* Background Jobs for Bulk Operations ([#19589](https://github.com/netbox-community/netbox/issues/19589), [#19891](https://github.com/netbox-community/netbox/issues/19891))

docs/release-notes/version-4.5.md

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
## v4.5.0 (FUTURE)
2+
3+
### Breaking Changes
4+
5+
* Python 3.10 and 3.11 are no longer supported. NetBox now requires Python 3.12, 3.13, or 3.14.
6+
* GraphQL API queries which filter by object IDs or enums must now specify a filter lookup similar to other fields. For example, `id: 123` becomes `id: {exact: 123 }`.
7+
* Rendering a device or virtual machine configuration is now restricted to users with the `render_config` permission for the applicable object type.
8+
* Retrieval of API token plaintexts is no longer supported. The `ALLOW_TOKEN_RETRIEVAL` config parameter has been removed.
9+
* API tokens can no longer be reassigned from one user to another.
10+
* A config context assigned to a platform will now also apply to any children of that platform. (Although this is typically desired behavior, it may introduce unanticipated changes for existing deployments.)
11+
* The `/api/dcim/cable-terminations/` REST API endpoint is now read-only. Cable terminations must be set on cables directly via the `/api/dcim/cables/` endpoint.
12+
* The UI view dedicated to swapping A/Z circuit terminations has been removed.
13+
* The experimental HTMX navigation feature has been removed.
14+
* The obsolete boolean field `is_staff` has been removed from the `User` model.
15+
* Removal of deprecated behavior
16+
* The `/api/extras/object-types/` REST API endpoint has been removed. (Use `/api/core/object-types/` instead.)
17+
* Webhooks no longer specify a `model` in payload data. (Reference `object_type` instead, which includes the parent app label.)
18+
* The obsolete module `core.models.contenttypes` has been removed (replaced in v4.4 by `core.models.object_types`).
19+
* The `load_yaml()` and `load_json()` utility methods have been removed from the base class for custom scripts.
20+
21+
### New Features
22+
23+
#### Lookup Modifiers in Filter Forms ([#7604](https://github.com/netbox-community/netbox/issues/7604))
24+
25+
Most object list filters within the UI have been extended to include optional lookup modifiers to support more complex queries. For instance, filters for numeric values now include a dropdown where a user can select "less than," "greater than," or "not" in addition to the default equivalency match. The specific modifiers available depend on the type of each filter.
26+
27+
(Note that this feature does not introduce any new filters. Rather, it makes available in the UI filters which already exist.)
28+
29+
#### Improved API Authentication Tokens ([#20210](https://github.com/netbox-community/netbox/issues/20210))
30+
31+
This release introduces a new version of API token (v2) which implements several security improvements. HMAC hashing with a cryptographic pepper is used to authenticate these tokens, obviating the need to store plaintexts. The new tokens also employ a non-sensitive key which can be shared to identify tokens without divulging their plaintexts. We've also adopted the standard "bearer" HTTP header format, as shown below.
32+
33+
```
34+
# v1 token header
35+
Authorization: Token <TOKEN>
36+
37+
# v2 token header
38+
Authorization: Bearer nbt_<KEY>.<TOKEN>
39+
```
40+
41+
Note that v2 token keys are prefixed with the fixed string `nbt_`, which can be used to aid in secret detection.
42+
43+
Backward compatibility with legacy (v1) tokens is retained in this release. However, users are strongly encouraged to begin using only v2 tokens, as support for legacy tokens will be removed in NetBox v4.7.
44+
45+
#### Object Ownership ([#20304](https://github.com/netbox-community/netbox/issues/20304))
46+
47+
An optional `owner` foreign key field has been added to most models. This enables the assignment of objects to a new Owner model, which represents a set of users and/or groups. Through this relationship, we can now convey ownership of objects within NetBox natively, without needing to rely on the assignment of tags or custom fields.
48+
49+
(Note that ownership differs significantly in function from tenancy. Ownership determines the parties responsible for the maintenance of an object, whereas as tenancy conveys an operational dependency.)
50+
51+
#### Advanced Port Mappings ([#20564](https://github.com/netbox-community/netbox/issues/20564))
52+
53+
The previous many-to-one mapping of front to rear ports has been expanded to support bidirectional mappings. The `rear_port` and `rear_port_position` fields on the FrontPort model have been replaced with an intermediary PortMapping model, which supports any number of assignments between front port/position pair and a rear port/position pair. This change unlocks the ability to model complex inline devices that swap individual fiber pairs between cables.
54+
55+
#### Cable Profiles ([#20788](https://github.com/netbox-community/netbox/issues/20788))
56+
57+
Cables can now be assigned profiles which determine how they are treated for path tracing. A profile indicates the number of discrete parallel channels or lanes carried by the cable among its endpoints. For example, a 1-to-4 breakout cable has four lanes, shared at one end via a common termination and split out at the other end to four separate terminations. Profiles, when assigned, enable NetBox to more accurately trace a specific connection within a cable, rather than the cable as a whole.
58+
59+
The assignment of cable profiles is optional: Cable tracing will continue to operate as before for cables with no profile assigned.
60+
61+
### Enhancements
62+
63+
* [#16681](https://github.com/netbox-community/netbox/issues/16681) - Introduce a `render_config` permission, which is now required to render a device or virtual machine configuration
64+
* [#18658](https://github.com/netbox-community/netbox/issues/18658) - Add a `start_on_boot` choice field for virtual machines
65+
* [#19095](https://github.com/netbox-community/netbox/issues/19095) - Add support for Python 3.13 and 3.14
66+
* [#19338](https://github.com/netbox-community/netbox/issues/19338) - Enable filter lookups for object IDs and enums in GraphQL API queries
67+
* [#19523](https://github.com/netbox-community/netbox/issues/19523) - Cache the number of instances for device, module, and rack types, and enable filtering by these counts
68+
* [#20417](https://github.com/netbox-community/netbox/issues/20417) - Add an optional `color` field for device type power outlets
69+
* [#20476](https://github.com/netbox-community/netbox/issues/20476) - Once provisioned, the owner of an API token cannot be changed
70+
* [#20492](https://github.com/netbox-community/netbox/issues/20492) - Completely disabled the means to retrieve legacy API token plaintexts (removed the `ALLOW_TOKEN_RETRIEVAL` config parameter)
71+
* [#20639](https://github.com/netbox-community/netbox/issues/20639) - Apply config contexts to devices/VMs assigned any child platform of the parent platform
72+
* [#20834](https://github.com/netbox-community/netbox/issues/20834) - Add an `enabled` boolean field to API tokens
73+
* [#20917](https://github.com/netbox-community/netbox/issues/20917) - Include usage reference on API token views
74+
* [#20925](https://github.com/netbox-community/netbox/issues/20925) - Add optional `comments` field to all subclasses of `OrganizationalModel`
75+
* [#20929](https://github.com/netbox-community/netbox/issues/20929) - Require the `render_config` permission to view a rendered device/VM configuration in the UI
76+
* [#20936](https://github.com/netbox-community/netbox/issues/20936) - Introduce the `/api/authentication-check/` REST API endpoint for validating authentication tokens
77+
* [#20959](https://github.com/netbox-community/netbox/issues/20959) - Include a count of related module types for a manufacturer in the REST API
78+
79+
### Plugins
80+
81+
* [#13182](https://github.com/netbox-community/netbox/issues/13182) - Added `PrimaryModel`, `OrganizationalModel`, and `NestedGroupModel` to the plugins API, as well as their respective base classes for various resources
82+
83+
### Other Changes
84+
85+
* [#16137](https://github.com/netbox-community/netbox/issues/16137) - Remove the obsolete boolean field `is_staff` from the `User` model
86+
* [#17571](https://github.com/netbox-community/netbox/issues/17571) - Remove the experimental HTMX navigation feature
87+
* [#17936](https://github.com/netbox-community/netbox/issues/17936) - Introduce a dedicated `GFKSerializerField` for representing generic foreign keys in API serializers
88+
* [#19889](https://github.com/netbox-community/netbox/issues/19889) - Drop support for Python 3.10 and 3.11
89+
* [#19898](https://github.com/netbox-community/netbox/issues/19898) - Remove the obsolete REST API endpoint `/api/extras/object-types/`
90+
* [#20088](https://github.com/netbox-community/netbox/issues/20088) - Remove the non-deterministic `model` key from webhook payload data
91+
* [#20095](https://github.com/netbox-community/netbox/issues/20095) - Remove the obsolete module `core.models.contenttypes`
92+
* [#20096](https://github.com/netbox-community/netbox/issues/20096) - Remove the `load_yaml()` and `load_json()` utility methods from the `BaseScript` class
93+
* [#20204](https://github.com/netbox-community/netbox/issues/20204) - Started migrating object views from custom HTML templates to declarative layouts
94+
* [#20295](https://github.com/netbox-community/netbox/issues/20295) - Cable terminations may be modified via the REST API only by modifying the cable itself
95+
* [#20617](https://github.com/netbox-community/netbox/issues/20617) - Introduce `BaseModel` as the global base class for models
96+
* [#20683](https://github.com/netbox-community/netbox/issues/20683) - Remove the UI view dedicated to swapping A/Z circuit terminations
97+
* [#20926](https://github.com/netbox-community/netbox/issues/20926) - Standardize naming of GraphQL filters
98+
99+
### REST API Changes
100+
101+
* Most objects now include an optional `owner` foreign key field.
102+
* The `/api/dcim/cable-terminations` endpoint is now read-only.
103+
* Introduced the `/api/authentication-check/` endpoint to test REST API credentials
104+
* `circuits.CircuitGroup`
105+
* Add optional `comments` field
106+
* `circuits.CircuitType`
107+
* Add optional `comments` field
108+
* `circuits.VirtualCircuitType`
109+
* Add optional `comments` field
110+
* `dcim.Cable`
111+
* Add the optional `profile` choice field
112+
* `dcim.FrontPort`
113+
* Removed the `rear_port` and `rear_port_position` fields
114+
* Add the `positions` integer field
115+
* Add the `rear_ports` list for port mappings
116+
* `dcim.InventoryItemRole`
117+
* Add optional `comments` field
118+
* `dcim.Manufacturer`
119+
* Add optional `comments` field
120+
* Add read-only `moduletype_count` integer field
121+
* `dcim.ModuleType`
122+
* Add read-only `module_count` integer field
123+
* `dcim.PowerOutletTemplate`
124+
* Add optional `color` field
125+
* `dcim.RackRole`
126+
* Add optional `comments` field
127+
* `dcim.RackType`
128+
* Add read-only `rack_count` integer field
129+
* `dcim.RearPort`
130+
* Add the `front_ports` list for port mappings
131+
* `ipam.ASNRange`
132+
* Add optional `comments` field
133+
* `ipam.RIR`
134+
* Add optional `comments` field
135+
* `ipam.Role`
136+
* Add optional `comments` field
137+
* `ipam.VLANGroup`
138+
* Add optional `comments` field
139+
* `tenancy.ContactRole`
140+
* Add optional `comments` field
141+
* `users.Token`
142+
* Add `enabled` boolean field
143+
* `virtualization.ClusterGroup`
144+
* Add optional `comments` field
145+
* `virtualization.ClusterType`
146+
* Add optional `comments` field
147+
* `virtualization.VirtualMachine`
148+
* Add optional `start_on_boot` choice field
149+
* `vpn.TunnelGroup`
150+
* Add optional `comments` field

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ nav:
322322
- git Cheat Sheet: 'development/git-cheat-sheet.md'
323323
- Release Notes:
324324
- Summary: 'release-notes/index.md'
325+
- Version 4.5: 'release-notes/version-4.5.md'
325326
- Version 4.4: 'release-notes/version-4.4.md'
326327
- Version 4.3: 'release-notes/version-4.3.md'
327328
- Version 4.2: 'release-notes/version-4.2.md'

netbox/project-static/dist/netbox.js

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)