from rest_framework import serializers class NotificationSerializer(serializers.Serializer): id = serializers.CharField() type = serializers.CharField() title = serializers.CharField(allow_blank=True) message = serializers.CharField(allow_blank=True) level = serializers.ChoiceField( choices=("info", "success", "warning", "error") ) created_at = serializers.CharField() is_seen = serializers.BooleanField() delete_on_seen = serializers.BooleanField() action_url = serializers.CharField( required=False, allow_blank=True, allow_null=True ) entity_type = serializers.CharField( required=False, allow_blank=True, allow_null=True ) entity_id = serializers.CharField( required=False, allow_blank=True, allow_null=True ) meta = serializers.JSONField(required=False) class NotificationListResponseSerializer(serializers.Serializer): count = serializers.IntegerField() unread_count = serializers.IntegerField() notifications = NotificationSerializer(many=True) class NotificationSeenRequestSerializer(serializers.Serializer): id = serializers.CharField() class NotificationDeleteResponseSerializer(serializers.Serializer): deleted = serializers.BooleanField() notification_id = serializers.CharField(required=False) unread_count = serializers.IntegerField(required=False) class NotificationSeenResponseSerializer(serializers.Serializer): marked_read = serializers.BooleanField() notification_id = serializers.CharField(required=False) deleted = serializers.BooleanField(required=False) unread_count = serializers.IntegerField(required=False) notification = NotificationSerializer(required=False, allow_null=True) class NotificationMarkAllReadResponseSerializer(serializers.Serializer): marked_read = serializers.IntegerField() class NotificationTypeFilterSerializer(serializers.Serializer): type = serializers.CharField(required=False, allow_blank=True, allow_null=True) class NotificationStreamTokenResponseSerializer(serializers.Serializer): token = serializers.CharField() expires_in = serializers.IntegerField()