from rest_framework import serializers # ---- Request serializers ---- class GuestSessionRequestSerializer(serializers.Serializer): type = serializers.ChoiceField(choices=['guest']) deviceId = serializers.CharField(max_length=64) class LoginRequestSerializer(serializers.Serializer): phone = serializers.CharField(max_length=15) otp = serializers.CharField(max_length=6) class RefreshRequestSerializer(serializers.Serializer): refreshToken = serializers.CharField() class SetGradeRequestSerializer(serializers.Serializer): gradeId = serializers.IntegerField() class RequestOTPRequestSerializer(serializers.Serializer): """اپ کمکی برای گرفتن OTP (در سند اصلی نبود، برای تست‌پذیری Swagger اضافه شد).""" phone = serializers.CharField(max_length=15) # ---- Response serializers ---- class GuestSessionResponseSerializer(serializers.Serializer): userId = serializers.CharField() token = serializers.CharField() isNewUser = serializers.BooleanField() isGuest = serializers.BooleanField() class LoginResponseSerializer(serializers.Serializer): userId = serializers.CharField() token = serializers.CharField() refreshToken = serializers.CharField() class RefreshResponseSerializer(serializers.Serializer): token = serializers.CharField() refreshToken = serializers.CharField() expiresIn = serializers.IntegerField() class GradeSerializer(serializers.Serializer): id = serializers.IntegerField() title = serializers.CharField() icon = serializers.CharField() color = serializers.CharField() class GradesListResponseSerializer(serializers.Serializer): grades = GradeSerializer(many=True) class SetGradeResponseSerializer(serializers.Serializer): success = serializers.BooleanField() gradeId = serializers.IntegerField() class RequestOTPResponseSerializer(serializers.Serializer): success = serializers.BooleanField() devOtp = serializers.CharField() note = serializers.CharField()