diff --git a/src/backend/InvenTree/InvenTree/api_version.py b/src/backend/InvenTree/InvenTree/api_version.py index 3e70a5d89b..a4a9836586 100644 --- a/src/backend/InvenTree/InvenTree/api_version.py +++ b/src/backend/InvenTree/InvenTree/api_version.py @@ -1,12 +1,15 @@ """InvenTree API version information.""" # InvenTree API version -INVENTREE_API_VERSION = 399 +INVENTREE_API_VERSION = 400 """Increment this API version number whenever there is a significant change to the API that any clients need to know about.""" INVENTREE_API_TEXT = """ +v400 -> 2025-10-05 : https://github.com/inventree/InvenTree/pull/10486 + - Adds return datatypes for admin/config and flags entpoints + v399 -> 2025-10-05 : https://github.com/inventree/InvenTree/pull/10445 - Refactors 'customer_detail' param in SalesOrder API endpoint - Refactors 'customer_detail' param in ReturnOrder API endpoint diff --git a/src/backend/InvenTree/common/api.py b/src/backend/InvenTree/common/api.py index e98a90e25c..97d9fb7e50 100644 --- a/src/backend/InvenTree/common/api.py +++ b/src/backend/InvenTree/common/api.py @@ -624,6 +624,9 @@ class FlagList(ListAPI): serializer_class = common.serializers.FlagSerializer permission_classes = [AllowAnyOrReadScope] + # Specifically disable pagination for this view + pagination_class = None + class FlagDetail(RetrieveAPI): """Detail view for an individual feature flag.""" diff --git a/src/backend/InvenTree/common/serializers.py b/src/backend/InvenTree/common/serializers.py index 34af2a0fd3..f45e652a90 100644 --- a/src/backend/InvenTree/common/serializers.py +++ b/src/backend/InvenTree/common/serializers.py @@ -340,6 +340,12 @@ class ConfigSerializer(serializers.Serializer): This is a read-only serializer. """ + key = serializers.CharField(read_only=True) + env_var = serializers.CharField(read_only=True, allow_null=True) + config_key = serializers.CharField(read_only=True, allow_null=True) + source = serializers.CharField(read_only=True) + accessed = serializers.DateTimeField(read_only=True) + def to_representation(self, instance): """Return the configuration data as a dictionary.""" if not isinstance(instance, str): @@ -406,6 +412,12 @@ class CustomStateSerializer(DataImportExportSerializerMixin, InvenTreeModelSeria class FlagSerializer(serializers.Serializer): """Serializer for feature flags.""" + key = serializers.CharField(read_only=True) + state = serializers.CharField(read_only=True) + conditions = serializers.ListField( + child=serializers.DictField(), read_only=True, allow_null=True + ) + def to_representation(self, instance): """Return the configuration data as a dictionary.""" request = self.context.get('request')