71 lines
1.4 KiB
Python
71 lines
1.4 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import List, Optional, Dict, Any
|
|
from datetime import datetime
|
|
|
|
|
|
class AssetBase(BaseModel):
|
|
id: str
|
|
rank: Optional[str] = None
|
|
symbol: str
|
|
name: str
|
|
supply: Optional[str] = None
|
|
max_supply: Optional[str] = None
|
|
market_cap_usd: Optional[str] = None
|
|
volume_usd_24hr: Optional[str] = None
|
|
price_usd: Optional[str] = None
|
|
change_percent_24hr: Optional[str] = None
|
|
vwap_24hr: Optional[str] = None
|
|
explorer: Optional[str] = None
|
|
|
|
|
|
class AssetCreate(AssetBase):
|
|
pass
|
|
|
|
|
|
class AssetInDB(AssetBase):
|
|
last_updated: datetime
|
|
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
|
|
class AssetResponse(BaseModel):
|
|
timestamp: int
|
|
data: List[AssetBase]
|
|
|
|
|
|
class SingleAssetResponse(BaseModel):
|
|
timestamp: int
|
|
data: AssetBase
|
|
|
|
|
|
class AssetHistoryPoint(BaseModel):
|
|
price_usd: str
|
|
time: int # Unix timestamp in milliseconds
|
|
date: datetime
|
|
|
|
|
|
class AssetHistoryResponse(BaseModel):
|
|
timestamp: int
|
|
data: List[AssetHistoryPoint]
|
|
|
|
|
|
class AssetMarket(BaseModel):
|
|
exchange_id: str
|
|
base_id: str
|
|
quote_id: str
|
|
base_symbol: str
|
|
quote_symbol: str
|
|
volume_usd_24hr: str
|
|
price_usd: str
|
|
volume_percent: str
|
|
|
|
|
|
class AssetMarketsResponse(BaseModel):
|
|
timestamp: int
|
|
data: List[AssetMarket]
|
|
|
|
|
|
class ErrorResponse(BaseModel):
|
|
error: str
|
|
timestamp: Optional[int] = None |