@@ -55,7 +55,7 @@ class Meta:
5555
5656class VulnSerializerRefsAndSummary (serializers .HyperlinkedModelSerializer ):
5757 """
58- Used for nesting inside package focused APIs .
58+ Lookup vulnerabilities references by aliases (such as a CVE) .
5959 """
6060
6161 fixed_packages = MinimalPackageSerializer (
@@ -71,7 +71,7 @@ class Meta:
7171
7272class MinimalVulnerabilitySerializer (serializers .HyperlinkedModelSerializer ):
7373 """
74- Used for nesting inside package focused APIs .
74+ Lookup vulnerabilities by aliases (such as a CVE) .
7575 """
7676
7777 class Meta :
@@ -113,6 +113,10 @@ class Meta:
113113
114114
115115class PackageSerializer (serializers .HyperlinkedModelSerializer ):
116+ """
117+ Lookup software package using Package URLs
118+ """
119+
116120 def to_representation (self , instance ):
117121 data = super ().to_representation (instance )
118122 data ["unresolved_vulnerabilities" ] = data ["affected_by_vulnerabilities" ]
@@ -138,9 +142,9 @@ def get_fixed_packages(self, package):
138142 packagerelatedvulnerability__fix = True ,
139143 ).distinct ()
140144
141- def get_vulnerabilities_for_a_package (self , package , fix ):
145+ def get_vulnerabilities_for_a_package (self , package , fix ) -> dict :
142146 """
143- Return a queryset of vulnerabilities related to the given `package`.
147+ Return a mapping of vulnerabilities data related to the given `package`.
144148 Return vulnerabilities that affects the `package` if given `fix` flag is False,
145149 otherwise return vulnerabilities fixed by the `package`.
146150 """
@@ -159,15 +163,15 @@ def get_vulnerabilities_for_a_package(self, package, fix):
159163 context = {"request" : self .context ["request" ]},
160164 ).data
161165
162- def get_fixed_vulnerabilities (self , package ):
166+ def get_fixed_vulnerabilities (self , package ) -> dict :
163167 """
164- Return a queryset of vulnerabilities fixed in the given `package`.
168+ Return a mapping of vulnerabilities fixed in the given `package`.
165169 """
166170 return self .get_vulnerabilities_for_a_package (package = package , fix = True )
167171
168- def get_affected_vulnerabilities (self , package ):
172+ def get_affected_vulnerabilities (self , package ) -> dict :
169173 """
170- Return a queryset of vulnerabilities that affects the given `package`.
174+ Return a mapping of vulnerabilities that affects the given `package`.
171175 """
172176 return self .get_vulnerabilities_for_a_package (package = package , fix = False )
173177
@@ -217,6 +221,10 @@ def filter_purl(self, queryset, name, value):
217221
218222
219223class PackageViewSet (viewsets .ReadOnlyModelViewSet ):
224+ """
225+ Lookup for vulnerable packages by Package URL.
226+ """
227+
220228 queryset = Package .objects .all ()
221229 serializer_class = PackageSerializer
222230 filter_backends = (filters .DjangoFilterBackend ,)
@@ -228,7 +236,7 @@ class PackageViewSet(viewsets.ReadOnlyModelViewSet):
228236 @action (detail = False , methods = ["post" ], throttle_scope = "bulk_search_packages" )
229237 def bulk_search (self , request ):
230238 """
231- See https://github.com/nexB/vulnerablecode/pull/369#issuecomment-796877606 for docs
239+ Lookup for vulnerable packages using many Package URLs at once.
232240 """
233241 response = []
234242 purls = request .data .get ("purls" , []) or []
@@ -260,7 +268,7 @@ def bulk_search(self, request):
260268 @action (detail = False , methods = ["get" ], throttle_scope = "vulnerable_packages" )
261269 def all (self , request ):
262270 """
263- Return all the vulnerable Package URLs.
271+ Return the Package URLs of all packages known to be vulnerable .
264272 """
265273 vulnerable_packages = Package .objects .vulnerable ().only (* PackageURL ._fields ).distinct ()
266274 vulnerable_purls = [str (package .purl ) for package in vulnerable_packages ]
@@ -274,6 +282,10 @@ class Meta:
274282
275283
276284class VulnerabilityViewSet (viewsets .ReadOnlyModelViewSet ):
285+ """
286+ Lookup for vulnerabilities affecting packages.
287+ """
288+
277289 def get_fixed_packages_qs (self ):
278290 """
279291 Filter the packages that fixes a vulnerability
@@ -318,6 +330,10 @@ def filter_cpe(self, queryset, name, value):
318330
319331
320332class CPEViewSet (viewsets .ReadOnlyModelViewSet ):
333+ """
334+ Lookup for vulnerabilities by CPE (https://nvd.nist.gov/products/cpe)
335+ """
336+
321337 queryset = Vulnerability .objects .filter (
322338 vulnerabilityreference__reference_id__startswith = "cpe"
323339 ).distinct ()
@@ -330,7 +346,7 @@ class CPEViewSet(viewsets.ReadOnlyModelViewSet):
330346 @action (detail = False , methods = ["post" ], throttle_scope = "bulk_search_cpes" )
331347 def bulk_search (self , request ):
332348 """
333- This endpoint is used to search for vulnerabilities by more than one CPE .
349+ Lookup for vulnerabilities using many CPEs at once .
334350 """
335351 cpes = request .data .get ("cpes" , []) or []
336352 if not cpes or not isinstance (cpes , list ):
@@ -360,6 +376,11 @@ def filter_alias(self, queryset, name, value):
360376
361377
362378class AliasViewSet (viewsets .ReadOnlyModelViewSet ):
379+ """
380+ Lookup for vulnerabilities by vulnerability aliases such as a CVE
381+ (https://nvd.nist.gov/general/cve-process).
382+ """
383+
363384 queryset = Vulnerability .objects .all ()
364385 serializer_class = VulnerabilitySerializer
365386 filter_backends = (filters .DjangoFilterBackend ,)
0 commit comments