[PR #11626] [MERGED] 9608 drf spectacular2 #13818

Closed
opened 2025-12-29 23:20:59 +01:00 by adam · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/netbox-community/netbox/pull/11626
Author: @arthanson
Created: 1/31/2023
Status: Merged
Merged: 3/30/2023
Merged by: @jeremystretch

Base: featureHead: 9608-drf-spectacular2


📝 Commits (10+)

📊 Changes

35 files changed (+513 additions, -339 deletions)

View changed files

📝 base_requirements.txt (+3 -3)
📝 netbox/circuits/api/nested_serializers.py (+8 -0)
📝 netbox/circuits/api/serializers.py (+4 -4)
netbox/core/api/schema.py (+224 -0)
📝 netbox/core/apps.py (+1 -0)
📝 netbox/dcim/api/nested_serializers.py (+38 -1)
📝 netbox/dcim/api/serializers.py (+57 -43)
📝 netbox/dcim/api/views.py (+10 -17)
📝 netbox/dcim/tests/test_api.py (+1 -1)
📝 netbox/extras/api/customfields.py (+3 -0)
📝 netbox/extras/api/serializers.py (+7 -5)
📝 netbox/extras/api/views.py (+2 -2)
📝 netbox/extras/plugins/views.py (+5 -4)
📝 netbox/ipam/api/nested_serializers.py (+13 -0)
📝 netbox/ipam/api/serializers.py (+11 -9)
📝 netbox/ipam/api/views.py (+33 -21)
📝 netbox/ipam/filtersets.py (+0 -2)
📝 netbox/netbox/api/fields.py (+4 -0)
📝 netbox/netbox/api/serializers/base.py (+3 -0)
📝 netbox/netbox/api/serializers/generic.py (+2 -2)

...and 15 more files

📄 Description

Fixes: #9608

Removes drf-yasg and replaces it with drf-spectacular which allows us to go from Swagger 2 to OpenAPI 3.

Warning


This will be a breaking change to people who rely on the swagger files.

The documentation will also need to be updated for this change.

There are still a few warnings around IPAddressField but it defaults to string which is correct. You can generate the file and see any warnings via:

netbox/manage.py spectacular --file schema.yaml --validate --fail-on-warn

Implemenation Notes:

  1. had to add allow_null=True to many serializers. This should be correct as for example provider_network if you look at the class it is a nullable field.

  2. code for NetBoxAutoSchema is to fix the bulk operations.

  3. The 3 generated spec specify all(?) readonly fields as required. e.g. Prefix which list as required: [ "_depth", "children", "created" "display", "family", "id", "last_updated", "prefix", "url"]. This is different then the 2 spec where the readonly fields are not required. The 3 spec is more correct as the field are marked as readonly, however it is possible some client generators may have difficult with this, this can be controlled via a settings for SPECTACULAR_SETTINGS:

# Aid client generator targets that have trouble with read-only properties.
'COMPONENT_NO_READ_ONLY_REQUIRED': True,
  1. Had to add some get_serializer_class to some ViewSets - these views had different serializers for get/post but didn't define a base serializer which caused issues with drf-spectacular. First put a base serializer in with serializer_class =, however this caused side-issues of it being a class within NetBoxAutoSchema so used the get_serializer_class.

  2. There is difference in the paths in the schema old (api is prefixed): "/circuits/circuit-terminations/" new: "/api/circuits/circuit-terminations/" not sure if this would have any effects on clients.

  3. The Writable classes have "Request" post-pended to the name via spectacular, again don't think this will have any major effect on clients: "$ref: '#/definitions/WritableCircuitTermination'" -> "$ref: '#/components/schemas/WritableCircuitTerminationRequest'"

  4. Descriptions for the classes in the schema are not good, usually defaulting to a base item, however the descriptions are not present in the 2.0 schema file, so not something broken just has never been added. Better descriptions to the serializers can be added in the future. For example the WritableCircuitRequest has the description "description: Adds support for custom fields and tags."

Merging Info

2.0 Compatibility: We should wait to merge this to just before Beta (all other changes in) then generate the 2.0 yaml and json schema files and include them in the repo (or make the available to people) then merge this. This will give end-users more time to adapt to this as the 2.0 schema files will still be available.

Warnings

Currently has the following warnings - these default to string, or auto resolve, can look at going through and cleaning these up so no warnings later.

Not sure why IPAddressField is causing warnings - tried to override it in several places to prevent the warning without success, again defaults to string which is correct.

/Users/ahanson/dev/work/netbox/netbox/ipam/api/nested_serializers.py: Warning [DeviceViewSet > DeviceWithConfigContextSerializer > NestedIPAddressSerializer]: model field "IPAddressField" has no mapping in ModelSerializer. It may be a deprecated field. Defaulting to "string"
/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [DeviceViewSet > WritableDeviceWithConfigContextSerializer]: unable to resolve type hint for function "primary_ip". Consider using a type hint or @extend_schema_field. Defaulting to string.
/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [InterfaceViewSet > WritableInterfaceSerializer]: unable to resolve type hint for function "l2vpn_termination". Consider using a type hint or @extend_schema_field. Defaulting to string.
/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [VirtualDeviceContextViewSet > WritableVirtualDeviceContextSerializer]: unable to resolve type hint for function "primary_ip". Consider using a type hint or @extend_schema_field. Defaulting to string.
/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [AggregateViewSet > WritableAggregateSerializer]: unable to resolve type hint for function "family". Consider using a type hint or @extend_schema_field. Defaulting to string.
/Users/ahanson/dev/work/netbox/netbox/ipam/api/serializers.py: Warning [IPAddressViewSet > IPAddressSerializer]: model field "IPAddressField" has no mapping in ModelSerializer. It may be a deprecated field. Defaulting to "string"
/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [IPAddressViewSet > WritableIPAddressSerializer]: unable to resolve type hint for function "family". Consider using a type hint or @extend_schema_field. Defaulting to string.
/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [IPAddressViewSet > WritableIPAddressSerializer]: model field "IPAddressField" has no mapping in ModelSerializer. It may be a deprecated field. Defaulting to "string"
/Users/ahanson/dev/work/netbox/netbox/ipam/api/serializers.py: Warning [IPRangeViewSet > IPRangeSerializer]: model field "IPAddressField" has no mapping in ModelSerializer. It may be a deprecated field. Defaulting to "string"
/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [IPRangeViewSet > WritableIPRangeSerializer]: unable to resolve type hint for function "family". Consider using a type hint or @extend_schema_field. Defaulting to string.
/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [IPRangeViewSet > WritableIPRangeSerializer]: model field "IPAddressField" has no mapping in ModelSerializer. It may be a deprecated field. Defaulting to "string"
/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [PrefixViewSet > WritablePrefixSerializer]: unable to resolve type hint for function "family". Consider using a type hint or @extend_schema_field. Defaulting to string.
/Users/ahanson/dev/work/netbox/netbox/ipam/filtersets.py: Warning [ServiceViewSet > ServiceFilterSet]: model field "IPAddressField" has no mapping in ModelSerializer. It may be a deprecated field. Defaulting to "string"
/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [AvailableVLANsView > WritableVLANSerializer]: unable to resolve type hint for function "l2vpn_termination". Consider using a type hint or @extend_schema_field. Defaulting to string.
/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [VLANViewSet > WritableVLANSerializer]: unable to resolve type hint for function "l2vpn_termination". Consider using a type hint or @extend_schema_field. Defaulting to string.
/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [VMInterfaceViewSet > WritableVMInterfaceSerializer]: unable to resolve type hint for function "l2vpn_termination". Consider using a type hint or @extend_schema_field. Defaulting to string.
/Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [VirtualMachineViewSet > WritableVirtualMachineWithConfigContextSerializer]: unable to resolve type hint for function "primary_ip". Consider using a type hint or @extend_schema_field. Defaulting to string.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "TypeDdfEnum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Type261Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Type666Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Type6e5Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Type2fcEnum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Type209Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Type653Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "protocol". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Protocol766Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "protocol". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "ProtocolFe4Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "auth_type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "AuthTypeF47Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "status". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Status565Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "status". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Status6a0Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "status". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Status62cEnum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "status". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Status71fEnum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.
Warning: enum naming encountered a non-optimally resolvable collision for fields named "status". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "StatusB66Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/netbox-community/netbox/pull/11626 **Author:** [@arthanson](https://github.com/arthanson) **Created:** 1/31/2023 **Status:** ✅ Merged **Merged:** 3/30/2023 **Merged by:** [@jeremystretch](https://github.com/jeremystretch) **Base:** `feature` ← **Head:** `9608-drf-spectacular2` --- ### 📝 Commits (10+) - [`3a9e431`](https://github.com/netbox-community/netbox/commit/3a9e431662abb0d18ba4e3205063fa8c0404003f) Closes #10923: Remove unused NetBoxModelCSVForm class - [`4d221f4`](https://github.com/netbox-community/netbox/commit/4d221f426ecbaad31701ab8cae1e5e4e2c28b788) Closes #10604: Remove unused extra_tabs block from object.html generic template - [`d997fe9`](https://github.com/netbox-community/netbox/commit/d997fe943234d408a00d8588190928cd7a0d49f1) Merge branch 'develop' into feature - [`1890286`](https://github.com/netbox-community/netbox/commit/1890286959333393442d1d7255badb9a43473e1b) Closes #11489: Refactor & combine core middleware - [`4faa3b4`](https://github.com/netbox-community/netbox/commit/4faa3b4e234de5f890d9b749df2c03fc7d426808) Remove old feature version notices - [`ff4eb41`](https://github.com/netbox-community/netbox/commit/ff4eb41c09118c0c71fc2b31d83cf13999f03454) Closes #11254: Introduce the X-Request-ID HTTP header to annotate the unique ID of each request for change logging - [`943dca7`](https://github.com/netbox-community/netbox/commit/943dca7b952c2d3ead1cb65e9a27710715200c2e) Closes #8184: Enable HTMX for embedded tables (#11518) - [`dceffca`](https://github.com/netbox-community/netbox/commit/dceffca849f65ba214d85b3e2f49a25381dfd2b0) Merge branch 'develop' into feature - [`024df81`](https://github.com/netbox-community/netbox/commit/024df8176066a7d69025ae85aaa1724f0e37a5a3) Add the `enabled` filed to InterfaceTemplate - [`bab1ce7`](https://github.com/netbox-community/netbox/commit/bab1ce77e5d42f132928fe7a6df562a0eaaa55ab) Changelog for #11440 ### 📊 Changes **35 files changed** (+513 additions, -339 deletions) <details> <summary>View changed files</summary> 📝 `base_requirements.txt` (+3 -3) 📝 `netbox/circuits/api/nested_serializers.py` (+8 -0) 📝 `netbox/circuits/api/serializers.py` (+4 -4) ➕ `netbox/core/api/schema.py` (+224 -0) 📝 `netbox/core/apps.py` (+1 -0) 📝 `netbox/dcim/api/nested_serializers.py` (+38 -1) 📝 `netbox/dcim/api/serializers.py` (+57 -43) 📝 `netbox/dcim/api/views.py` (+10 -17) 📝 `netbox/dcim/tests/test_api.py` (+1 -1) 📝 `netbox/extras/api/customfields.py` (+3 -0) 📝 `netbox/extras/api/serializers.py` (+7 -5) 📝 `netbox/extras/api/views.py` (+2 -2) 📝 `netbox/extras/plugins/views.py` (+5 -4) 📝 `netbox/ipam/api/nested_serializers.py` (+13 -0) 📝 `netbox/ipam/api/serializers.py` (+11 -9) 📝 `netbox/ipam/api/views.py` (+33 -21) 📝 `netbox/ipam/filtersets.py` (+0 -2) 📝 `netbox/netbox/api/fields.py` (+4 -0) 📝 `netbox/netbox/api/serializers/base.py` (+3 -0) 📝 `netbox/netbox/api/serializers/generic.py` (+2 -2) _...and 15 more files_ </details> ### 📄 Description <!-- Thank you for your interest in contributing to NetBox! Please note that our contribution policy requires that a feature request or bug report be approved and assigned prior to opening a pull request. This helps avoid waste time and effort on a proposed change that we might not be able to accept. IF YOUR PULL REQUEST DOES NOT REFERENCE AN ISSUE WHICH HAS BEEN ASSIGNED TO YOU, IT WILL BE CLOSED AUTOMATICALLY. Please specify your assigned issue number on the line below. --> ### Fixes: #9608 <!-- Please include a summary of the proposed changes below. --> Removes drf-yasg and replaces it with drf-spectacular which allows us to go from Swagger 2 to OpenAPI 3. > **Warning** > **This will be a breaking change** to people who rely on the swagger files. The documentation will also need to be updated for this change. There are still a few warnings around IPAddressField but it defaults to string which is correct. You can generate the file and see any warnings via: ``` netbox/manage.py spectacular --file schema.yaml --validate --fail-on-warn ``` ### Implemenation Notes: 1. had to add **allow_null=True** to many serializers. This should be correct as for example [provider_network](https://github.com/netbox-community/netbox/pull/11626/files#diff-bd848372493e9e101ca3ddb29b0866e423f05db047005bf6407d1a11da19b1b5R74) if you look at the [class](https://github.com/netbox-community/netbox/blob/develop/netbox/circuits/models/circuits.py#L156) it is a nullable field. 2. code for [NetBoxAutoSchema](https://github.com/netbox-community/netbox/pull/11626/files#diff-51b2b6c8a0aca95ed0d9d121416fcfde6972e26facee45127647dbca11caac52) is to fix the bulk operations. 3. The 3 generated spec specify all(?) readonly fields as required. e.g. Prefix which list as required: [ "_depth", "children", "created" "display", "family", "id", "last_updated", "prefix", "url"]. This is different then the 2 spec where the readonly fields are not required. The 3 spec is more correct as the field are marked as readonly, however it is possible some client generators may have difficult with this, this can be controlled via a settings for SPECTACULAR_SETTINGS: ``` # Aid client generator targets that have trouble with read-only properties. 'COMPONENT_NO_READ_ONLY_REQUIRED': True, ``` 4. Had to add some get_serializer_class to some ViewSets - these views had different serializers for get/post but didn't define a base serializer which caused issues with drf-spectacular. First put a base serializer in with serializer_class =, however this caused side-issues of it being a class within NetBoxAutoSchema so used the get_serializer_class. 5. There is difference in the paths in the schema old (api is prefixed): "/circuits/circuit-terminations/" new: "/api/circuits/circuit-terminations/" not sure if this would have any effects on clients. 6. The Writable classes have "Request" post-pended to the name via spectacular, again don't think this will have any major effect on clients: "$ref: '#/definitions/WritableCircuitTermination'" -> "$ref: '#/components/schemas/WritableCircuitTerminationRequest'" 7. Descriptions for the classes in the schema are not good, usually defaulting to a base item, however the descriptions are not present in the 2.0 schema file, so not something broken just has never been added. Better descriptions to the serializers can be added in the future. For example the WritableCircuitRequest has the description "description: Adds support for custom fields and tags." ### Merging Info > **2.0 Compatibility**: We should wait to merge this to just before Beta (all other changes in) then generate the 2.0 yaml and json schema files and include them in the repo (or make the available to people) then merge this. This will give end-users more time to adapt to this as the 2.0 schema files will still be available. ### Warnings Currently has the following warnings - these default to string, or auto resolve, can look at going through and cleaning these up so no warnings later. Not sure why IPAddressField is causing warnings - tried to override it in several places to prevent the warning without success, again defaults to string which is correct. /Users/ahanson/dev/work/netbox/netbox/ipam/api/nested_serializers.py: Warning [DeviceViewSet > DeviceWithConfigContextSerializer > NestedIPAddressSerializer]: model field "IPAddressField" has no mapping in ModelSerializer. It may be a deprecated field. Defaulting to "string" /Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [DeviceViewSet > WritableDeviceWithConfigContextSerializer]: unable to resolve type hint for function "primary_ip". Consider using a type hint or @extend_schema_field. Defaulting to string. /Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [InterfaceViewSet > WritableInterfaceSerializer]: unable to resolve type hint for function "l2vpn_termination". Consider using a type hint or @extend_schema_field. Defaulting to string. /Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [VirtualDeviceContextViewSet > WritableVirtualDeviceContextSerializer]: unable to resolve type hint for function "primary_ip". Consider using a type hint or @extend_schema_field. Defaulting to string. /Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [AggregateViewSet > WritableAggregateSerializer]: unable to resolve type hint for function "family". Consider using a type hint or @extend_schema_field. Defaulting to string. /Users/ahanson/dev/work/netbox/netbox/ipam/api/serializers.py: Warning [IPAddressViewSet > IPAddressSerializer]: model field "IPAddressField" has no mapping in ModelSerializer. It may be a deprecated field. Defaulting to "string" /Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [IPAddressViewSet > WritableIPAddressSerializer]: unable to resolve type hint for function "family". Consider using a type hint or @extend_schema_field. Defaulting to string. /Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [IPAddressViewSet > WritableIPAddressSerializer]: model field "IPAddressField" has no mapping in ModelSerializer. It may be a deprecated field. Defaulting to "string" /Users/ahanson/dev/work/netbox/netbox/ipam/api/serializers.py: Warning [IPRangeViewSet > IPRangeSerializer]: model field "IPAddressField" has no mapping in ModelSerializer. It may be a deprecated field. Defaulting to "string" /Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [IPRangeViewSet > WritableIPRangeSerializer]: unable to resolve type hint for function "family". Consider using a type hint or @extend_schema_field. Defaulting to string. /Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [IPRangeViewSet > WritableIPRangeSerializer]: model field "IPAddressField" has no mapping in ModelSerializer. It may be a deprecated field. Defaulting to "string" /Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [PrefixViewSet > WritablePrefixSerializer]: unable to resolve type hint for function "family". Consider using a type hint or @extend_schema_field. Defaulting to string. /Users/ahanson/dev/work/netbox/netbox/ipam/filtersets.py: Warning [ServiceViewSet > ServiceFilterSet]: model field "IPAddressField" has no mapping in ModelSerializer. It may be a deprecated field. Defaulting to "string" /Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [AvailableVLANsView > WritableVLANSerializer]: unable to resolve type hint for function "l2vpn_termination". Consider using a type hint or @extend_schema_field. Defaulting to string. /Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [VLANViewSet > WritableVLANSerializer]: unable to resolve type hint for function "l2vpn_termination". Consider using a type hint or @extend_schema_field. Defaulting to string. /Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [VMInterfaceViewSet > WritableVMInterfaceSerializer]: unable to resolve type hint for function "l2vpn_termination". Consider using a type hint or @extend_schema_field. Defaulting to string. /Users/ahanson/dev/work/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py: Warning [VirtualMachineViewSet > WritableVirtualMachineWithConfigContextSerializer]: unable to resolve type hint for function "primary_ip". Consider using a type hint or @extend_schema_field. Defaulting to string. Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "TypeDdfEnum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Type261Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Type666Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Type6e5Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Type2fcEnum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Type209Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Type653Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "protocol". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Protocol766Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "protocol". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "ProtocolFe4Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "auth_type". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "AuthTypeF47Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "status". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Status565Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "status". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Status6a0Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "status". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Status62cEnum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "status". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "Status71fEnum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. Warning: enum naming encountered a non-optimally resolvable collision for fields named "status". The same name has been used for multiple choice sets in multiple components. The collision was resolved with "StatusB66Enum". add an entry to ENUM_NAME_OVERRIDES to fix the naming. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
adam added the pull-request label 2025-12-29 23:20:59 +01:00
adam closed this issue 2025-12-29 23:20:59 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#13818