use crate::error::ErrorResponse;
use crate::v2::products::{MatchStrings, Products};
use crate::v2::vulnerabilities::{CveChanges, Vulnerabilities};
use chrono::NaiveDateTime;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct ListResponse {
  #[serde(flatten)]
  pub results: Object,
  pub results_per_page: u32,
  pub start_index: u32,
  pub total_results: u32,
  pub format: String,
  pub version: String,
  pub timestamp: NaiveDateTime,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum Object {
  Vulnerabilities(Vec<Vulnerabilities>),
  CveChanges(Vec<CveChanges>),
  Products(Vec<Products>),
  MatchStrings(Vec<MatchStrings>),
  Error {
    #[serde(flatten)]
    error: ErrorResponse,
  },
}