From 5c3cdeebb598233fb93199eb6064ea6754e3583a Mon Sep 17 00:00:00 2001 From: apoorvd06 Date: Mon, 24 Aug 2026 17:34:17 +0000 Subject: [PATCH] Fix OpenAPI types for advisory fields Signed-off-by: apoorvd06 --- vulnerabilities/api_v3.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/vulnerabilities/api_v3.py b/vulnerabilities/api_v3.py index 71d41f5f9..d9541e0ac 100644 --- a/vulnerabilities/api_v3.py +++ b/vulnerabilities/api_v3.py @@ -21,6 +21,7 @@ from django.db.models import Q from django_filters import rest_framework as filters from drf_spectacular.utils import extend_schema +from drf_spectacular.utils import extend_schema_field from packageurl import PackageURL from rest_framework import serializers from rest_framework import viewsets @@ -117,6 +118,13 @@ class Meta: fields = ["cwe_id", "name", "description"] +class RelatedSSVCTreeSerializer(serializers.Serializer): + vector = serializers.CharField() + decision = serializers.CharField() + options = serializers.JSONField() + source_url = serializers.URLField() + + class AdvisoryV3Serializer(serializers.ModelSerializer): aliases = serializers.SlugRelatedField( many=True, @@ -131,6 +139,7 @@ class AdvisoryV3Serializer(serializers.ModelSerializer): todo_count = serializers.IntegerField(read_only=True) curating_advisories = serializers.SerializerMethodField() + @extend_schema_field(RelatedSSVCTreeSerializer(many=True)) def get_related_ssvc_trees(self, obj): seen = set() result = [] @@ -376,6 +385,7 @@ class AffectedByAdvisoryV3Serializer(AdvisoryV3Serializer): fixed_by_packages = serializers.SerializerMethodField() advisory_uid = serializers.CharField(source="avid", read_only=True) + @extend_schema_field(serializers.ListField(child=serializers.CharField())) def get_fixed_by_packages(self, obj): return list( obj.impacted_packages.values_list("fixed_by_packages__package_url", flat=True)