2025-09-12 18:33:32 +01:00

82 lines
1.6 KiB
Python

from pydantic import BaseModel, Field
from typing import List, Optional, Dict
class FetchData(BaseModel):
bid_price: Optional[float] = Field(default=None)
ask_price: Optional[float] = Field(default=None)
timestamp: str
direction: Optional[str] = Field(default=None)
broker: str
symbol: str
spread: Optional[float] = Field(default=None)
midline: Optional[float] = Field(default=None)
class FetchDataResponse(BaseModel):
data: List[FetchData]
class FetchQuoteRequest(BaseModel):
broker: str
symbol: Optional[str] = None
date: Optional[str] = None
start_time: Optional[int] = None
end_time: Optional[int] = None
class QuoteResponse(BaseModel):
timestamp: int
bid: float
ask: float
direction: Optional[str] = None
session_id: str
class BrokersSymbolsResponse(BaseModel):
brokers: Dict[str, List[str]]
class FetchQuoteResponse(BaseModel):
quotes: List[QuoteResponse]
class FetchBrokersResponse(BaseModel):
brokers: List[str]
class ListSymbolsRequest(BaseModel):
broker: str
class ListSymbolsResponse(BaseModel):
symbols: List[str]
class ListDatesRequest(BaseModel):
broker: str
symbol: str
class ListDatesResponse(BaseModel):
dates: List[str]
class ListSessionRequest(BaseModel):
broker: str
symbol: str
date: str
class ListSessionResponse(BaseModel):
sessions: List[str]
class IngestRequest(BaseModel):
zip_path: str
class IngestResponse(BaseModel):
status: str
message: str
class IngestAllRequest(BaseModel):
folder_path: str
class IngestAllResponse(BaseModel):
status: str
results: List[IngestResponse]