@@ -43,7 +43,7 @@ class Meta:
4343
4444
4545class VulnerabilityReferenceSerializer (serializers .ModelSerializer ):
46- scores = VulnerabilitySeveritySerializer (many = True )
46+ scores = VulnerabilitySeveritySerializer (many = True , source = "severities" )
4747
4848 class Meta :
4949 model = VulnerabilityReference
@@ -88,6 +88,20 @@ class Meta:
8888 fields = "__all__"
8989
9090
91+ class VulnerabilitySerializer (serializers .HyperlinkedModelSerializer ):
92+
93+ resolved_packages = MinimalPackageSerializer (many = True , source = "resolved_to" , read_only = True )
94+ unresolved_packages = MinimalPackageSerializer (
95+ many = True , source = "vulnerable_to" , read_only = True
96+ )
97+
98+ references = VulnerabilityReferenceSerializer (many = True , source = "vulnerabilityreference_set" )
99+
100+ class Meta :
101+ model = Vulnerability
102+ fields = "__all__"
103+
104+
91105class PackageSerializer (serializers .HyperlinkedModelSerializer ):
92106
93107 unresolved_vulnerabilities = MinimalVulnerabilitySerializer (
@@ -103,6 +117,17 @@ class Meta:
103117 exclude = ["vulnerabilities" ]
104118
105119
120+ class CPESerializer (serializers .HyperlinkedModelSerializer ):
121+
122+ vulnerabilities = MinimalVulnerabilitySerializer (
123+ many = True , source = "get_vulnerabilities_from_cpe" , read_only = True
124+ )
125+
126+ class Meta :
127+ model = VulnerabilityReference
128+ fields = ["vulnerabilities" ]
129+
130+
106131class PackageFilterSet (filters .FilterSet ):
107132 purl = filters .CharFilter (method = "filter_purl" )
108133
@@ -177,3 +202,16 @@ class VulnerabilityViewSet(viewsets.ReadOnlyModelViewSet):
177202 paginate_by = 50
178203 filter_backends = (filters .DjangoFilterBackend ,)
179204 filterset_class = VulnerabilityFilterSet
205+
206+
207+ class VulnerabilityReferenceFilterSet (filters .FilterSet ):
208+ class Meta :
209+ model = VulnerabilityReference
210+ fields = ["reference_id" ]
211+
212+
213+ class CPEViewSet (viewsets .ReadOnlyModelViewSet ):
214+ queryset = VulnerabilityReference .objects .all ()
215+ serializer_class = CPESerializer
216+ filter_backends = (filters .DjangoFilterBackend ,)
217+ filterset_class = VulnerabilityReferenceFilterSet
0 commit comments