mod affected;
mod credit;
mod ecosystem;
mod modified_record;
mod package;
mod range;
mod reference;
mod severity;
pub use affected::Affected;
use chrono::{DateTime, Utc};
pub use credit::{Credit, CreditType};
pub use ecosystem::{Ecosystem, EcosystemWithSuffix};
pub use modified_record::OsvModifiedRecord;
pub use package::{Package, PackageName};
pub use range::{Event, Range, RangeType};
pub use reference::{Reference, ReferenceType};
use serde::Deserialize;
use serde_json::Value;
pub use severity::{Severity, SeverityType};
pub type OsvRecordId = String;
#[derive(Debug, Clone, Deserialize)]
pub struct OsvRecord {
pub id: OsvRecordId,
pub modified: DateTime<Utc>,
pub schema_version: Option<String>,
pub published: Option<DateTime<Utc>>,
pub withdrawn: Option<DateTime<Utc>>,
#[serde(default)]
pub aliases: Vec<String>,
#[serde(default)]
pub related: Vec<String>,
#[serde(default)]
pub upstream: Vec<String>,
pub summary: Option<String>,
pub details: Option<String>,
#[serde(default)]
pub severity: Vec<Severity>,
#[serde(default)]
pub affected: Vec<Affected>,
#[serde(default)]
pub references: Vec<Reference>,
#[serde(default)]
pub credits: Vec<Credit>,
pub database_specific: Option<Value>,
}