GET /api/support/tickets returns the caller's last 20 tickets with their support-reply count, on the read throttle so listing never spends the 30/hour create quota. Before it the app kept ticket ids only in one browser's localStorage, so a ticket and its answer vanished with the device. Completion notifications now use Persian digits and drop the 'with 0 stars ... 0 points' sentence when nothing was earned. .env.example: NUM_PROXIES=2 (ArvanCloud + nginx), KAVENEGAR_OTP_TEMPLATE, BAZAAR_PISHKHAN_API_SECRET, sandbox off by default; removed variables the code no longer reads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
from rest_framework import serializers
|
|
|
|
|
|
class BugReportCreateRequestSerializer(serializers.Serializer):
|
|
title = serializers.CharField(max_length=150)
|
|
description = serializers.CharField()
|
|
screenshotUrl = serializers.URLField(required=False, allow_blank=True)
|
|
|
|
|
|
class BugReportCreateResponseSerializer(serializers.Serializer):
|
|
bugReportId = serializers.CharField()
|
|
status = serializers.CharField()
|
|
|
|
|
|
class TicketCreateRequestSerializer(serializers.Serializer):
|
|
subject = serializers.CharField(max_length=150)
|
|
category = serializers.CharField(max_length=30)
|
|
priority = serializers.ChoiceField(choices=['low', 'normal', 'high'], required=False)
|
|
|
|
|
|
class TicketCreateResponseSerializer(serializers.Serializer):
|
|
ticketId = serializers.CharField()
|
|
status = serializers.CharField()
|
|
|
|
|
|
class TicketSummarySerializer(serializers.Serializer):
|
|
ticketId = serializers.CharField()
|
|
subject = serializers.CharField()
|
|
category = serializers.CharField()
|
|
status = serializers.CharField()
|
|
createdAt = serializers.DateTimeField()
|
|
supportReplies = serializers.IntegerField()
|
|
|
|
|
|
class TicketListResponseSerializer(serializers.Serializer):
|
|
tickets = TicketSummarySerializer(many=True)
|
|
|
|
|
|
class TicketMessageItemSerializer(serializers.Serializer):
|
|
id = serializers.CharField()
|
|
sender = serializers.CharField()
|
|
text = serializers.CharField()
|
|
|
|
|
|
class TicketDetailResponseSerializer(serializers.Serializer):
|
|
ticketId = serializers.CharField()
|
|
subject = serializers.CharField()
|
|
status = serializers.CharField()
|
|
messages = TicketMessageItemSerializer(many=True)
|
|
|
|
|
|
class TicketMessageCreateRequestSerializer(serializers.Serializer):
|
|
text = serializers.CharField()
|
|
|
|
|
|
class TicketMessageCreateResponseSerializer(serializers.Serializer):
|
|
messageId = serializers.CharField()
|
|
success = serializers.BooleanField()
|