@@ -33,8 +33,10 @@ pub type Version = String;
3333#[ non_exhaustive]
3434pub enum Ecosystem {
3535 AlmaLinux ( Option < String > ) ,
36+ Alpaquita ,
3637 Alpine ( Option < String > ) ,
3738 Android ,
39+ BellSoftHardenedContainers ,
3840 Bioconductor ,
3941 Bitnami ,
4042 Chainguard ,
@@ -43,18 +45,23 @@ pub enum Ecosystem {
4345 CratesIO ,
4446 Debian ( Option < String > ) ,
4547 DWF ,
48+ Echo ,
4649 GHC ,
4750 GSD ,
4851 GitHubActions ,
4952 Go ,
5053 Hackage ,
5154 Hex ,
5255 JavaScript ,
56+ Julia ,
57+ Kubernetes ,
5358 Linux ,
5459 Mageia ( String ) ,
5560 Maven ( String ) ,
61+ MinimOS ,
5662 Npm ,
5763 NuGet ,
64+ OpenEuler ,
5865 OpenSUSE ( Option < String > ) ,
5966 OssFuzz ,
6067 Packagist ,
@@ -75,6 +82,7 @@ pub enum Ecosystem {
7582 lts : bool ,
7683 } ,
7784 UVI ,
85+ VSCode ,
7886 Wolfi ,
7987}
8088
@@ -88,11 +96,15 @@ impl Serialize for Ecosystem {
8896 Ecosystem :: AlmaLinux ( Some ( release) ) => {
8997 serializer. serialize_str ( & format ! ( "AlmaLinux:{}" , release) )
9098 }
99+ Ecosystem :: Alpaquita => serializer. serialize_str ( "Alpaquita" ) ,
91100 Ecosystem :: Alpine ( None ) => serializer. serialize_str ( "Alpine" ) ,
92101 Ecosystem :: Alpine ( Some ( version) ) => {
93102 serializer. serialize_str ( & format ! ( "Alpine:{}" , version) )
94103 }
95104 Ecosystem :: Android => serializer. serialize_str ( "Android" ) ,
105+ Ecosystem :: BellSoftHardenedContainers => {
106+ serializer. serialize_str ( "BellSoft Hardened Containers" )
107+ }
96108 Ecosystem :: Bioconductor => serializer. serialize_str ( "Bioconductor" ) ,
97109 Ecosystem :: Bitnami => serializer. serialize_str ( "Bitnami" ) ,
98110 Ecosystem :: Chainguard => serializer. serialize_str ( "Chainguard" ) ,
@@ -104,13 +116,16 @@ impl Serialize for Ecosystem {
104116 serializer. serialize_str ( & format ! ( "Debian:{}" , version) )
105117 }
106118 Ecosystem :: DWF => serializer. serialize_str ( "DWF" ) ,
119+ Ecosystem :: Echo => serializer. serialize_str ( "Echo" ) ,
107120 Ecosystem :: GHC => serializer. serialize_str ( "GHC" ) ,
108121 Ecosystem :: GSD => serializer. serialize_str ( "GSD" ) ,
109122 Ecosystem :: GitHubActions => serializer. serialize_str ( "GitHub Actions" ) ,
110123 Ecosystem :: Go => serializer. serialize_str ( "Go" ) ,
111124 Ecosystem :: Hackage => serializer. serialize_str ( "Hackage" ) ,
112125 Ecosystem :: Hex => serializer. serialize_str ( "Hex" ) ,
113126 Ecosystem :: JavaScript => serializer. serialize_str ( "JavaScript" ) ,
127+ Ecosystem :: Julia => serializer. serialize_str ( "Julia" ) ,
128+ Ecosystem :: Kubernetes => serializer. serialize_str ( "Kubernetes" ) ,
114129 Ecosystem :: Linux => serializer. serialize_str ( "Linux" ) ,
115130 Ecosystem :: Mageia ( release) => serializer. serialize_str ( & format ! ( "Mageia:{}" , release) ) ,
116131 Ecosystem :: Maven ( repository) => {
@@ -120,8 +135,10 @@ impl Serialize for Ecosystem {
120135 } ;
121136 serializer. serialize_str ( & mvn)
122137 }
138+ Ecosystem :: MinimOS => serializer. serialize_str ( "MinimOS" ) ,
123139 Ecosystem :: Npm => serializer. serialize_str ( "npm" ) ,
124140 Ecosystem :: NuGet => serializer. serialize_str ( "NuGet" ) ,
141+ Ecosystem :: OpenEuler => serializer. serialize_str ( "openEuler" ) ,
125142 Ecosystem :: OpenSUSE ( None ) => serializer. serialize_str ( "openSUSE" ) ,
126143 Ecosystem :: OpenSUSE ( Some ( release) ) => {
127144 serializer. serialize_str ( & format ! ( "openSUSE:{}" , release) )
@@ -175,6 +192,7 @@ impl Serialize for Ecosystem {
175192 serializer. serialize_str ( & serialized)
176193 }
177194 Ecosystem :: UVI => serializer. serialize_str ( "UVI" ) ,
195+ Ecosystem :: VSCode => serializer. serialize_str ( "VSCode" ) ,
178196 Ecosystem :: Wolfi => serializer. serialize_str ( "Wolfi" ) ,
179197 }
180198 }
@@ -200,6 +218,7 @@ impl<'de> Deserialize<'de> for Ecosystem {
200218 {
201219 match value {
202220 "AlmaLinux" | "AlmaLinux:" => Ok ( Ecosystem :: AlmaLinux ( None ) ) ,
221+ "Alpaquita" => Ok ( Ecosystem :: Alpaquita ) ,
203222 _ if value. starts_with ( "AlmaLinux:" ) => Ok ( Ecosystem :: AlmaLinux (
204223 value. strip_prefix ( "AlmaLinux:" ) . map ( |v| v. to_string ( ) ) ,
205224 ) ) ,
@@ -208,6 +227,7 @@ impl<'de> Deserialize<'de> for Ecosystem {
208227 value. strip_prefix ( "Alpine:" ) . map ( |v| v. to_string ( ) ) ,
209228 ) ) ,
210229 "Android" => Ok ( Ecosystem :: Android ) ,
230+ "BellSoft Hardened Containers" => Ok ( Ecosystem :: BellSoftHardenedContainers ) ,
211231 "Bioconductor" => Ok ( Ecosystem :: Bioconductor ) ,
212232 "Bitnami" => Ok ( Ecosystem :: Bitnami ) ,
213233 "Chainguard" => Ok ( Ecosystem :: Chainguard ) ,
@@ -219,13 +239,16 @@ impl<'de> Deserialize<'de> for Ecosystem {
219239 value. strip_prefix ( "Debian:" ) . map ( |v| v. to_string ( ) ) ,
220240 ) ) ,
221241 "DWF" => Ok ( Ecosystem :: DWF ) ,
242+ "Echo" => Ok ( Ecosystem :: Echo ) ,
222243 "GHC" => Ok ( Ecosystem :: GHC ) ,
223244 "GitHub Actions" => Ok ( Ecosystem :: GitHubActions ) ,
224245 "Go" => Ok ( Ecosystem :: Go ) ,
225246 "GSD" => Ok ( Ecosystem :: GSD ) ,
226247 "Hackage" => Ok ( Ecosystem :: Hackage ) ,
227248 "Hex" => Ok ( Ecosystem :: Hex ) ,
228249 "JavaScript" => Ok ( Ecosystem :: JavaScript ) ,
250+ "Julia" => Ok ( Ecosystem :: Julia ) ,
251+ "Kubernetes" => Ok ( Ecosystem :: Kubernetes ) ,
229252 "Linux" => Ok ( Ecosystem :: Linux ) ,
230253 _ if value. starts_with ( "Mageia:" ) => Ok ( Ecosystem :: Mageia (
231254 value
@@ -239,8 +262,10 @@ impl<'de> Deserialize<'de> for Ecosystem {
239262 _ if value. starts_with ( "Maven:" ) => Ok ( Ecosystem :: Maven (
240263 value. strip_prefix ( "Maven:" ) . map ( |v| v. to_string ( ) ) . unwrap ( ) ,
241264 ) ) ,
265+ "MinimOS" => Ok ( Ecosystem :: MinimOS ) ,
242266 "npm" => Ok ( Ecosystem :: Npm ) ,
243267 "NuGet" => Ok ( Ecosystem :: NuGet ) ,
268+ "openEuler" => Ok ( Ecosystem :: OpenEuler ) ,
244269 "openSUSE" => Ok ( Ecosystem :: OpenSUSE ( None ) ) ,
245270 _ if value. starts_with ( "openSUSE:" ) => Ok ( Ecosystem :: OpenSUSE (
246271 value. strip_prefix ( "openSUSE:" ) . map ( |v| v. to_string ( ) ) ,
@@ -282,6 +307,7 @@ impl<'de> Deserialize<'de> for Ecosystem {
282307 ) . ok_or ( de:: Error :: unknown_variant ( value, & [ "Ecosystem" ] ) )
283308 }
284309 "UVI" => Ok ( Ecosystem :: UVI ) ,
310+ "VSCode" => Ok ( Ecosystem :: VSCode ) ,
285311 "Wolfi" => Ok ( Ecosystem :: Wolfi ) ,
286312 _ => Err ( de:: Error :: unknown_variant ( value, & [ "Ecosystem" ] ) ) ,
287313 }
@@ -473,6 +499,11 @@ pub enum SeverityType {
473499 #[ serde( rename = "CVSS_V4" ) ]
474500 CVSSv4 ,
475501
502+ /// A lowercased string representing the [Ubuntu priority](https://ubuntu.com/security/cves/about#priority).
503+ /// This is based on many factors including severity, importance, risk, estimated number of affected users,
504+ /// software configuration, active exploitation, and other factors.
505+ Ubuntu ,
506+
476507 /// The severity score was arrived at by using an unspecified
477508 /// scoring method.
478509 #[ serde( rename = "UNSPECIFIED" ) ]
@@ -584,6 +615,11 @@ pub struct Vulnerability {
584615 #[ serde( skip_serializing_if = "Option::is_none" ) ]
585616 pub aliases : Option < Vec < String > > ,
586617
618+ /// The `upstream` field gives a list of IDs of upstream vulnerabilities that are referred to
619+ /// by the vulnerability entry.
620+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
621+ pub upstream : Option < Vec < String > > ,
622+
587623 /// The related field gives a list of IDs of closely related vulnerabilities, such as the same
588624 /// problem in alternate ecosystems.
589625 #[ serde( skip_serializing_if = "Option::is_none" ) ]
@@ -649,6 +685,7 @@ mod tests {
649685 modified : chrono:: Utc :: now ( ) ,
650686 withdrawn : None ,
651687 aliases : None ,
688+ upstream : None ,
652689 related : None ,
653690 summary : None ,
654691 details : None ,
0 commit comments