summaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
authorTyler Hoang <tyler@tylerhoang.xyz>2026-06-14 02:38:06 -0700
committerTyler Hoang <tyler@tylerhoang.xyz>2026-06-14 02:38:06 -0700
commit13ce7b912227ea20671465d83bd6ab5eeb4fbe2b (patch)
treee8ad001ff97dd948a53313e4e427465081c67363 /frontend
parentf8d61a20759f3833484674173ccb9264d474b6c2 (diff)
feat: add FilingsResponse types and api.filings() client
Diffstat (limited to 'frontend')
-rw-r--r--frontend/lib/api.ts7
-rw-r--r--frontend/types/api.ts37
2 files changed, 43 insertions, 1 deletions
diff --git a/frontend/lib/api.ts b/frontend/lib/api.ts
index 84df997..13c73bf 100644
--- a/frontend/lib/api.ts
+++ b/frontend/lib/api.ts
@@ -1,4 +1,4 @@
-import type { FinancialsResponse, HistoryPoint, InsidersResponse, MarketIndex, RatiosResponse, SearchResult, TickerOverview, ValuationResponse, WatchlistResponse } from "@/types/api";
+import type { FilingsResponse, FinancialsResponse, HistoryPoint, InsidersResponse, MarketIndex, RatiosResponse, SearchResult, TickerOverview, ValuationResponse, WatchlistResponse } from "@/types/api";
const API_BASE = (process.env.NEXT_PUBLIC_API_BASE_URL || "").trim().replace(/\/$/, "");
@@ -69,4 +69,9 @@ export const api = {
`/api/tickers/${encodeURIComponent(symbol)}/insiders`
);
},
+ filings(symbol: string) {
+ return request<FilingsResponse>(
+ `/api/tickers/${encodeURIComponent(symbol)}/filings`
+ );
+ },
};
diff --git a/frontend/types/api.ts b/frontend/types/api.ts
index c65d3d2..fac9bff 100644
--- a/frontend/types/api.ts
+++ b/frontend/types/api.ts
@@ -192,6 +192,43 @@ export type InsidersResponse = {
transactions: InsiderTransaction[];
};
+export type FilingItem = {
+ date: string;
+ form: string;
+ title: string;
+ url: string | null;
+};
+
+export type FilingKpis = {
+ total: number;
+ count_10k: number;
+ count_10q: number;
+ count_8k: number;
+ distinct_forms: number;
+};
+
+export type FormMixRow = {
+ form: string;
+ count: number;
+ pct: number | null;
+};
+
+export type CadencePoint = {
+ month: string;
+ count_10k: number;
+ count_10q: number;
+ count_8k: number;
+ count_other: number;
+};
+
+export type FilingsResponse = {
+ kpis: FilingKpis;
+ cadence: CadencePoint[];
+ form_mix: FormMixRow[];
+ readout: string;
+ filings: FilingItem[];
+};
+
export type RatiosResponse = {
pe_ttm: RatioPoint;
ev_ebitda: RatioPoint;