vt3 0.7.3

VirusTotal REST API v3 (Public & Enterprise)
Documentation
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct UserRoot {
    pub data: Option<Data>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ApiUsage {
    pub data: Option<ApiUsageData>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OverallQuotaRoot {
    pub data: Option<OverallQuota>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Data {
    pub attributes: Option<Attributes>,
    #[serde(rename = "type")]
    pub _type: Option<String>,
    pub id: Option<String>,
    pub links: Option<Links>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Links {
    #[serde(rename = "self")]
    pub _self: Option<String>,
    pub related: Option<String>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Attributes {
    pub apikey: Option<String>,
    pub email: Option<String>,
    #[serde(rename = "has_2fa")]
    pub has_2fa: Option<bool>,
    #[serde(rename = "first_name")]
    pub profile_phrase: Option<String>,
    #[serde(rename = "first_name")]
    pub first_name: Option<String>,
    #[serde(rename = "last_name")]
    pub last_name: Option<String>,
    #[serde(rename = "last_login")]
    pub last_login: Option<i64>,
    pub status: Option<String>,
    pub reputation: Option<i64>,
    #[serde(rename = "user_since")]
    pub user_since: Option<i64>,
    pub privileges: Option<HashMap<String, Privilege>>,
    pub quotas: Option<Quotas>,
    pub preferences: HashMap<String, Value>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Privilege {
    #[serde(rename = "expiration_date")]
    pub expiration_date: Option<i64>,
    pub granted: Option<bool>,
    #[serde(rename = "inherited_from")]
    pub inherited_from: Option<String>,
    #[serde(rename = "inherited_via")]
    pub inherited_via: Option<String>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Quotas {
    #[serde(rename = "api_requests_daily")]
    pub api_requests_daily: Option<Quota>,
    #[serde(rename = "api_requests_hourly")]
    pub api_requests_hourly: Option<Quota>,
    #[serde(rename = "api_requests_monthly")]
    pub api_requests_monthly: Option<Quota>,
    #[serde(rename = "cases_creation_monthly")]
    pub cases_creation_monthly: Option<Quota>,
    #[serde(rename = "intelligence_downloads_monthly")]
    pub intelligence_downloads_monthly: Option<Quota>,
    #[serde(rename = "intelligence_retrohunt_jobs_monthly")]
    pub intelligence_retrohunt_jobs_monthly: Option<Quota>,
    #[serde(rename = "intelligence_hunting_rules")]
    pub intelligence_hunting_rules: Option<Quota>,
    #[serde(rename = "intelligence_searches_monthly")]
    pub intelligence_searches_monthly: Option<Quota>,
    #[serde(rename = "intelligence_graphs_private")]
    pub intelligence_graphs_private: Option<Quota>,
    #[serde(rename = "intelligence_vtdiff_creation_monthly")]
    pub intelligence_vtdiff_creation_monthly: Option<Quota>,
    #[serde(rename = "monitor_storage_bytes")]
    pub monitor_storage_bytes: Option<Quota>,
    #[serde(rename = "monitor_storage_files")]
    pub monitor_storage_files: Option<Quota>,
    #[serde(rename = "monitor_uploaded_bytes")]
    pub monitor_uploaded_bytes: Option<Quota>,
    #[serde(rename = "monitor_uploaded_files")]
    pub monitor_uploaded_files: Option<Quota>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OverallQuota {
    #[serde(rename = "api_requests_daily")]
    pub api_requests_daily: Option<OverallQuotaObject>,
    #[serde(rename = "api_requests_hourly")]
    pub api_requests_hourly: Option<OverallQuotaObject>,
    #[serde(rename = "api_requests_monthly")]
    pub api_requests_monthly: Option<OverallQuotaObject>,
    #[serde(rename = "cases_creation_monthly")]
    pub cases_creation_monthly: Option<OverallQuotaObject>,
    #[serde(rename = "intelligence_downloads_monthly")]
    pub intelligence_downloads_monthly: Option<OverallQuotaObject>,
    #[serde(rename = "intelligence_retrohunt_jobs_monthly")]
    pub intelligence_retrohunt_jobs_monthly: Option<OverallQuotaObject>,
    #[serde(rename = "intelligence_hunting_rules")]
    pub intelligence_hunting_rules: Option<OverallQuotaObject>,
    #[serde(rename = "intelligence_searches_monthly")]
    pub intelligence_searches_monthly: Option<OverallQuotaObject>,
    #[serde(rename = "intelligence_graphs_private")]
    pub intelligence_graphs_private: Option<OverallQuotaObject>,
    #[serde(rename = "intelligence_vtdiff_creation_monthly")]
    pub intelligence_vtdiff_creation_monthly: Option<OverallQuotaObject>,
    #[serde(rename = "monitor_storage_bytes")]
    pub monitor_storage_bytes: Option<OverallQuotaObject>,
    #[serde(rename = "monitor_storage_files")]
    pub monitor_storage_files: Option<OverallQuotaObject>,
    #[serde(rename = "monitor_uploaded_bytes")]
    pub monitor_uploaded_bytes: Option<OverallQuotaObject>,
    #[serde(rename = "monitor_uploaded_files")]
    pub monitor_uploaded_files: Option<OverallQuotaObject>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OverallQuotaObject {
    pub group: Option<Quota>,
    pub user: Option<Quota>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Quota {
    pub allowed: Option<i64>,
    pub used: Option<i64>,
    pub inherited_from: Option<String>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ApiUsageData {
    pub daily: Option<HashMap<String, Value>>,
    pub total: Option<HashMap<String, i64>>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GroupRoot {
    pub data: Option<GroupData>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GroupData {
    pub attributes: Option<GroupAttributes>,
    #[serde(rename = "type")]
    pub _type: Option<String>,
    pub id: Option<String>,
    pub links: Option<Links>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GroupAttributes {
    pub organization: Option<String>,
    pub country: Option<String>,
    #[serde(rename = "country_iso")]
    pub country_iso: Option<String>,
    #[serde(rename = "organization_legal_name")]
    pub organization_legal_name: Option<String>,
    pub industry: Option<String>,
    #[serde(rename = "lock_users_api_quota_group")]
    pub lock_users_api_quota_group: Option<bool>,
    pub privileges: Option<HashMap<String, Value>>,
    pub quotas: Option<Quotas>,
    #[serde(rename = "domain_name")]
    pub domain_name: Option<String>,
    #[serde(rename = "billing_emails")]
    pub billing_emails: Option<Vec<String>>,
    #[serde(rename = "auto_add_users")]
    pub auto_add_users: Option<Vec<String>>,
    #[serde(rename = "contact_emails")]
    pub contact_emails: Option<Vec<String>>,
    #[serde(rename = "quota_usage_by_user")]
    pub quota_usage_by_user: Option<HashMap<String, Value>>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GroupMembers {
    pub meta: Option<GroupMeta>,
    pub data: Option<Vec<GroupMemberData>>,
    pub links: Option<Links>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GroupMeta {
    pub count: Option<i64>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GroupMemberData {
    #[serde(rename = "type")]
    pub _type: Option<String>,
    pub id: Option<String>,
}