80 lines
1.6 KiB
Python
80 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
|
|
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
|
|
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]
|
|
|