diff --git a/datamaxi/_endpoints.py b/datamaxi/_endpoints.py new file mode 100644 index 0000000..788c492 --- /dev/null +++ b/datamaxi/_endpoints.py @@ -0,0 +1,1185 @@ +""" +Auto-generated endpoint registry from openapi.yaml. +DO NOT EDIT — regenerate with: make python +""" + +ENDPOINTS = { + "cex_announcements": { + "path": "/api/v1/cex/announcements", + "method": "GET", + "tag": "announcements", + "summary": "Announcements", + "requires_auth": True, + "group": "announcements", + "params": { + "page": { + "required": False, + "type": "int", + "default": 1, + "description": "Page number", + }, + "limit": { + "required": False, + "type": "int", + "default": 10, + "description": "Page size", + }, + "sort": { + "required": False, + "type": "str", + "default": "desc", + "enum": ["asc", "desc"], + "description": "Specifies sort", + }, + "key": { + "required": False, + "type": "str", + "default": "timestamp", + "enum": ["exchange", "category", "title", "timestamp"], + "description": "Specifies key to sort by", + }, + "exchange": { + "required": False, + "type": "str", + "description": "Specifies exchange(s), separated by ,", + }, + "category": { + "required": False, + "type": "str", + "default": "", + "enum": ["notice", "listing", "delisting", "user_events"], + "description": "Specifies category(s), separated by ,", + }, + }, + }, + "cex_candle": { + "path": "/api/v1/cex/candle", + "method": "GET", + "tag": "cex-candle", + "summary": "Data", + "requires_auth": True, + "group": "cex", + "subgroup": "candle", + "params": { + "exchange": { + "required": True, + "type": "str", + "description": "Specifes exchange", + }, + "market": { + "required": True, + "type": "str", + "default": "spot", + "enum": ["spot", "futures"], + "description": "Specifies market", + }, + "symbol": { + "required": True, + "type": "str", + "description": "Specifies symbol", + }, + "currency": { + "required": False, + "type": "str", + "default": "USD", + "enum": ["USD", "KRW"], + "description": "Specifies currency", + }, + "interval": { + "required": False, + "type": "str", + "default": "1d", + "description": "Specifies interval", + }, + "from": { + "required": False, + "type": "str", + "description": "Specifies from", + }, + "to": { + "required": False, + "type": "str", + "description": "Specifies to", + }, + }, + }, + "cex_candle_exchanges": { + "path": "/api/v1/cex/candle/exchanges", + "method": "GET", + "tag": "cex-candle", + "summary": "Exchanges", + "requires_auth": False, + "group": "cex", + "subgroup": "candle", + "params": { + "market": { + "required": True, + "type": "str", + "enum": ["spot", "futures"], + "description": "Specifies market type", + }, + }, + }, + "cex_candle_intervals": { + "path": "/api/v1/cex/candle/intervals", + "method": "GET", + "tag": "cex-candle", + "summary": "Intervals", + "requires_auth": False, + "group": "cex", + "subgroup": "candle", + "params": {}, + }, + "cex_candle_symbols": { + "path": "/api/v1/cex/candle/symbols", + "method": "GET", + "tag": "cex-candle", + "summary": "Symbols", + "requires_auth": False, + "group": "cex", + "subgroup": "candle", + "params": { + "exchange": { + "required": False, + "type": "str", + "description": "Specifies exchange name", + }, + "market": { + "required": False, + "type": "str", + "enum": ["spot", "futures"], + "description": "Specifies market type", + }, + }, + }, + "cex_symbol_cautions": { + "path": "/api/v1/cex/symbol/cautions", + "method": "GET", + "tag": "cex-symbol", + "summary": "Active symbol cautions", + "requires_auth": False, + "group": "cex", + "subgroup": "symbol", + "params": { + "exchange": { + "required": False, + "type": "str", + "description": "Exchange filter (comma-separated, empty = all)", + }, + "market": { + "required": False, + "type": "str", + "enum": ["spot", "futures"], + "description": "spot or futures", + }, + "min_level": { + "required": False, + "type": "str", + "enum": ["caution", "warning", "danger"], + "description": "Minimum severity", + }, + "active_only": { + "required": False, + "type": "bool", + "description": "Exclude rows whose end_at is in the past (default true)", + }, + "limit": { + "required": False, + "type": "int", + "description": "Page size (default 500, max 5000)", + }, + "page": { + "required": False, + "type": "int", + "description": "Page number (1-based)", + }, + }, + }, + "cex_symbol_delistings": { + "path": "/api/v1/cex/symbol/delistings", + "method": "GET", + "tag": "cex-symbol", + "summary": "Delisting schedule", + "requires_auth": False, + "group": "cex", + "subgroup": "symbol", + "params": { + "exchange": { + "required": False, + "type": "str", + "description": "Exchange filter (comma-separated)", + }, + "market": { + "required": False, + "type": "str", + "enum": ["spot", "futures"], + "description": "spot or futures", + }, + "from_ms": { + "required": False, + "type": "int", + "description": "Lower bound for delisting_at (ms epoch, default = now)", + }, + "to_ms": { + "required": False, + "type": "int", + "description": "Upper bound for delisting_at (ms epoch, default = now+30 days)", + }, + "include_past": { + "required": False, + "type": "bool", + "description": "Include already-delisted rows (default false)", + }, + "limit": { + "required": False, + "type": "int", + "description": "Page size (default 200, max 2000)", + }, + "page": { + "required": False, + "type": "int", + "description": "Page number (1-based)", + }, + }, + }, + "cex_symbol_metadata": { + "path": "/api/v1/cex/symbol/metadata", + "method": "GET", + "tag": "cex-symbol", + "summary": "Symbol metadata", + "requires_auth": False, + "group": "cex", + "subgroup": "symbol", + "params": { + "exchange": { + "required": False, + "type": "str", + "description": "Comma-separated exchange names (empty = all)", + }, + "market": { + "required": False, + "type": "str", + "enum": ["spot", "futures"], + "description": "spot or futures (empty = both)", + }, + "base": { + "required": False, + "type": "str", + "description": "Base asset filter", + }, + "quote": { + "required": False, + "type": "str", + "description": "Quote asset filter", + }, + "status": { + "required": False, + "type": "str", + "description": "trading_status filter (repeatable, comma-separated)", + }, + "limit": { + "required": False, + "type": "int", + "description": "Page size (default 200, max 2000)", + }, + "page": { + "required": False, + "type": "int", + "description": "Page number (1-based)", + }, + }, + }, + "cex_symbol_tags": { + "path": "/api/v1/cex/symbol/tags", + "method": "GET", + "tag": "cex-symbol", + "summary": "Symbol tags", + "requires_auth": False, + "group": "cex", + "subgroup": "symbol", + "params": { + "tag": { + "required": False, + "type": "str", + "description": "Tag filter (repeatable, comma-separated)", + }, + "exchange": { + "required": False, + "type": "str", + "description": "Exchange filter (repeatable, comma-separated)", + }, + "market": { + "required": False, + "type": "str", + "enum": ["spot", "futures"], + "description": "spot or futures", + }, + "base": { + "required": False, + "type": "str", + "description": "Base asset filter", + }, + "source": { + "required": False, + "type": "str", + "enum": ["rest_native", "announcement", "cmc", "manual"], + "description": "Tag source filter", + }, + "min_confidence": { + "required": False, + "type": "int", + "description": "Minimum confidence (0-100, default 80)", + }, + "limit": { + "required": False, + "type": "int", + "description": "Page size (default 500, max 5000)", + }, + "page": { + "required": False, + "type": "int", + "description": "Page number (1-based)", + }, + }, + }, + "dex_candle": { + "path": "/api/v1/dex/candle", + "method": "GET", + "tag": "dex", + "summary": "Candle", + "requires_auth": True, + "group": "dex", + "params": { + "chain": { + "required": True, + "type": "str", + "description": "Specifes chain", + }, + "exchange": { + "required": True, + "type": "str", + "description": "Specifes exchange", + }, + "pool": { + "required": True, + "type": "str", + "description": "Specifies pool", + }, + "interval": { + "required": False, + "type": "str", + "default": "1d", + "description": "Specifies interval", + }, + "from": { + "required": False, + "type": "str", + "description": "Specifies from", + }, + "to": { + "required": False, + "type": "str", + "description": "Specifies to", + }, + "page": { + "required": False, + "type": "int", + "default": 1, + "description": "Page number", + }, + "limit": { + "required": False, + "type": "int", + "default": 1000, + "description": "Page size", + }, + "sort": { + "required": False, + "type": "str", + "default": "asc", + "enum": ["asc", "desc"], + "description": "Specifies sort", + }, + }, + }, + "dex_chains": { + "path": "/api/v1/dex/chains", + "method": "GET", + "tag": "dex", + "summary": "Chains", + "requires_auth": False, + "group": "dex", + "params": {}, + }, + "dex_exchanges": { + "path": "/api/v1/dex/exchanges", + "method": "GET", + "tag": "dex", + "summary": "Exchanges", + "requires_auth": False, + "group": "dex", + "params": {}, + }, + "dex_intervals": { + "path": "/api/v1/dex/intervals", + "method": "GET", + "tag": "dex", + "summary": "Intervals", + "requires_auth": False, + "group": "dex", + "params": {}, + }, + "dex_pools": { + "path": "/api/v1/dex/pools", + "method": "GET", + "tag": "dex", + "summary": "Pools", + "requires_auth": False, + "group": "dex", + "params": { + "exchange": { + "required": False, + "type": "str", + "description": "Specifies exchange name", + }, + "chain": { + "required": False, + "type": "str", + "description": "Specifies the chain name", + }, + }, + }, + "dex_trade": { + "path": "/api/v1/dex/trade", + "method": "GET", + "tag": "dex", + "summary": "Trade", + "requires_auth": True, + "group": "dex", + "params": { + "chain": { + "required": True, + "type": "str", + "description": "Specifes chain", + }, + "exchange": { + "required": True, + "type": "str", + "description": "Specifes exchange", + }, + "pool": { + "required": True, + "type": "str", + "description": "Specifies pool", + }, + "from": { + "required": False, + "type": "str", + "description": "Specifies from", + }, + "to": { + "required": False, + "type": "str", + "description": "Specifies to", + }, + "page": { + "required": False, + "type": "int", + "default": 1, + "description": "Page number", + }, + "limit": { + "required": False, + "type": "int", + "default": 1000, + "description": "Page size", + }, + "sort": { + "required": False, + "type": "str", + "default": "asc", + "enum": ["asc", "desc"], + "description": "Specifies sort", + }, + }, + }, + "forex": { + "path": "/api/v1/forex", + "method": "GET", + "tag": "forex", + "summary": "Forex", + "requires_auth": True, + "group": "forex", + "params": { + "symbol": { + "required": False, + "type": "str", + "description": "Specifies symbol", + }, + }, + }, + "forex_symbols": { + "path": "/api/v1/forex/symbols", + "method": "GET", + "tag": "forex", + "summary": "Symbols", + "requires_auth": False, + "group": "forex", + "params": {}, + }, + "funding_rate_exchanges": { + "path": "/api/v1/funding-rate/exchanges", + "method": "GET", + "tag": "funding-rate", + "summary": "Exchanges", + "requires_auth": False, + "group": "funding_rate", + "params": {}, + }, + "funding_rate_history": { + "path": "/api/v1/funding-rate/history", + "method": "GET", + "tag": "funding-rate", + "summary": "Historical funding rate", + "requires_auth": True, + "group": "funding_rate", + "params": { + "exchange": { + "required": True, + "type": "str", + "description": "Specifes exchange", + }, + "symbol": { + "required": True, + "type": "str", + "description": "Specifies symbol", + }, + "page": { + "required": False, + "type": "str", + "default": "1", + "description": "Specifies page", + }, + "limit": { + "required": False, + "type": "str", + "default": "1000", + "description": "Specifies limit", + }, + "from": { + "required": False, + "type": "str", + "description": "Specifies from", + }, + "to": { + "required": False, + "type": "str", + "description": "Specifies to", + }, + "sort": { + "required": False, + "type": "str", + "default": "asc", + "enum": ["asc", "desc"], + "description": "Specifies sort", + }, + }, + }, + "funding_rate_latest": { + "path": "/api/v1/funding-rate/latest", + "method": "GET", + "tag": "funding-rate", + "summary": "Latest funding rate", + "requires_auth": True, + "group": "funding_rate", + "params": { + "exchange": { + "required": True, + "type": "str", + "description": "Specifies exchange", + }, + "symbol": { + "required": True, + "type": "str", + "description": "Specifies symbol", + }, + }, + }, + "funding_rate_symbols": { + "path": "/api/v1/funding-rate/symbols", + "method": "GET", + "tag": "funding-rate", + "summary": "Symbols", + "requires_auth": False, + "group": "funding_rate", + "params": { + "exchange": { + "required": True, + "type": "str", + "description": "Specifies exchange name", + }, + }, + }, + "index_price": { + "path": "/api/v1/index-price", + "method": "GET", + "tag": "index-price", + "summary": "Historical Index Price", + "requires_auth": True, + "group": "index_price", + "params": { + "asset": { + "required": True, + "type": "str", + "description": "Asset", + }, + "from": { + "required": False, + "type": "str", + "default": "now - 1 month", + "description": "Specifies from", + }, + "to": { + "required": False, + "type": "str", + "default": "now", + "description": "Specifies to", + }, + "interval": { + "required": False, + "type": "str", + "default": "5m", + "description": "interval", + }, + }, + }, + "liquidation": { + "path": "/api/v1/liquidation", + "method": "GET", + "tag": "liquidation", + "summary": "Recent Liquidations", + "requires_auth": True, + "group": "liquidation", + "params": { + "exchange": { + "required": True, + "type": "str", + "description": "Exchange identifier", + }, + "symbol": { + "required": True, + "type": "str", + "description": "Exchange-native API symbol", + }, + "limit": { + "required": False, + "type": "int", + "default": 100, + "description": "Number of events to return (1-1000)", + }, + }, + }, + "listings_historical": { + "path": "/api/v1/listings/historical", + "method": "GET", + "tag": "listing", + "summary": "Historical token listings", + "requires_auth": True, + "group": "listing", + "params": { + "refresh": { + "required": False, + "type": "bool", + "default": False, + "description": "Refresh cache", + }, + }, + }, + "margin_borrow": { + "path": "/api/v1/margin-borrow", + "method": "GET", + "tag": "margin-borrow", + "summary": "Margin borrow", + "requires_auth": True, + "group": "margin_borrow", + "params": { + "asset": { + "required": True, + "type": "str", + "description": "Token base asset", + }, + }, + }, + "naver_trend": { + "path": "/api/v1/naver-trend", + "method": "GET", + "tag": "naver-trend", + "summary": "Trend", + "requires_auth": True, + "group": "naver_trend", + "params": { + "symbol": { + "required": True, + "type": "str", + "description": "Specifies symbol", + }, + }, + }, + "naver_trend_symbols": { + "path": "/api/v1/naver-trend/symbols", + "method": "GET", + "tag": "naver-trend", + "summary": "Symbols", + "requires_auth": True, + "group": "naver_trend", + "params": {}, + }, + "open_interest": { + "path": "/api/v1/open-interest", + "method": "GET", + "tag": "open-interest", + "summary": "Latest Open Interest", + "requires_auth": True, + "group": "open_interest", + "params": { + "exchange": { + "required": True, + "type": "str", + "description": "Exchange identifier", + }, + "symbol": { + "required": True, + "type": "str", + "description": "Exchange-native API symbol", + }, + }, + }, + "premium": { + "path": "/api/v1/premium", + "method": "GET", + "tag": "premium", + "summary": "Premium", + "requires_auth": True, + "group": "premium", + "params": { + "source_exchange": { + "required": False, + "type": "str", + "description": "Specifies source exchange(s), separated by ,", + }, + "target_exchange": { + "required": False, + "type": "str", + "description": "Specifies target exchange(s), separated by ,", + }, + "asset": { + "required": False, + "type": "str", + "description": "Specifies asset(s), separated by ,", + }, + "source_quote": { + "required": False, + "type": "str", + "description": "Specifies source quote(s), separated by ,", + }, + "target_quote": { + "required": False, + "type": "str", + "description": "Specifies target quote(s), separated by ,", + }, + "source_market": { + "required": False, + "type": "str", + "enum": ["spot", "futures"], + "description": "Specifies source market", + }, + "target_market": { + "required": False, + "type": "str", + "enum": ["spot", "futures"], + "description": "Specifies target market", + }, + "premium_type": { + "required": False, + "type": "str", + "enum": ["spot-spot", "futures-futures", "spot-futures"], + "description": "Specifies premium type(s), separated by ,", + }, + "currency": { + "required": False, + "type": "str", + "default": "USD", + "description": "Specifies currency applied to price values", + }, + "conversion_base": { + "required": False, + "type": "str", + "default": "USDT", + "description": "Specifies conversion base", + }, + "page": { + "required": False, + "type": "int", + "default": 1, + "description": "Page number", + }, + "limit": { + "required": False, + "type": "int", + "default": 10, + "description": "Page size", + }, + "sort": { + "required": False, + "type": "str", + "default": "desc", + "enum": ["asc", "desc"], + "description": "Specifies sort order", + }, + "key": { + "required": False, + "type": "str", + "default": "pdp", + "description": "Specifies key to sort by", + }, + "query": { + "required": False, + "type": "str", + "description": "Search query for filtering assets", + }, + "only_transferable": { + "required": False, + "type": "bool", + "default": False, + "description": "Filter only transferable assets", + }, + "network": { + "required": False, + "type": "str", + "description": "Specifies network(s), separated by ,", + }, + "min_sv": { + "required": False, + "type": "float", + "description": "Minimum source volume", + }, + "min_tv": { + "required": False, + "type": "float", + "description": "Minimum target volume", + }, + }, + }, + "premium_exchanges": { + "path": "/api/v1/premium/exchanges", + "method": "GET", + "tag": "premium", + "summary": "Exchanges", + "requires_auth": False, + "group": "premium", + "params": {}, + }, + "telegram_channels": { + "path": "/api/v1/telegram/channels", + "method": "GET", + "tag": "telegram", + "summary": "Channels", + "requires_auth": True, + "group": "telegram", + "params": { + "page": { + "required": False, + "type": "int", + "default": 1, + "description": "Page number", + }, + "limit": { + "required": False, + "type": "int", + "default": 10, + "description": "Page size", + }, + "category": { + "required": False, + "type": "str", + "default": "empty", + "description": "Specifies language category of telegram channel", + }, + "key": { + "required": False, + "type": "str", + "default": "channelName", + "enum": ["channelName", "handle", "subscribers", "createdAt"], + "description": "Specifies key to sort by", + }, + "sort": { + "required": False, + "type": "str", + "default": "desc", + "enum": ["asc", "desc"], + "description": "Specifies sort", + }, + }, + }, + "telegram_messages": { + "path": "/api/v1/telegram/messages", + "method": "GET", + "tag": "telegram", + "summary": "Messages", + "requires_auth": True, + "group": "telegram", + "params": { + "channel": { + "required": False, + "type": "str", + "default": "", + "description": "Specifies channel username", + }, + "page": { + "required": False, + "type": "int", + "default": 1, + "description": "Page number", + }, + "limit": { + "required": False, + "type": "int", + "default": 10, + "description": "Page size", + }, + "key": { + "required": False, + "type": "str", + "default": "publishedAt", + "enum": [ + "channelName", + "views", + "reactions", + "forwards", + "publishedAt", + ], + "description": "Specifies key to sort by", + }, + "sort": { + "required": False, + "type": "str", + "default": "desc", + "enum": ["asc", "desc"], + "description": "Specifies sort", + }, + "category": { + "required": False, + "type": "str", + "default": "", + "enum": ["english", "korean"], + "description": "Specifies category", + }, + "search_query": { + "required": False, + "type": "str", + "default": "", + "description": "Specifies search query", + }, + }, + }, + "ticker": { + "path": "/api/v1/ticker", + "method": "GET", + "tag": "ticker", + "summary": "Data", + "requires_auth": True, + "group": "ticker", + "params": { + "exchange": { + "required": True, + "type": "str", + "description": "Specifes exchange", + }, + "symbol": { + "required": True, + "type": "str", + "description": "Specifies symbol", + }, + "market": { + "required": False, + "type": "str", + "enum": ["spot", "futures"], + "description": "Specifies market", + }, + "currency": { + "required": False, + "type": "str", + "default": "USD", + "enum": ["KRW", "USD"], + "description": "Specifies currency applied to price values", + }, + "conversion_base": { + "required": False, + "type": "str", + "description": "Specifies conversion base applied to price values", + }, + }, + }, + "ticker_exchanges": { + "path": "/api/v1/ticker/exchanges", + "method": "GET", + "tag": "ticker", + "summary": "Exchanges", + "requires_auth": False, + "group": "ticker", + "params": { + "market": { + "required": False, + "type": "str", + "enum": ["spot", "futures"], + "description": "Specifies market", + }, + }, + }, + "ticker_symbols": { + "path": "/api/v1/ticker/symbols", + "method": "GET", + "tag": "ticker", + "summary": "Symbols", + "requires_auth": False, + "group": "ticker", + "params": { + "exchange": { + "required": True, + "type": "str", + "description": "Specifes exchange", + }, + "market": { + "required": False, + "type": "str", + "enum": ["spot", "futures"], + "description": "Specifies market", + }, + }, + }, + "cex_token_updates": { + "path": "/api/v1/cex/token/updates", + "method": "GET", + "tag": "token", + "summary": "Token Updates", + "requires_auth": True, + "group": "token", + "params": { + "page": { + "required": False, + "type": "str", + "default": "1", + "description": "Specifies page", + }, + "limit": { + "required": False, + "type": "str", + "default": "100", + "description": "Specifies limit", + }, + "type": { + "required": False, + "type": "str", + "enum": ["listed", "delisted"], + "description": "Specifies type of token update", + }, + }, + }, + "cex_fees": { + "path": "/api/v1/cex/fees", + "method": "GET", + "tag": "trading-fees", + "summary": "Data", + "requires_auth": True, + "group": "trading_fees", + "params": { + "exchange": { + "required": False, + "type": "str", + "description": "Specifies exchange", + }, + "symbol": { + "required": False, + "type": "str", + "description": "Specifies symbol", + }, + }, + }, + "cex_fees_exchanges": { + "path": "/api/v1/cex/fees/exchanges", + "method": "GET", + "tag": "trading-fees", + "summary": "Exchanges", + "requires_auth": False, + "group": "trading_fees", + "params": {}, + }, + "cex_fees_symbols": { + "path": "/api/v1/cex/fees/symbols", + "method": "GET", + "tag": "trading-fees", + "summary": "Symbols", + "requires_auth": False, + "group": "trading_fees", + "params": { + "exchange": { + "required": True, + "type": "str", + "description": "Specifes exchange", + }, + }, + }, + "wallet_status": { + "path": "/api/v1/wallet-status", + "method": "GET", + "tag": "wallet-status", + "summary": "Data", + "requires_auth": True, + "group": "wallet_status", + "params": { + "exchange": { + "required": False, + "type": "str", + "description": "Specifes exchange", + }, + "asset": { + "required": True, + "type": "str", + "description": "Specifies asset", + }, + }, + }, + "wallet_status_assets": { + "path": "/api/v1/wallet-status/assets", + "method": "GET", + "tag": "wallet-status", + "summary": "Assets", + "requires_auth": False, + "group": "wallet_status", + "params": { + "exchange": { + "required": True, + "type": "str", + "description": "Specifes exchange", + }, + }, + }, + "wallet_status_exchanges": { + "path": "/api/v1/wallet-status/exchanges", + "method": "GET", + "tag": "wallet-status", + "summary": "Exchanges", + "requires_auth": False, + "group": "wallet_status", + "params": {}, + }, +} + + +# Endpoint index by group for SDK class mapping +GROUPS = {} +for _op_id, _ep in ENDPOINTS.items(): + _group = _ep.get("group", "") + _subgroup = _ep.get("subgroup") + _key = f"{_group}.{_subgroup}" if _subgroup else _group + GROUPS.setdefault(_key, []).append(_op_id)