Source code for gmocoin_client.models
from __future__ import annotations
from typing import Generic, List, Literal, TypeVar
from pydantic import BaseModel, ConfigDict
T = TypeVar("T")
ServiceStatus = Literal["MAINTENANCE", "PREOPEN", "OPEN"]
Side = Literal["BUY", "SELL"]
ExecutionType = Literal["MARKET", "LIMIT", "STOP"]
TimeInForce = Literal["FAK", "FAS", "FOK", "SOK"]
OrderType = Literal["NORMAL", "LOSSCUT"]
SettleType = Literal["OPEN", "CLOSE"]
OrderStatus = Literal["WAITING", "ORDERED", "MODIFYING", "CANCELLING", "CANCELED", "EXECUTED", "EXPIRED"]
CancelType = Literal[
"USER",
"POSITION_LOSSCUT",
"INSUFFICIENT_BALANCE",
"INSUFFICIENT_MARGIN",
"ACCOUNT_LOSSCUT",
"MARGIN_CALL",
"MARGIN_CALL_LOSSCUT",
"EXPIRED_FAK",
"EXPIRED_FOK",
"EXPIRED_SOK",
"EXPIRED_SELFTRADE",
]
MarginCallStatus = Literal["NORMAL", "MARGIN_CALL", "LOSSCUT"]
ExecutionStatus = Literal["EXECUTED"]
[docs]
class APIBaseModel(BaseModel):
"""Base model for API payloads.
API用のベースモデル
"""
model_config = ConfigDict(extra="allow")
[docs]
class APIErrorMessage(APIBaseModel):
"""API error message entry.
エラーメッセージ1件
"""
message_code: str | None = None
message_string: str | None = None
[docs]
class APIResponse(APIBaseModel, Generic[T]):
"""API wrapper response.
`messages` is populated on error responses when `raise_on_error` is False.
"""
status: int
data: T | None = None
messages: list[APIErrorMessage] | None = None
responsetime: str | None = None
[docs]
class ServiceStatusData(APIBaseModel):
"""Service status payload.
サービスステータス
"""
status: ServiceStatus
[docs]
class TickerItem(APIBaseModel):
"""Ticker entry.
ティッカー情報
"""
ask: str | None = None
bid: str | None = None
high: str | None = None
last: str | None = None
low: str | None = None
symbol: str | None = None
timestamp: str | None = None
volume: str | None = None
[docs]
class OrderbookLevel(APIBaseModel):
"""Order book level.
板の価格レベル
"""
price: str | None = None
size: str | None = None
[docs]
class OrderbookData(APIBaseModel):
"""Order book snapshot.
板スナップショット
"""
asks: list[OrderbookLevel] | None = None
bids: list[OrderbookLevel] | None = None
symbol: str | None = None
[docs]
class TradeItem(APIBaseModel):
"""Trade entry.
約定情報
"""
price: str | None = None
side: Side | None = None
size: str | None = None
timestamp: str | None = None
[docs]
class TradesData(APIBaseModel):
"""Trades response payload.
約定一覧データ
"""
pagination: Pagination | None = None
list: List[TradeItem] | None = None
[docs]
class KlineItem(APIBaseModel):
"""Kline entry.
ローソク足データ
"""
openTime: str | None = None
open: str | None = None
high: str | None = None
low: str | None = None
close: str | None = None
volume: str | None = None
[docs]
class SymbolRule(APIBaseModel):
"""Symbol rule entry.
銘柄の取引ルール
"""
symbol: str | None = None
minOrderSize: str | None = None
maxOrderSize: str | None = None
sizeStep: str | None = None
tickSize: str | None = None
takerFee: str | None = None
makerFee: str | None = None
[docs]
class MarginData(APIBaseModel):
"""Margin summary.
証拠金サマリー
"""
actualProfitLoss: str | None = None
availableAmount: str | None = None
margin: str | None = None
marginCallStatus: MarginCallStatus | None = None
marginRatio: str | None = None
profitLoss: str | None = None
transferableAmount: str | None = None
[docs]
class AssetItem(APIBaseModel):
"""Asset balance entry.
資産残高
"""
amount: str | None = None
available: str | None = None
conversionRate: str | None = None
symbol: str | None = None
[docs]
class TradingVolumeLimit(APIBaseModel):
"""Trading volume limit entry.
取引量の制限
"""
symbol: str | None = None
todayLimitOpenSize: str | None = None
todayLimitBuySize: str | None = None
todayLimitSellSize: str | None = None
takerFee: str | None = None
makerFee: str | None = None
[docs]
class TradingVolumeData(APIBaseModel):
"""Trading volume payload.
取引量データ
"""
jpyVolume: str | None = None
tierLevel: int | None = None
limit: list[TradingVolumeLimit] | None = None
[docs]
class FiatHistoryItem(APIBaseModel):
"""Fiat history entry.
法定通貨の履歴
"""
amount: str | None = None
fee: str | None = None
status: ExecutionStatus | None = None
symbol: str | None = None
timestamp: str | None = None
[docs]
class CryptoHistoryItem(APIBaseModel):
"""Crypto history entry.
暗号資産の履歴
"""
address: str | None = None
amount: str | None = None
fee: str | None = None
status: ExecutionStatus | None = None
symbol: str | None = None
timestamp: str | None = None
txHash: str | None = None
[docs]
class OrderItem(APIBaseModel):
"""Order entry.
注文情報
"""
rootOrderId: int | None = None
orderId: int | None = None
symbol: str | None = None
side: Side | None = None
orderType: OrderType | None = None
executionType: ExecutionType | None = None
settleType: SettleType | None = None
size: str | None = None
executedSize: str | None = None
price: str | None = None
losscutPrice: str | None = None
status: OrderStatus | None = None
cancelType: CancelType | None = None
timeInForce: TimeInForce | None = None
timestamp: str | None = None
[docs]
class OrdersData(APIBaseModel):
"""Orders list payload.
注文一覧データ
"""
list: List[OrderItem] | None = None
[docs]
class ActiveOrdersData(APIBaseModel):
"""Active orders payload.
注文中一覧データ
"""
pagination: Pagination | None = None
list: List[OrderItem] | None = None
[docs]
class ExecutionItem(APIBaseModel):
"""Execution entry.
約定情報
"""
executionId: int | None = None
orderId: int | None = None
positionId: int | None = None
symbol: str | None = None
side: Side | None = None
settleType: SettleType | None = None
size: str | None = None
price: str | None = None
lossGain: str | None = None
fee: str | None = None
timestamp: str | None = None
[docs]
class ExecutionsData(APIBaseModel):
"""Executions list payload.
約定一覧データ
"""
list: List[ExecutionItem] | None = None
[docs]
class LatestExecutionsData(APIBaseModel):
"""Latest executions payload.
最新約定データ
"""
pagination: Pagination | None = None
list: List[ExecutionItem] | None = None
[docs]
class PositionItem(APIBaseModel):
"""Position entry.
建玉情報
"""
positionId: int | None = None
symbol: str | None = None
side: Side | None = None
size: str | None = None
orderdSize: str | None = None
price: str | None = None
lossGain: str | None = None
leverage: str | None = None
losscutPrice: str | None = None
timestamp: str | None = None
[docs]
class OpenPositionsData(APIBaseModel):
"""Open positions payload.
建玉一覧データ
"""
pagination: Pagination | None = None
list: List[PositionItem] | None = None
[docs]
class PositionSummaryItem(APIBaseModel):
"""Position summary entry.
ポジションサマリー
"""
averagePositionRate: str | None = None
positionLossGain: str | None = None
side: Side | None = None
sumOrderQuantity: str | None = None
sumPositionQuantity: str | None = None
symbol: str | None = None
[docs]
class PositionSummaryData(APIBaseModel):
"""Position summary payload.
ポジションサマリー一覧データ
"""
list: List[PositionSummaryItem] | None = None