nimazasinich
News source and monitoring update (#113)
3fea549
{
"categories": {
"market_data": {
"name": "Market Data",
"description": "Real-time and historical cryptocurrency market data",
"icon": "📊"
},
"news": {
"name": "News & Media",
"description": "Crypto news from multiple sources",
"icon": "📰"
},
"sentiment": {
"name": "Sentiment Analysis",
"description": "Market sentiment and Fear & Greed Index",
"icon": "🎭"
},
"analytics": {
"name": "On-Chain Analytics",
"description": "Blockchain data and whale tracking",
"icon": "🔗"
},
"defi": {
"name": "DeFi Data",
"description": "DeFi protocols, TVL, and yields",
"icon": "🏦"
},
"technical": {
"name": "Technical Analysis",
"description": "Technical indicators and trading signals",
"icon": "📈"
},
"ai_models": {
"name": "AI & ML Models",
"description": "AI-powered analysis and predictions",
"icon": "🤖"
},
"explorers": {
"name": "Block Explorers",
"description": "Blockchain explorer APIs",
"icon": "🔍"
}
},
"services": {
"market_data": {
"providers": [
{
"id": "coingecko",
"name": "CoinGecko",
"url": "https://api.coingecko.com/api/v3",
"free": true,
"requires_key": false,
"rate_limit": "10-50 req/min",
"endpoints": ["/simple/price", "/coins/markets", "/coins/{id}/market_chart"],
"features": ["prices", "market_cap", "volume", "historical", "ohlcv"],
"active": true
},
{
"id": "coinmarketcap",
"name": "CoinMarketCap",
"url": "https://pro-api.coinmarketcap.com/v1",
"free": true,
"requires_key": true,
"key_env": "COINMARKETCAP_KEY_1",
"rate_limit": "333 req/day",
"endpoints": ["/cryptocurrency/quotes/latest", "/cryptocurrency/listings/latest"],
"features": ["prices", "market_cap", "rankings"],
"active": true
},
{
"id": "binance",
"name": "Binance",
"url": "https://api.binance.com/api/v3",
"free": true,
"requires_key": false,
"rate_limit": "1200 req/min",
"endpoints": ["/ticker/price", "/klines", "/ticker/24hr"],
"features": ["prices", "ohlcv", "trades", "depth"],
"active": true
},
{
"id": "cryptocompare",
"name": "CryptoCompare",
"url": "https://min-api.cryptocompare.com/data",
"free": true,
"requires_key": false,
"rate_limit": "100K/month",
"endpoints": ["/pricemulti", "/histoday", "/histohour"],
"features": ["prices", "historical", "social"],
"active": true
},
{
"id": "coincap",
"name": "CoinCap",
"url": "https://api.coincap.io/v2",
"free": true,
"requires_key": false,
"rate_limit": "200 req/min",
"endpoints": ["/assets", "/rates", "/candles"],
"features": ["prices", "history", "exchanges"],
"active": true
},
{
"id": "coinpaprika",
"name": "CoinPaprika",
"url": "https://api.coinpaprika.com/v1",
"free": true,
"requires_key": false,
"rate_limit": "unlimited",
"endpoints": ["/tickers", "/coins", "/ohlcv"],
"features": ["prices", "ohlcv", "exchanges"],
"active": true
},
{
"id": "messari",
"name": "Messari",
"url": "https://data.messari.io/api/v1",
"free": true,
"requires_key": false,
"rate_limit": "20 req/min",
"endpoints": ["/assets", "/assets/{symbol}/metrics"],
"features": ["prices", "metrics", "profiles"],
"active": true
},
{
"id": "coinlore",
"name": "CoinLore",
"url": "https://api.coinlore.net/api",
"free": true,
"requires_key": false,
"rate_limit": "unlimited",
"endpoints": ["/tickers/", "/global/"],
"features": ["prices", "global_stats"],
"active": true
}
],
"collection_interval": "15m",
"realtime_supported": true
},
"news": {
"providers": [
{
"id": "cryptocompare_news",
"name": "CryptoCompare News",
"url": "https://min-api.cryptocompare.com/data/v2/news/",
"free": true,
"requires_key": false,
"rate_limit": "100K/month",
"endpoints": ["?lang=EN", "?categories=BTC"],
"features": ["news", "categories", "sources"],
"active": true
},
{
"id": "newsapi",
"name": "NewsAPI",
"url": "https://newsapi.org/v2",
"free": true,
"requires_key": true,
"key_env": "NEWSAPI_KEY",
"rate_limit": "100 req/day",
"endpoints": ["/everything", "/top-headlines"],
"features": ["news", "search", "sources"],
"active": true
},
{
"id": "cryptopanic",
"name": "CryptoPanic",
"url": "https://cryptopanic.com/api/v1/posts/",
"free": true,
"requires_key": true,
"key_env": "CRYPTOPANIC_KEY",
"rate_limit": "500 req/day",
"endpoints": ["?auth_token={key}", "?filter=hot"],
"features": ["news", "sentiment_votes", "trending"],
"active": true
},
{
"id": "bitcoin_magazine_rss",
"name": "Bitcoin Magazine",
"url": "https://bitcoinmagazine.com/feed",
"free": true,
"requires_key": false,
"rate_limit": "unlimited",
"endpoints": [],
"features": ["rss", "articles"],
"active": true
},
{
"id": "decrypt_rss",
"name": "Decrypt",
"url": "https://decrypt.co/feed",
"free": true,
"requires_key": false,
"rate_limit": "unlimited",
"endpoints": [],
"features": ["rss", "articles", "web3"],
"active": true
},
{
"id": "cryptoslate_rss",
"name": "CryptoSlate",
"url": "https://cryptoslate.com/feed/",
"free": true,
"requires_key": false,
"rate_limit": "unlimited",
"endpoints": [],
"features": ["rss", "articles", "analysis"],
"active": true
},
{
"id": "cointelegraph_rss",
"name": "CoinTelegraph",
"url": "https://cointelegraph.com/rss",
"free": true,
"requires_key": false,
"rate_limit": "unlimited",
"endpoints": [],
"features": ["rss", "articles"],
"active": true
},
{
"id": "coindesk_rss",
"name": "CoinDesk",
"url": "https://www.coindesk.com/arc/outboundfeeds/rss/",
"free": true,
"requires_key": false,
"rate_limit": "unlimited",
"endpoints": [],
"features": ["rss", "articles"],
"active": true
},
{
"id": "theblock_rss",
"name": "The Block",
"url": "https://www.theblock.co/rss.xml",
"free": true,
"requires_key": false,
"rate_limit": "unlimited",
"endpoints": [],
"features": ["rss", "research"],
"active": true
}
],
"collection_interval": "15m",
"realtime_supported": false
},
"sentiment": {
"providers": [
{
"id": "fear_greed_index",
"name": "Fear & Greed Index",
"url": "https://api.alternative.me/fng/",
"free": true,
"requires_key": false,
"rate_limit": "unlimited",
"endpoints": ["?limit=1", "?limit=30"],
"features": ["fear_greed", "historical"],
"active": true
},
{
"id": "lunarcrush",
"name": "LunarCrush",
"url": "https://lunarcrush.com/api",
"free": true,
"requires_key": true,
"key_env": "LUNARCRUSH_KEY",
"rate_limit": "50 req/day",
"endpoints": [],
"features": ["social_volume", "sentiment", "influencers"],
"active": true
},
{
"id": "santiment",
"name": "Santiment",
"url": "https://api.santiment.net/graphql",
"free": true,
"requires_key": true,
"key_env": "SANTIMENT_KEY",
"rate_limit": "varies",
"endpoints": [],
"features": ["onchain", "social", "development"],
"active": true
},
{
"id": "augmento",
"name": "Augmento",
"url": "https://api.augmento.ai/v0.1",
"free": true,
"requires_key": false,
"rate_limit": "100 req/day",
"endpoints": [],
"features": ["sentiment_topics", "social_trends"],
"active": true
}
],
"collection_interval": "15m",
"realtime_supported": true
},
"analytics": {
"providers": [
{
"id": "whale_alert",
"name": "Whale Alert",
"url": "https://api.whale-alert.io/v1",
"free": true,
"requires_key": true,
"key_env": "WHALE_ALERT_KEY",
"rate_limit": "10 req/min",
"endpoints": ["/transactions"],
"features": ["whale_transactions", "alerts"],
"active": true
},
{
"id": "blockchair",
"name": "Blockchair",
"url": "https://api.blockchair.com",
"free": true,
"requires_key": false,
"rate_limit": "30 req/min",
"endpoints": ["/bitcoin/stats", "/ethereum/stats"],
"features": ["blockchain_stats", "addresses"],
"active": true
},
{
"id": "glassnode",
"name": "Glassnode",
"url": "https://api.glassnode.com/v1/metrics",
"free": true,
"requires_key": true,
"key_env": "GLASSNODE_KEY",
"rate_limit": "varies",
"endpoints": [],
"features": ["onchain_metrics", "sopr", "nupl"],
"active": true
},
{
"id": "cryptoquant",
"name": "CryptoQuant",
"url": "https://api.cryptoquant.com/v1",
"free": true,
"requires_key": true,
"key_env": "CRYPTOQUANT_KEY",
"rate_limit": "100 req/day",
"endpoints": [],
"features": ["exchange_flows", "miner_data"],
"active": true
}
],
"collection_interval": "30m",
"realtime_supported": false
},
"defi": {
"providers": [
{
"id": "defillama",
"name": "DefiLlama",
"url": "https://api.llama.fi",
"free": true,
"requires_key": false,
"rate_limit": "300 req/min",
"endpoints": ["/protocols", "/tvl", "/chains", "/yields"],
"features": ["tvl", "protocols", "yields", "stablecoins"],
"active": true
},
{
"id": "1inch",
"name": "1inch",
"url": "https://api.1inch.io/v4.0",
"free": true,
"requires_key": false,
"rate_limit": "varies",
"endpoints": ["/1/quote", "/1/swap"],
"features": ["dex_aggregator", "quotes", "swap"],
"active": true
},
{
"id": "uniswap_subgraph",
"name": "Uniswap Subgraph",
"url": "https://api.thegraph.com/subgraphs/name/uniswap",
"free": true,
"requires_key": false,
"rate_limit": "varies",
"endpoints": [],
"features": ["pairs", "swaps", "liquidity"],
"active": true
}
],
"collection_interval": "15m",
"realtime_supported": false
},
"technical": {
"providers": [
{
"id": "taapi",
"name": "TAAPI.IO",
"url": "https://api.taapi.io",
"free": true,
"requires_key": true,
"key_env": "TAAPI_KEY",
"rate_limit": "50 req/day",
"endpoints": ["/rsi", "/macd", "/ema"],
"features": ["indicators", "rsi", "macd", "bollinger"],
"active": true
}
],
"collection_interval": "15m",
"realtime_supported": true
},
"ai_models": {
"providers": [
{
"id": "huggingface",
"name": "HuggingFace Inference",
"url": "https://api-inference.huggingface.co/models",
"free": true,
"requires_key": true,
"key_env": "HF_TOKEN",
"rate_limit": "varies",
"endpoints": ["/ElKulako/cryptobert", "/ProsusAI/finbert"],
"features": ["sentiment_analysis", "text_generation", "classification"],
"active": true
}
],
"collection_interval": "on_demand",
"realtime_supported": true
},
"explorers": {
"providers": [
{
"id": "etherscan",
"name": "Etherscan",
"url": "https://api.etherscan.io/api",
"free": true,
"requires_key": true,
"key_env": "ETHERSCAN_KEY",
"rate_limit": "5 req/sec",
"endpoints": ["?module=account&action=balance", "?module=gastracker"],
"features": ["balances", "transactions", "gas"],
"active": true
},
{
"id": "bscscan",
"name": "BscScan",
"url": "https://api.bscscan.com/api",
"free": true,
"requires_key": true,
"key_env": "BSCSCAN_KEY",
"rate_limit": "5 req/sec",
"endpoints": ["?module=account&action=balance"],
"features": ["balances", "transactions"],
"active": true
},
{
"id": "tronscan",
"name": "TronScan",
"url": "https://apilist.tronscanapi.com/api",
"free": true,
"requires_key": true,
"key_env": "TRONSCAN_KEY",
"rate_limit": "varies",
"endpoints": ["/account"],
"features": ["balances", "transactions"],
"active": true
},
{
"id": "ethplorer",
"name": "Ethplorer",
"url": "https://api.ethplorer.io",
"free": true,
"requires_key": false,
"rate_limit": "varies",
"endpoints": ["/getAddressInfo"],
"features": ["tokens", "balances"],
"active": true
}
],
"collection_interval": "on_demand",
"realtime_supported": true
}
},
"api_endpoints": {
"unified_service": {
"base": "/api/service",
"endpoints": [
{"method": "GET", "path": "/rate", "params": "?pair=BTC/USDT", "description": "Get exchange rate"},
{"method": "GET", "path": "/rate/batch", "params": "?pairs=BTC/USDT,ETH/USDT", "description": "Get multiple rates"},
{"method": "GET", "path": "/market-status", "params": "", "description": "Market overview"},
{"method": "GET", "path": "/top", "params": "?n=10", "description": "Top coins"},
{"method": "GET", "path": "/sentiment", "params": "?symbol=BTC", "description": "Get sentiment"},
{"method": "GET", "path": "/whales", "params": "?chain=ethereum&min_amount_usd=1000000", "description": "Whale transactions"},
{"method": "GET", "path": "/onchain", "params": "?address=0x...&chain=ethereum", "description": "On-chain data"},
{"method": "POST", "path": "/query", "params": "", "description": "Universal query endpoint"}
]
},
"market": {
"base": "/api",
"endpoints": [
{"method": "GET", "path": "/market", "params": "?limit=100", "description": "Market data"},
{"method": "GET", "path": "/ohlcv", "params": "?symbol=BTC&timeframe=1h&limit=500", "description": "OHLCV data"},
{"method": "GET", "path": "/klines", "params": "?symbol=BTCUSDT&interval=1h", "description": "Klines (alias)"},
{"method": "GET", "path": "/historical", "params": "?symbol=BTC&days=30", "description": "Historical data"},
{"method": "GET", "path": "/coins/top", "params": "?limit=50", "description": "Top coins"}
]
},
"news": {
"base": "/api",
"endpoints": [
{"method": "GET", "path": "/news", "params": "?limit=20", "description": "Latest news"},
{"method": "GET", "path": "/news/latest", "params": "?symbol=BTC&limit=10", "description": "Latest by symbol"}
]
},
"sentiment": {
"base": "/api",
"endpoints": [
{"method": "GET", "path": "/sentiment/global", "params": "", "description": "Global sentiment"},
{"method": "GET", "path": "/fear-greed", "params": "", "description": "Fear & Greed Index"},
{"method": "POST", "path": "/sentiment/analyze", "params": "", "description": "Analyze text sentiment"}
]
},
"technical": {
"base": "/api/technical",
"endpoints": [
{"method": "POST", "path": "/ta-quick", "params": "", "description": "Quick technical analysis"},
{"method": "POST", "path": "/fa-eval", "params": "", "description": "Fundamental evaluation"},
{"method": "POST", "path": "/onchain-health", "params": "", "description": "On-chain health"},
{"method": "POST", "path": "/risk-assessment", "params": "", "description": "Risk assessment"},
{"method": "POST", "path": "/comprehensive", "params": "", "description": "Comprehensive analysis"}
]
},
"ai_models": {
"base": "/api",
"endpoints": [
{"method": "GET", "path": "/models/list", "params": "", "description": "List all models"},
{"method": "GET", "path": "/models/status", "params": "", "description": "Models status"},
{"method": "GET", "path": "/models/health", "params": "", "description": "Models health"},
{"method": "POST", "path": "/models/reinit-all", "params": "", "description": "Reinitialize models"},
{"method": "POST", "path": "/ai/decision", "params": "", "description": "AI trading decision"}
]
},
"resources": {
"base": "/api",
"endpoints": [
{"method": "GET", "path": "/resources/stats", "params": "", "description": "Resources statistics"},
{"method": "GET", "path": "/resources/apis", "params": "", "description": "All APIs list"},
{"method": "GET", "path": "/resources/summary", "params": "", "description": "Resources summary"},
{"method": "GET", "path": "/providers", "params": "", "description": "Data providers"},
{"method": "GET", "path": "/status", "params": "", "description": "System status"},
{"method": "GET", "path": "/health", "params": "", "description": "Health check"}
]
},
"websocket": {
"base": "/ws",
"endpoints": [
{"method": "WS", "path": "/master", "params": "", "description": "Master WebSocket (all services)"},
{"method": "WS", "path": "/live", "params": "", "description": "Live market data"},
{"method": "WS", "path": "/ai/data", "params": "", "description": "AI model updates"},
{"method": "WS", "path": "/data", "params": "", "description": "Data collection stream"},
{"method": "WS", "path": "/monitoring", "params": "", "description": "System monitoring"}
]
}
},
"collection_config": {
"intervals": {
"market": {"minutes": 15, "description": "Market data collection every 15 minutes"},
"news": {"minutes": 15, "description": "News collection every 15 minutes"},
"sentiment": {"minutes": 15, "description": "Sentiment collection every 15 minutes"},
"onchain": {"minutes": 30, "description": "On-chain data every 30 minutes"},
"defi": {"minutes": 15, "description": "DeFi data every 15 minutes"},
"historical": {"minutes": 30, "description": "Historical data every 30 minutes"}
},
"realtime": {
"description": "For client-side requests, data is fetched immediately from source",
"sources": ["binance", "coingecko", "coincap", "fear_greed_index"],
"cache_ttl_seconds": 60
}
},
"statistics": {
"total_providers": 40,
"active_providers": 38,
"free_providers": 35,
"categories_count": 8,
"total_endpoints": 200,
"api_keys_configured": 11
}
}