From c81f4da78002ccbee9a53a404d5fbc042861b846 Mon Sep 17 00:00:00 2001 From: Marcus Weiner Date: Wed, 26 Feb 2025 01:34:15 +0100 Subject: [PATCH] Fix definition of `vid_ranges` in `VLANGroup` so it shows up in the OpenAPI schema (#18237) --- netbox/core/api/schema.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/netbox/core/api/schema.py b/netbox/core/api/schema.py index 663ee2899f2..84bfae3bcc1 100644 --- a/netbox/core/api/schema.py +++ b/netbox/core/api/schema.py @@ -2,12 +2,13 @@ import typing from collections import OrderedDict -from drf_spectacular.extensions import OpenApiSerializerFieldExtension +from drf_spectacular.extensions import OpenApiSerializerFieldExtension, OpenApiSerializerExtension, _SchemaType from drf_spectacular.openapi import AutoSchema from drf_spectacular.plumbing import ( build_basic_type, build_choice_field, build_media_type_object, build_object_type, get_doc, ) from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import Direction from netbox.api.fields import ChoiceField from netbox.api.serializers import WritableNestedSerializer @@ -277,3 +278,20 @@ def map_serializer_field(self, auto_schema, direction): return component.ref if component else None else: return build_basic_type(OpenApiTypes.INT) + + +class FixIntegerRangeSerializerSchema(OpenApiSerializerExtension): + target_class = 'netbox.api.fields.IntegerRangeSerializer' + + def map_serializer(self, auto_schema: 'AutoSchema', direction: Direction) -> _SchemaType: + return { + 'type': 'array', + 'items': { + 'type': 'array', + 'items': { + 'type': 'integer', + }, + 'minItems': 2, + 'maxItems': 2, + }, + }