5555 location = "query" ,
5656 description = "Set to true to preview unpublished content (admin access required)" ,
5757 required = False ,
58- )
58+ ),
5959 ]
6060 )
6161
62- except ImportError : # pragma: no cover
62+ except ImportError : # pragma: no cover
63+
6364 class OpenApiTypes :
6465 BOOL = "boolean"
6566 INT = "integer"
@@ -76,6 +77,7 @@ def __init__(self, *args, **kwargs):
7677 def extend_schema (* _args , ** _kwargs ): # pragma: no cover
7778 def _decorator (obj : T ) -> T :
7879 return obj
80+
7981 return _decorator
8082
8183 def extend_placeholder_schema (func : Callable [P , T ]) -> Callable [P , T ]:
@@ -268,13 +270,32 @@ def get(self, request: Request) -> Response:
268270 return Response (definitions )
269271
270272
273+ try :
274+ from drf_spectacular .utils import extend_schema , OpenApiResponse
275+
276+ def method_schema_decorator (method ):
277+ """
278+ Decorator for adding OpenAPI schema to a method.
279+ Needed to force the schema to use many=True for NavigationNodeSerializer.
280+ """
281+ return extend_schema (
282+ responses = OpenApiResponse (response = NavigationNodeSerializer (many = True ))
283+ )(method )
284+
285+ except ImportError : # pragma: no cover
286+
287+ def method_schema_decorator (method ): # pragma: no cover
288+ return method # pragma: no cover
289+
290+
271291class MenuView (BaseAPIView ):
272292 permission_classes = [IsAllowedPublicLanguage ]
273293 serializer_class = NavigationNodeSerializer
274294
275295 tag = ShowMenu
276296 return_key = "children"
277297
298+ @method_schema_decorator
278299 def get (
279300 self ,
280301 request : Request ,
0 commit comments