fmp_rs/models/
transcripts.rs

1//! Models for transcripts and communications endpoints
2
3use serde::{Deserialize, Serialize};
4
5/// Earnings call transcript data
6#[derive(Debug, Clone, Serialize, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct EarningsTranscript {
9    /// Company symbol
10    pub symbol: Option<String>,
11    /// Quarter (e.g., "Q1", "Q2", "Q3", "Q4")
12    pub quarter: Option<String>,
13    /// Calendar year
14    pub year: Option<i32>,
15    /// Earnings date
16    pub date: Option<String>,
17    /// Full transcript content
18    pub content: Option<String>,
19    /// Company name
20    pub company_name: Option<String>,
21    /// Quarter fiscal period
22    pub fiscal_quarter: Option<String>,
23    /// Fiscal year
24    pub fiscal_year: Option<i32>,
25    /// Transcript ID
26    pub transcript_id: Option<String>,
27    /// Language of transcript
28    pub language: Option<String>,
29    /// Duration of call (in minutes)
30    pub duration: Option<i32>,
31    /// Number of analysts participating
32    pub analyst_count: Option<i32>,
33    /// Conference call type (e.g., "Earnings", "Special")
34    pub call_type: Option<String>,
35}
36
37/// Earnings call transcript list/summary
38#[derive(Debug, Clone, Serialize, Deserialize)]
39#[serde(rename_all = "camelCase")]
40pub struct TranscriptSummary {
41    /// Company symbol
42    pub symbol: Option<String>,
43    /// Company name
44    pub company_name: Option<String>,
45    /// Quarter
46    pub quarter: Option<String>,
47    /// Calendar year
48    pub year: Option<i32>,
49    /// Earnings date
50    pub date: Option<String>,
51    /// Transcript availability status
52    pub is_available: Option<bool>,
53    /// Call duration in minutes
54    pub duration: Option<i32>,
55    /// Transcript excerpt or summary
56    pub excerpt: Option<String>,
57    /// Fiscal quarter
58    pub fiscal_quarter: Option<String>,
59    /// Fiscal year
60    pub fiscal_year: Option<i32>,
61    /// Conference call type
62    pub call_type: Option<String>,
63    /// Last updated timestamp
64    pub last_updated: Option<String>,
65}
66
67/// Press release data
68#[derive(Debug, Clone, Serialize, Deserialize)]
69#[serde(rename_all = "camelCase")]
70pub struct PressRelease {
71    /// Company symbol
72    pub symbol: Option<String>,
73    /// Company name
74    pub company_name: Option<String>,
75    /// Press release title
76    pub title: Option<String>,
77    /// Publication date
78    pub date: Option<String>,
79    /// Full press release content
80    pub content: Option<String>,
81    /// Press release type (e.g., "Earnings", "Product", "Corporate")
82    pub release_type: Option<String>,
83    /// Source (e.g., "Business Wire", "PR Newswire")
84    pub source: Option<String>,
85    /// Press release URL
86    pub url: Option<String>,
87    /// Language
88    pub language: Option<String>,
89    /// Word count
90    pub word_count: Option<i32>,
91    /// Summary or excerpt
92    pub summary: Option<String>,
93    /// Related ticker symbols
94    pub related_symbols: Option<Vec<String>>,
95    /// Industry tags
96    pub tags: Option<Vec<String>>,
97}
98
99/// Conference call schedule
100#[derive(Debug, Clone, Serialize, Deserialize)]
101#[serde(rename_all = "camelCase")]
102pub struct ConferenceCall {
103    /// Company symbol
104    pub symbol: Option<String>,
105    /// Company name
106    pub company_name: Option<String>,
107    /// Call title
108    pub title: Option<String>,
109    /// Scheduled date and time
110    pub date_time: Option<String>,
111    /// Call type (e.g., "Earnings", "Analyst Day", "Special")
112    pub call_type: Option<String>,
113    /// Quarter being reported
114    pub quarter: Option<String>,
115    /// Fiscal year
116    pub fiscal_year: Option<i32>,
117    /// Calendar year
118    pub year: Option<i32>,
119    /// Time zone
120    pub timezone: Option<String>,
121    /// Dial-in information
122    pub dial_in_info: Option<String>,
123    /// Webcast URL
124    pub webcast_url: Option<String>,
125    /// Call duration (estimated in minutes)
126    pub estimated_duration: Option<i32>,
127    /// Participant information
128    pub participants: Option<Vec<String>>,
129    /// Call status (e.g., "Scheduled", "In Progress", "Completed")
130    pub status: Option<String>,
131    /// Industry
132    pub industry: Option<String>,
133    /// Market cap category
134    pub market_cap_category: Option<String>,
135}
136
137/// Management discussion and analysis (MD&A) content
138#[derive(Debug, Clone, Serialize, Deserialize)]
139#[serde(rename_all = "camelCase")]
140pub struct ManagementDiscussion {
141    /// Company symbol
142    pub symbol: Option<String>,
143    /// Company name
144    pub company_name: Option<String>,
145    /// Filing date
146    pub date: Option<String>,
147    /// Filing period (e.g., "Q1 2024", "FY 2023")
148    pub period: Option<String>,
149    /// Form type (e.g., "10-K", "10-Q")
150    pub form_type: Option<String>,
151    /// MD&A section content
152    pub content: Option<String>,
153    /// Section title
154    pub section_title: Option<String>,
155    /// CIK (Central Index Key)
156    pub cik: Option<String>,
157    /// Accession number
158    pub accession_number: Option<String>,
159    /// Filing URL
160    pub filing_url: Option<String>,
161    /// Word count
162    pub word_count: Option<i32>,
163    /// Key topics discussed
164    pub key_topics: Option<Vec<String>>,
165    /// Risk factors mentioned
166    pub risk_factors: Option<Vec<String>>,
167    /// Language
168    pub language: Option<String>,
169}