fmp_rust_sdk/models/
events.rs1use chrono::{NaiveDate, NaiveDateTime};
4use serde::{Deserialize, Serialize};
5
6#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
8#[serde(rename_all = "camelCase")]
9pub struct Earnings {
10 #[serde(deserialize_with = "super::non_empty_string")]
11 pub symbol: String,
12 pub date: NaiveDate,
13 pub eps_actual: Option<f64>,
14 pub eps_estimated: Option<f64>,
15 pub revenue_actual: Option<f64>,
16 pub revenue_estimated: Option<f64>,
17 #[serde(default, deserialize_with = "super::optional_date")]
18 pub last_updated: Option<NaiveDate>,
19}
20
21#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
23#[serde(rename_all = "camelCase")]
24pub struct Dividend {
25 #[serde(deserialize_with = "super::non_empty_string")]
26 pub symbol: String,
27 pub date: NaiveDate,
29 #[serde(default, deserialize_with = "super::optional_date")]
30 pub record_date: Option<NaiveDate>,
31 #[serde(default, deserialize_with = "super::optional_date")]
32 pub payment_date: Option<NaiveDate>,
33 #[serde(default, deserialize_with = "super::optional_date")]
34 pub declaration_date: Option<NaiveDate>,
35 pub adj_dividend: Option<f64>,
36 pub dividend: f64,
37 #[serde(rename = "yield")]
38 pub dividend_yield: Option<f64>,
39 pub frequency: Option<String>,
40}
41
42#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
44#[serde(rename_all = "camelCase")]
45pub struct StockSplit {
46 #[serde(deserialize_with = "super::non_empty_string")]
47 pub symbol: String,
48 pub date: NaiveDate,
49 pub numerator: f64,
50 pub denominator: f64,
51 pub split_type: Option<String>,
52}
53
54#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
56pub struct EarningsTranscript {
57 #[serde(deserialize_with = "super::non_empty_string")]
58 pub symbol: String,
59 pub quarter: u8,
60 pub year: u16,
61 #[serde(with = "super::timestamp")]
62 pub date: NaiveDateTime,
63 pub content: String,
64}
65
66#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
68#[serde(rename_all = "camelCase")]
69pub struct NewsArticle {
70 pub symbol: Option<String>,
71 #[serde(with = "super::timestamp")]
72 pub published_date: NaiveDateTime,
73 #[serde(deserialize_with = "super::non_empty_string")]
74 pub title: String,
75 pub publisher: Option<String>,
76 pub image: Option<String>,
77 pub site: Option<String>,
78 pub text: Option<String>,
79 #[serde(deserialize_with = "super::non_empty_string")]
80 pub url: String,
81}