Skip to main content

finance_query/adapters/polygon/
corporate_events.rs

1//! TMX/Wall Street Horizon corporate events: earnings, dividends, conferences, splits.
2
3use serde::{Deserialize, Serialize};
4
5use crate::error::Result;
6
7use super::build_client;
8use super::models::PaginatedResponse;
9
10/// Corporate event from Wall Street Horizon.
11#[derive(Debug, Clone, Serialize, Deserialize)]
12#[non_exhaustive]
13pub struct CorporateEvent {
14    /// Ticker.
15    pub ticker: Option<String>,
16    /// Event type (e.g., `"earnings"`, `"dividend"`, `"conference"`, `"split"`).
17    pub event_type: Option<String>,
18    /// Event name.
19    pub name: Option<String>,
20    /// Event date.
21    pub date: Option<String>,
22    /// Event status.
23    pub status: Option<String>,
24    /// Additional details.
25    #[serde(flatten)]
26    pub details: std::collections::HashMap<String, serde_json::Value>,
27}
28
29/// Fetch corporate events.
30pub async fn corporate_events(
31    params: &[(&str, &str)],
32) -> Result<PaginatedResponse<CorporateEvent>> {
33    let client = build_client()?;
34    client.get("/v1/reference/corporate-events", params).await
35}