- Blueprint Flask api_v1 avec prefix /api/v1/
- GET /api/v1/health — healthcheck public
- GET /api/v1/courses/today — courses du jour (paginé, filtré)
- GET /api/v1/courses/{id}/predictions — prédictions ML pour une course
- GET /api/v1/predictions/top3 — top 3 global (free tier)
- GET /api/v1/predictions/all — toutes prédictions (premium+)
- GET /api/v1/valuebets — value bets du jour (premium+)
- GET /api/v1/backtest — résultats backtest historiques (pro)
- GET /api/v1/export/csv — export CSV prédictions/paris (pro)
- GET /api/v1/metrics — métriques perf ML (premium+)
- Swagger/OpenAPI via flasgger à /api/v1/docs
- Erreurs uniformes {status, message, code}
- Pagination limit/offset sur toutes les listes
- 42 tests d'intégration passants
Co-Authored-By: Paperclip <noreply@paperclip.ing>
45 lines
1021 B
Python
45 lines
1021 B
Python
#!/usr/bin/env python3
|
|
"""
|
|
GET /api/v1/health — public healthcheck endpoint.
|
|
No authentication required.
|
|
"""
|
|
|
|
from flask import Blueprint, jsonify
|
|
from datetime import datetime, timezone
|
|
|
|
health_bp = Blueprint("v1_health", __name__, url_prefix="/api/v1")
|
|
|
|
|
|
@health_bp.route("/health", methods=["GET"])
|
|
def health():
|
|
"""
|
|
Health check
|
|
---
|
|
tags:
|
|
- System
|
|
summary: Public healthcheck — returns API status and timestamp
|
|
responses:
|
|
200:
|
|
description: API is healthy
|
|
schema:
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: string
|
|
example: ok
|
|
version:
|
|
type: string
|
|
example: "1.0"
|
|
timestamp:
|
|
type: string
|
|
format: date-time
|
|
"""
|
|
return jsonify(
|
|
{
|
|
"status": "ok",
|
|
"version": "1.0",
|
|
"api": "Turf SaaS API v1",
|
|
"timestamp": datetime.now(timezone.utc).isoformat(),
|
|
}
|
|
), 200
|