1use crate::error::ErrorResponse;
3use crate::v2::products::{MatchStrings, Products};
4use crate::v2::vulnerabilities::{CveChanges, Vulnerabilities};
5use chrono::NaiveDateTime;
6use serde::{Deserialize, Serialize};
7
8#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
11#[serde(rename_all = "camelCase")]
12pub struct ListResponse {
13 #[serde(flatten)]
15 pub results: Object,
16 #[serde(flatten)]
18 pub pagination: Pagination,
19 pub format: String,
21 pub version: String,
23 pub timestamp: NaiveDateTime,
25}
26#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
30#[serde(rename_all = "camelCase")]
31pub struct Pagination {
32 pub results_per_page: u32,
34 pub start_index: u32,
36 pub total_results: u32,
38}
39#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
40#[serde(rename_all = "camelCase")]
41pub enum Object {
42 Vulnerabilities(Vec<Vulnerabilities>),
43 CveChanges(Vec<CveChanges>),
44 Products(Vec<Products>),
45 MatchStrings(Vec<MatchStrings>),
46 Error {
47 #[serde(flatten)]
48 error: ErrorResponse,
49 },
50}