use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BulkStockPrice {
pub symbol: Option<String>,
pub name: Option<String>,
pub price: Option<f64>,
pub change: Option<f64>,
pub changes_percentage: Option<f64>,
pub day_low: Option<f64>,
pub day_high: Option<f64>,
pub year_low: Option<f64>,
pub year_high: Option<f64>,
pub market_cap: Option<f64>,
pub pe: Option<f64>,
pub volume: Option<i64>,
pub avg_volume: Option<i64>,
pub exchange: Option<String>,
pub open: Option<f64>,
pub previous_close: Option<f64>,
pub eps: Option<f64>,
pub shares_outstanding: Option<i64>,
pub timestamp: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BulkFinancialStatement {
pub symbol: Option<String>,
pub date: Option<String>,
pub calendar_year: Option<String>,
pub period: Option<String>,
pub revenue: Option<f64>,
pub cost_of_revenue: Option<f64>,
pub gross_profit: Option<f64>,
pub operating_income: Option<f64>,
pub net_income: Option<f64>,
pub total_assets: Option<f64>,
pub total_liabilities: Option<f64>,
pub total_stockholders_equity: Option<f64>,
pub operating_cash_flow: Option<f64>,
pub free_cash_flow: Option<f64>,
pub total_debt: Option<f64>,
pub cash_and_cash_equivalents: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BulkEtfHolding {
pub etf_symbol: Option<String>,
pub asset_symbol: Option<String>,
pub name: Option<String>,
pub shares_number: Option<f64>,
pub market_value: Option<f64>,
pub weight_percentage: Option<f64>,
pub updated: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BulkInsiderTrade {
pub filing_date: Option<String>,
pub transaction_date: Option<String>,
pub reporting_cik: Option<String>,
pub transaction_type: Option<String>,
pub securities_owned: Option<f64>,
pub company_cik: Option<String>,
pub company_name: Option<String>,
pub securities_transacted: Option<f64>,
pub price: Option<f64>,
pub security_name: Option<String>,
pub cik: Option<String>,
pub symbol: Option<String>,
pub transaction_value: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BulkInstitutionalHolding {
pub date_reported: Option<String>,
pub cik: Option<String>,
pub name_of_issuer: Option<String>,
pub ticker_symbol: Option<String>,
pub cusip: Option<String>,
pub value: Option<f64>,
pub shares: Option<f64>,
pub put_call: Option<String>,
pub investment_discretion: Option<String>,
pub sole_voting_authority: Option<f64>,
pub shared_voting_authority: Option<f64>,
pub no_voting_authority: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BulkEarningsEstimate {
pub symbol: Option<String>,
pub date: Option<String>,
pub estimated_revenue_low: Option<f64>,
pub estimated_revenue_high: Option<f64>,
pub estimated_revenue_avg: Option<f64>,
pub estimated_eps_avg: Option<f64>,
pub estimated_eps_high: Option<f64>,
pub estimated_eps_low: Option<f64>,
pub number_analyst_estimated_revenue: Option<i32>,
pub number_analyst_estimated_eps: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BulkDataInfo {
pub dataset: Option<String>,
pub last_updated: Option<String>,
pub file_size: Option<i64>,
pub record_count: Option<i64>,
pub download_url: Option<String>,
pub format: Option<String>,
pub compression: Option<String>,
pub schema_version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BulkHistoricalPricesMeta {
pub date_from: Option<String>,
pub date_to: Option<String>,
pub symbols_count: Option<i32>,
pub total_records: Option<i64>,
pub file_format: Option<String>,
pub estimated_size_mb: Option<f64>,
}