"""Pydantic response schemas for the Prism v2 Overview API.""" from typing import Literal from pydantic import BaseModel, Field class SearchResult(BaseModel): symbol: str name: str exchange: str | None = None class MarketIndex(BaseModel): name: str price: float | None = None change_pct: float | None = None class Quote(BaseModel): price: float | None = None prev_close: float | None = None change: float | None = None change_pct: float | None = None class Signal(BaseModel): key: str state: Literal["pos", "warn", "neg", "neu"] value: str description: str class OverviewStats(BaseModel): market_cap: float | None = None trailing_pe: float | None = None trailing_eps: float | None = None volume: float | None = None average_volume: float | None = None beta: float | None = None class Range52Week(BaseModel): low: float | None = None high: float | None = None price: float | None = None class ShortInterest(BaseModel): short_percent_of_float: float | None = None short_ratio: float | None = None shares_short: int | None = None shares_short_prior_month: int | None = None shares_short_delta_pct: float | None = None class CompanyProfile(BaseModel): symbol: str name: str sector: str | None = None industry: str | None = None exchange: str | None = None website: str | None = None summary: str | None = None class OverviewMeta(BaseModel): status: Literal["complete", "partial"] is_partial: bool = False field_availability: dict[str, bool] = Field(default_factory=dict) sources: dict[str, str] = Field(default_factory=dict) class TickerOverview(BaseModel): profile: CompanyProfile quote: Quote signals: list[Signal] = Field(default_factory=list) stats: OverviewStats range_52w: Range52Week short_interest: ShortInterest meta: OverviewMeta class HistoryPoint(BaseModel): date: str open: float | None = None high: float | None = None low: float | None = None close: float | None = None volume: float | None = None class WatchlistItem(BaseModel): symbol: str created_at: str quote: Quote | None = None class WatchlistResponse(BaseModel): items: list[WatchlistItem] limit: int = 10 class ErrorResponse(BaseModel): detail: str