Skip to content

Commit e0e123c

Browse files
committed
🐛 [#576] fix invalid data field type in api spec
1 parent 659df56 commit e0e123c

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

src/objects/api/v2/openapi.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -858,6 +858,8 @@ components:
858858
minimum: 0
859859
description: Version of the OBJECTTYPE for data in the object record
860860
data:
861+
type: object
862+
additionalProperties: true
861863
description: Object data, based on OBJECTTYPE
862864
geometry:
863865
allOf:
@@ -1016,6 +1018,8 @@ components:
10161018
minimum: 0
10171019
description: Version of the OBJECTTYPE for data in the object record
10181020
data:
1021+
type: object
1022+
additionalProperties: true
10191023
description: Object data, based on OBJECTTYPE
10201024
geometry:
10211025
allOf:
@@ -1178,6 +1182,8 @@ components:
11781182
type: boolean
11791183
description: Use field-based authorization
11801184
fields:
1185+
type: object
1186+
additionalProperties: true
11811187
nullable: true
11821188
title: Mode
11831189
description: Fields allowed for this token in relation to objecttype versions.

src/objects/utils/apps.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
from django.apps import AppConfig
22

33
from drf_spectacular.extensions import OpenApiFilterExtension
4-
4+
from django.db import models
5+
from rest_framework.serializers import ModelSerializer
6+
from .fields import JSONObjectField
57

68
def unregister_camelize_filter_extension():
79
"""
@@ -23,3 +25,6 @@ def ready(self):
2325
from . import oas_extensions # noqa
2426

2527
unregister_camelize_filter_extension()
28+
29+
field_mapping = ModelSerializer.serializer_field_mapping
30+
field_mapping[models.JSONField] = JSONObjectField

src/objects/utils/fields.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from drf_spectacular.utils import extend_schema_field
2+
from rest_framework import serializers
3+
4+
5+
@extend_schema_field({"type": "object", "additionalProperties": True})
6+
class JSONObjectField(serializers.JSONField):
7+
"""
8+
serializers.JSONField does not have a type by default and will show `any` in api spec.
9+
"""

0 commit comments

Comments
 (0)