Spaces:
Runtime error
Runtime error
| { | |
| "openapi": "3.0.3", | |
| "info": { | |
| "title": "Football Prediction API", | |
| "description": "Complete football prediction system with ML ensemble, advanced features, live odds, and more.", | |
| "version": "2.0.0", | |
| "contact": { | |
| "name": "API Support" | |
| } | |
| }, | |
| "servers": [ | |
| {"url": "http://localhost:5000", "description": "Local development"}, | |
| {"url": "https://your-app.koyeb.app", "description": "Production"} | |
| ], | |
| "tags": [ | |
| {"name": "Predictions", "description": "Match predictions"}, | |
| {"name": "Live", "description": "Live data and odds"}, | |
| {"name": "ML", "description": "Machine Learning models"}, | |
| {"name": "Training", "description": "Model training and tuning"}, | |
| {"name": "Analytics", "description": "Accuracy and analytics"} | |
| ], | |
| "paths": { | |
| "/api/v2/predict": { | |
| "get": { | |
| "tags": ["Predictions"], | |
| "summary": "Enhanced prediction with all features", | |
| "parameters": [ | |
| {"name": "home", "in": "query", "required": true, "schema": {"type": "string"}, "example": "Germany"}, | |
| {"name": "away", "in": "query", "required": true, "schema": {"type": "string"}, "example": "France"} | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "Prediction result", | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "type": "object", | |
| "properties": { | |
| "success": {"type": "boolean"}, | |
| "final_prediction": { | |
| "type": "object", | |
| "properties": { | |
| "home_win_prob": {"type": "number"}, | |
| "draw_prob": {"type": "number"}, | |
| "away_win_prob": {"type": "number"}, | |
| "predicted_outcome": {"type": "string"}, | |
| "confidence": {"type": "number"} | |
| } | |
| }, | |
| "goals": { | |
| "type": "object", | |
| "properties": { | |
| "home_xg": {"type": "number"}, | |
| "away_xg": {"type": "number"}, | |
| "over_2.5": {"type": "number"}, | |
| "btts": {"type": "number"} | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/form/{team}": { | |
| "get": { | |
| "tags": ["Predictions"], | |
| "summary": "Get team's recent form", | |
| "parameters": [ | |
| {"name": "team", "in": "path", "required": true, "schema": {"type": "string"}} | |
| ], | |
| "responses": { | |
| "200": {"description": "Team form data"} | |
| } | |
| } | |
| }, | |
| "/api/h2h": { | |
| "get": { | |
| "tags": ["Predictions"], | |
| "summary": "Head-to-head statistics", | |
| "parameters": [ | |
| {"name": "team1", "in": "query", "required": true, "schema": {"type": "string"}}, | |
| {"name": "team2", "in": "query", "required": true, "schema": {"type": "string"}} | |
| ], | |
| "responses": { | |
| "200": {"description": "H2H stats"} | |
| } | |
| } | |
| }, | |
| "/api/live-odds": { | |
| "get": { | |
| "tags": ["Live"], | |
| "summary": "Get live odds from multiple bookmakers", | |
| "parameters": [ | |
| {"name": "sport", "in": "query", "schema": {"type": "string", "default": "soccer_epl"}} | |
| ], | |
| "responses": { | |
| "200": {"description": "Odds comparison data"} | |
| } | |
| } | |
| }, | |
| "/api/live-scores": { | |
| "get": { | |
| "tags": ["Live"], | |
| "summary": "Get live match scores", | |
| "responses": { | |
| "200": {"description": "Live matches"} | |
| } | |
| } | |
| }, | |
| "/api/training/start": { | |
| "post": { | |
| "tags": ["Training"], | |
| "summary": "Start model retraining", | |
| "requestBody": { | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "type": "object", | |
| "properties": { | |
| "async": {"type": "boolean", "default": true}, | |
| "params": {"type": "object"} | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "responses": { | |
| "200": {"description": "Training started"} | |
| } | |
| } | |
| }, | |
| "/api/training/status": { | |
| "get": { | |
| "tags": ["Training"], | |
| "summary": "Get training status", | |
| "responses": { | |
| "200": {"description": "Training status"} | |
| } | |
| } | |
| }, | |
| "/api/tuning/set": { | |
| "post": { | |
| "tags": ["Training"], | |
| "summary": "Set hyperparameters", | |
| "requestBody": { | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "type": "object", | |
| "properties": { | |
| "model": {"type": "string", "enum": ["xgb", "lgb", "cat", "nn"]}, | |
| "params": {"type": "object"} | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "responses": { | |
| "200": {"description": "Hyperparameters updated"} | |
| } | |
| } | |
| }, | |
| "/api/accuracy/stats": { | |
| "get": { | |
| "tags": ["Analytics"], | |
| "summary": "Get accuracy statistics", | |
| "parameters": [ | |
| {"name": "period", "in": "query", "schema": {"type": "string", "enum": ["today", "week", "month", "all"]}} | |
| ], | |
| "responses": { | |
| "200": {"description": "Accuracy stats"} | |
| } | |
| } | |
| }, | |
| "/api/backtest/run": { | |
| "post": { | |
| "tags": ["Analytics"], | |
| "summary": "Run historical backtest", | |
| "requestBody": { | |
| "content": { | |
| "application/json": { | |
| "schema": { | |
| "type": "object", | |
| "properties": { | |
| "start_year": {"type": "integer", "default": 2020}, | |
| "end_year": {"type": "integer", "default": 2024} | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "responses": { | |
| "200": {"description": "Backtest results"} | |
| } | |
| } | |
| } | |
| } | |
| } | |