Really-amin's picture
Upload 10 files
706679f verified
# 📡 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`.