Skip to content

Commit deb305f

Browse files
committed
🐛 [#576] fix invalid data field type in api spec
1 parent 1dcce4a commit deb305f

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
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: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
from django.apps import AppConfig
2+
from django.db import models
23

34
from drf_spectacular.extensions import OpenApiFilterExtension
5+
from rest_framework.serializers import ModelSerializer
6+
7+
from .fields import JSONObjectField
48

59

610
def unregister_camelize_filter_extension():
@@ -23,3 +27,6 @@ def ready(self):
2327
from . import oas_extensions # noqa
2428

2529
unregister_camelize_filter_extension()
30+
31+
field_mapping = ModelSerializer.serializer_field_mapping
32+
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)