| # 📡 API Documentation |
|
|
| ## Base URL |
| ``` |
| http://localhost:8000 |
| ``` |
|
|
| ## Authentication |
| No authentication required for this demo version. |
|
|
| --- |
|
|
| ## 🏥 Health & Status Endpoints |
|
|
| ### GET /health |
| Get system health status |
|
|
| **Request:** |
| ```bash |
| curl http://localhost:8000/health |
| ``` |
|
|
| **Response:** |
| ```json |
| { |
| "status": "healthy", |
| "timestamp": "2025-01-15T10:30:00", |
| "components": [ |
| { |
| "name": "API Server 1", |
| "status": "healthy", |
| "uptime": 99.99, |
| "response_time": 120 |
| } |
| ], |
| "summary": { |
| "total_components": 8, |
| "healthy": 8, |
| "degraded": 0, |
| "critical": 0 |
| } |
| } |
| ``` |
|
|
| --- |
|
|
| ### GET /info |
| Get system information |
|
|
| **Request:** |
| ```bash |
| curl http://localhost:8000/info |
| ``` |
|
|
| **Response:** |
| ```json |
| { |
| "name": "Crypto API Monitor", |
| "version": "1.0.0", |
| "environment": "production", |
| "uptime_seconds": 86400, |
| "memory_usage_mb": 450, |
| "cpu_usage_percent": 25.5, |
| "active_connections": 3, |
| "timestamp": "2025-01-15T10:30:00" |
| } |
| ``` |
|
|
| --- |
|
|
| ## 📊 Provider Endpoints |
|
|
| ### GET /api/providers |
| Get all data providers status |
|
|
| **Request:** |
| ```bash |
| curl http://localhost:8000/api/providers |
| ``` |
|
|
| **Response:** |
| ```json |
| [ |
| { |
| "name": "Binance", |
| "type": "Exchange", |
| "status": "operational", |
| "uptime": 99.95, |
| "response_time_ms": 85, |
| "requests_today": 150000, |
| "last_check": "2025-01-15T10:30:00", |
| "endpoint": "https://api.binance.com" |
| }, |
| { |
| "name": "CoinGecko", |
| "type": "Data Provider", |
| "status": "operational", |
| "uptime": 99.87, |
| "response_time_ms": 120, |
| "requests_today": 89000, |
| "last_check": "2025-01-15T10:30:00", |
| "endpoint": "https://api.coingecko.com" |
| } |
| ] |
| ``` |
|
|
| --- |
|
|
| ## 💰 Cryptocurrency Data |
|
|
| ### GET /api/crypto/prices/top |
| Get top cryptocurrency prices |
|
|
| **Parameters:** |
| - `limit` (optional): Number of results (default: 10) |
|
|
| **Request:** |
| ```bash |
| curl http://localhost:8000/api/crypto/prices/top?limit=5 |
| ``` |
|
|
| **Response:** |
| ```json |
| [ |
| { |
| "symbol": "BTC", |
| "name": "Bitcoin", |
| "price": 42150.50, |
| "change_24h": 3.25, |
| "volume_24h": 28000000000, |
| "market_cap": 825000000000, |
| "last_updated": "2025-01-15T10:30:00" |
| }, |
| { |
| "symbol": "ETH", |
| "name": "Ethereum", |
| "price": 2215.80, |
| "change_24h": 2.15, |
| "volume_24h": 12000000000, |
| "market_cap": 265000000000, |
| "last_updated": "2025-01-15T10:30:00" |
| } |
| ] |
| ``` |
|
|
| --- |
|
|
| ### GET /api/crypto/market-overview |
| Get market overview and statistics |
|
|
| **Request:** |
| ```bash |
| curl http://localhost:8000/api/crypto/market-overview |
| ``` |
|
|
| **Response:** |
| ```json |
| { |
| "total_market_cap": 1750000000000, |
| "total_volume_24h": 95000000000, |
| "average_change_24h": 2.45, |
| "top_gainers": [ |
| { |
| "symbol": "SOL", |
| "name": "Solana", |
| "price": 98.50, |
| "change_24h": 12.30 |
| } |
| ], |
| "top_losers": [ |
| { |
| "symbol": "XRP", |
| "name": "Ripple", |
| "price": 0.51, |
| "change_24h": -5.20 |
| } |
| ], |
| "timestamp": "2025-01-15T10:30:00" |
| } |
| ``` |
|
|
| --- |
|
|
| ## 📁 Categories |
|
|
| ### GET /api/categories |
| Get cryptocurrency categories |
|
|
| **Request:** |
| ```bash |
| curl http://localhost:8000/api/categories |
| ``` |
|
|
| **Response:** |
| ```json |
| [ |
| { |
| "id": 1, |
| "name": "DeFi", |
| "market_cap": 45000000000, |
| "change_24h": 5.2 |
| }, |
| { |
| "id": 2, |
| "name": "Smart Contract Platform", |
| "market_cap": 120000000000, |
| "change_24h": 3.1 |
| } |
| ] |
| ``` |
|
|
| --- |
|
|
| ## ⏱️ Rate Limits |
|
|
| ### GET /api/rate-limits |
| Get API rate limit information |
|
|
| **Request:** |
| ```bash |
| curl http://localhost:8000/api/rate-limits |
| ``` |
|
|
| **Response:** |
| ```json |
| [ |
| { |
| "provider": "Binance", |
| "limit_per_minute": 1200, |
| "limit_per_hour": 60000, |
| "remaining": 850, |
| "reset_time": "2025-01-15T10:31:00" |
| } |
| ] |
| ``` |
|
|
| --- |
|
|
| ## 📋 Logs |
|
|
| ### GET /api/logs |
| Get system logs |
|
|
| **Parameters:** |
| - `limit` (optional): Number of logs (default: 50) |
|
|
| **Request:** |
| ```bash |
| curl http://localhost:8000/api/logs?limit=10 |
| ``` |
|
|
| **Response:** |
| ```json |
| [ |
| { |
| "id": 1, |
| "timestamp": "2025-01-15T10:30:00", |
| "level": "INFO", |
| "message": "API request processed successfully", |
| "provider": "Binance" |
| }, |
| { |
| "id": 2, |
| "timestamp": "2025-01-15T10:29:45", |
| "level": "WARNING", |
| "message": "Rate limit approaching", |
| "provider": "CoinGecko" |
| } |
| ] |
| ``` |
|
|
| --- |
|
|
| ## 🔔 Alerts |
|
|
| ### GET /api/alerts |
| Get active system alerts |
|
|
| **Request:** |
| ```bash |
| curl http://localhost:8000/api/alerts |
| ``` |
|
|
| **Response:** |
| ```json |
| [ |
| { |
| "id": 1, |
| "severity": "warning", |
| "title": "High API Usage", |
| "message": "API usage is at 85% of limit", |
| "timestamp": "2025-01-15T10:30:00" |
| } |
| ] |
| ``` |
|
|
| --- |
|
|
| ## 🤗 Hugging Face Integration |
|
|
| ### GET /api/hf/health |
| Check Hugging Face integration health |
|
|
| **Request:** |
| ```bash |
| curl http://localhost:8000/api/hf/health |
| ``` |
|
|
| **Response:** |
| ```json |
| { |
| "status": "operational", |
| "models_available": 12, |
| "last_sync": "2025-01-15T10:30:00" |
| } |
| ``` |
|
|
| --- |
|
|
| ### POST /api/hf/refresh |
| Refresh Hugging Face data |
|
|
| **Request:** |
| ```bash |
| curl -X POST http://localhost:8000/api/hf/refresh |
| ``` |
|
|
| **Response:** |
| ```json |
| { |
| "status": "success", |
| "message": "Data refresh initiated", |
| "timestamp": "2025-01-15T10:30:00" |
| } |
| ``` |
|
|
| --- |
|
|
| ### GET /api/hf/registry |
| Get Hugging Face model registry |
|
|
| **Request:** |
| ```bash |
| curl http://localhost:8000/api/hf/registry |
| ``` |
|
|
| **Response:** |
| ```json |
| { |
| "models": [ |
| { |
| "name": "sentiment-analysis", |
| "status": "active" |
| }, |
| { |
| "name": "price-prediction", |
| "status": "active" |
| } |
| ] |
| } |
| ``` |
|
|
| --- |
|
|
| ### POST /api/hf/run-sentiment |
| Run sentiment analysis |
|
|
| **Request:** |
| ```bash |
| curl -X POST http://localhost:8000/api/hf/run-sentiment \ |
| -H "Content-Type: application/json" \ |
| -d '{"text": "Bitcoin is going to the moon!"}' |
| ``` |
|
|
| **Response:** |
| ```json |
| { |
| "sentiment": "positive", |
| "score": 0.95, |
| "timestamp": "2025-01-15T10:30:00" |
| } |
| ``` |
|
|
| --- |
|
|
| ## 🔌 WebSocket |
|
|
| ### WS /ws/live |
| Real-time updates via WebSocket |
|
|
| **Connection:** |
| ```javascript |
| const ws = new WebSocket('ws://localhost:8000/ws/live'); |
| |
| ws.onopen = () => { |
| console.log('Connected'); |
| }; |
| |
| ws.onmessage = (event) => { |
| const data = JSON.parse(event.data); |
| console.log('Message:', data); |
| }; |
| ``` |
|
|
| **Message Types:** |
|
|
| #### Connection Established |
| ```json |
| { |
| "type": "connection_established", |
| "timestamp": "2025-01-15T10:30:00" |
| } |
| ``` |
|
|
| #### Status Update |
| ```json |
| { |
| "type": "status_update", |
| "data": { |
| "status": "healthy", |
| "components": [...] |
| }, |
| "timestamp": "2025-01-15T10:30:00" |
| } |
| ``` |
|
|
| #### Provider Status Change |
| ```json |
| { |
| "type": "provider_status_change", |
| "data": { |
| "provider": "Binance", |
| "status": "operational" |
| }, |
| "timestamp": "2025-01-15T10:30:00" |
| } |
| ``` |
|
|
| #### New Alert |
| ```json |
| { |
| "type": "new_alert", |
| "data": { |
| "severity": "info", |
| "title": "System Update", |
| "message": "Cache refreshed successfully" |
| }, |
| "timestamp": "2025-01-15T10:30:00" |
| } |
| ``` |
|
|
| --- |
|
|
| ## 📊 Status Codes |
|
|
| - `200` - Success |
| - `404` - Endpoint not found |
| - `500` - Internal server error |
|
|
| --- |
|
|
| ## 🔄 Update Frequency |
|
|
| - **WebSocket**: Real-time (every 5 seconds) |
| - **Health**: On-demand |
| - **Providers**: On-demand |
| - **Crypto Prices**: On-demand (recommended: every 30s) |
|
|
| --- |
|
|
| ## 💡 Best Practices |
|
|
| 1. **Use WebSocket** for real-time data instead of polling |
| 2. **Cache responses** when appropriate |
| 3. **Respect rate limits** to avoid throttling |
| 4. **Handle errors** gracefully with retry logic |
| 5. **Monitor health** endpoint regularly |
|
|
| --- |
|
|
| ## 🧪 Testing Endpoints |
|
|
| ### Using curl: |
| ```bash |
| # Test health |
| curl http://localhost:8000/health |
| |
| # Test with formatting |
| curl http://localhost:8000/api/providers | python -m json.tool |
| ``` |
|
|
| ### Using Python: |
| ```python |
| import requests |
| |
| # Get health status |
| response = requests.get('http://localhost:8000/health') |
| print(response.json()) |
| |
| # Get crypto prices |
| response = requests.get('http://localhost:8000/api/crypto/prices/top') |
| prices = response.json() |
| for crypto in prices: |
| print(f"{crypto['symbol']}: ${crypto['price']}") |
| ``` |
|
|
| ### Using JavaScript: |
| ```javascript |
| // Fetch crypto prices |
| fetch('http://localhost:8000/api/crypto/prices/top') |
| .then(response => response.json()) |
| .then(data => console.log(data)); |
| |
| // WebSocket connection |
| const ws = new WebSocket('ws://localhost:8000/ws/live'); |
| ws.onmessage = (event) => { |
| console.log('Update:', JSON.parse(event.data)); |
| }; |
| ``` |
|
|
| --- |
|
|
| ## 📞 Support |
|
|
| برای سوالات بیشتر، به `README.md` مراجعه کنید. |
|
|
| For more questions, refer to `README.md`. |
|
|