from rest_framework import serializers from apps.core.serializers import AsyncModelSerializer from .models import APIKey class APIKeySerializer(AsyncModelSerializer): class Meta: model = APIKey fields = [ "id", "name", "prefix", "scopes", "is_active", "rate_limit", "expires_at", "last_used_at", "created_at", "updated_at", ] read_only_fields = ["id", "prefix", "last_used_at", "created_at", "updated_at"] class APIKeyCreateInputSerializer(serializers.Serializer): name = serializers.CharField(max_length=128) scopes = serializers.ListField(child=serializers.CharField(), required=False) expires_at = serializers.DateTimeField(required=False, allow_null=True) rate_limit = serializers.IntegerField(required=False, min_value=1) class ExternalOrderLineInputSerializer(serializers.Serializer): product_code = serializers.CharField(max_length=64) quantity = serializers.DecimalField(max_digits=18, decimal_places=4) unit_price = serializers.DecimalField(max_digits=18, decimal_places=4, required=False) class ExternalOrderCreateSerializer(serializers.Serializer): customer_code = serializers.CharField(max_length=64) warehouse_code = serializers.CharField(max_length=64, required=False) remark = serializers.CharField(max_length=255, required=False, allow_blank=True, default="") lines = ExternalOrderLineInputSerializer(many=True)