2121from django .db .models import Q
2222from django_filters import rest_framework as filters
2323from drf_spectacular .utils import extend_schema
24+ from drf_spectacular .utils import extend_schema_field
2425from packageurl import PackageURL
2526from rest_framework import serializers
2627from rest_framework import viewsets
@@ -117,6 +118,13 @@ class Meta:
117118 fields = ["cwe_id" , "name" , "description" ]
118119
119120
121+ class RelatedSSVCTreeSerializer (serializers .Serializer ):
122+ vector = serializers .CharField ()
123+ decision = serializers .CharField ()
124+ options = serializers .JSONField ()
125+ source_url = serializers .URLField ()
126+
127+
120128class AdvisoryV3Serializer (serializers .ModelSerializer ):
121129 aliases = serializers .SlugRelatedField (
122130 many = True ,
@@ -131,6 +139,7 @@ class AdvisoryV3Serializer(serializers.ModelSerializer):
131139 todo_count = serializers .IntegerField (read_only = True )
132140 curating_advisories = serializers .SerializerMethodField ()
133141
142+ @extend_schema_field (RelatedSSVCTreeSerializer (many = True ))
134143 def get_related_ssvc_trees (self , obj ):
135144 seen = set ()
136145 result = []
@@ -376,6 +385,7 @@ class AffectedByAdvisoryV3Serializer(AdvisoryV3Serializer):
376385 fixed_by_packages = serializers .SerializerMethodField ()
377386 advisory_uid = serializers .CharField (source = "avid" , read_only = True )
378387
388+ @extend_schema_field (serializers .ListField (child = serializers .CharField ()))
379389 def get_fixed_by_packages (self , obj ):
380390 return list (
381391 obj .impacted_packages .values_list ("fixed_by_packages__package_url" , flat = True )
0 commit comments