ai-trading-sys/app/schemas/account.py
2025-05-22 19:04:57 +07:00

46 lines
No EOL
2.9 KiB
Python

from pydantic import BaseModel, Field
from typing import List, Optional, Dict, Any
class CoinInfo(BaseModel):
availableToBorrow: Optional[str] = Field(None, description="Amount available to borrow")
bonus: Optional[str] = Field(None, description="Bonus amount")
accruedInterest: Optional[str] = Field(None, description="Accrued interest")
availableToWithdraw: Optional[str] = Field(None, description="Amount available to withdraw")
totalOrderIM: Optional[str] = Field(None, description="Initial margin for orders")
equity: Optional[str] = Field(None, description="Total coin equity")
totalPositionMM: Optional[str] = Field(None, description="Maintenance margin for positions")
usdValue: Optional[str] = Field(None, description="USD value of the coin")
unrealisedPnl: Optional[str] = Field(None, description="Unrealized PnL")
collateralSwitch: Optional[bool] = Field(None, description="Is used as collateral")
spotHedgingQty: Optional[str] = Field(None, description="Spot hedging quantity")
borrowAmount: Optional[str] = Field(None, description="Borrowed amount")
totalPositionIM: Optional[str] = Field(None, description="Initial margin for positions")
walletBalance: Optional[str] = Field(None, description="Coin wallet balance")
cumRealisedPnl: Optional[str] = Field(None, description="Cumulative realized PnL")
locked: Optional[str] = Field(None, description="Locked amount")
marginCollateral: Optional[bool] = Field(None, description="Is used as margin collateral")
coin: str = Field(..., description="Coin symbol")
class AccountInfo(BaseModel):
totalEquity: str = Field(..., description="Total equity in USD")
accountIMRate: str = Field(..., description="Initial margin rate")
totalMarginBalance: str = Field(..., description="Total margin balance")
totalInitialMargin: str = Field(..., description="Total initial margin")
accountType: str = Field(..., description="Account type (e.g. UNIFIED)")
totalAvailableBalance: str = Field(..., description="Total available balance")
accountMMRate: str = Field(..., description="Maintenance margin rate")
totalPerpUPL: str = Field(..., description="Unrealized PnL of perpetual positions")
totalWalletBalance: str = Field(..., description="Total wallet balance")
accountLTV: str = Field(..., description="Loan to value")
totalMaintenanceMargin: str = Field(..., description="Total maintenance margin")
coin: List[CoinInfo] = Field(..., description="List of coins")
class ResultInfo(BaseModel):
list: List[AccountInfo] = Field(..., description="List of accounts")
class AccountResponseSchema(BaseModel):
retCode: int = Field(..., description="Return code (0 means success)")
retMsg: str = Field(..., description="Return message")
result: ResultInfo = Field(..., description="Detailed result")
retExtInfo: Dict[str, Any] = Field(..., description="Extra information")
time: int = Field(..., description="Response timestamp")