DocsAPI REST

API REST

Documentation complète de l'API Flask exposant les fonctionnalités de la pipeline THOR.

Configuration

Base URLhttp://localhost:8000
Content-Typeapplication/json

Endpoints

GET/api/health

Vérifie l'état de l'API et des modèles chargés.

Réponse

200 OK
{
  "status": "ok",
  "models": {
    "stt": "whisper",
    "nlp": "spacy",
    "pathfinding": "dijkstra"
  },
  "stations_count": 3247,
  "connections_count": 5842
}
POST/api/pipeline

Pipeline complète : Audio → STT → NLP → Pathfinding. Traite un fichier audio et retourne l'itinéraire.

Corps de la requête

Request Body
{
  "audio": "base64_encoded_audio_data",
  "format": "wav"
}

Paramètres

audiostring (base64) — requis
formatstring (wav, mp3, webm) — requis

Réponse

200 OK
{
  "transcript": "Je veux aller de Paris à Lyon",
  "origin": "Paris",
  "destination": "Lyon",
  "is_valid": true,
  "confidence": 0.85,
  "route": {
    "steps": ["Paris Gare de Lyon", "Lyon Part Dieu"],
    "total_time": 117,
    "total_distance": 390.79,
    "metadata": { ... }
  }
}
POST/api/search

Analyse un texte en langage naturel et trouve l'itinéraire correspondant.

Corps de la requête

Request Body
{
  "text": "Je voudrais aller de Bordeaux à Marseille"
}

Exemple curl

Terminal
curl -X POST http://localhost:8000/api/search \
  -H "Content-Type: application/json" \
  -d '{"text": "Je veux aller de Paris à Lyon"}'
POST/api/route

Trouve un itinéraire entre deux villes spécifiées directement.

Corps de la requête

Request Body
{
  "origin": "Paris",
  "destination": "Lyon"
}

Réponse

200 OK
{
  "success": true,
  "route": {
    "origin": "Paris",
    "destination": "Lyon",
    "steps": ["Paris Gare de Lyon", "Lyon Part Dieu"],
    "total_time": 117,
    "total_distance": 390.79,
    "metadata": {
      "origin_uic": "87686006",
      "destination_uic": "87723197",
      "segments": [
        {
          "from": "Paris Gare de Lyon",
          "to": "Lyon Part Dieu",
          "temps_min": 117,
          "distance_km": 390.79,
          "type_train": "TGV",
          "geometry": { "type": "LineString", "coordinates": [...] }
        }
      ]
    }
  }
}
GET/api/stations

Liste toutes les gares disponibles avec leurs informations.

Paramètres de requête

searchstring — optionnel (filtre par nom)
limitint — optionnel (défaut: 100)

Exemple

Terminal
curl "http://localhost:8000/api/stations?search=paris&limit=10"

Gestion des erreurs

400 Bad Request

Paramètres manquants ou invalides

404 Not Found

Gare ou itinéraire non trouvé

500 Internal Server Error

Erreur interne du serveur

Format d'erreur
{
  "error": "Message d'erreur descriptif",
  "code": "ERROR_CODE",
  "details": { ... }
}

Conseils d'utilisation

  • Utilisez l'option --preload au lancement pour précharger les modèles
  • Pour l'audio, préférez le format WAV 16kHz mono pour de meilleurs résultats
  • L'endpoint /api/search est idéal pour les interfaces utilisateur avec saisie libre
  • Les géométries des segments permettent d'afficher le tracé réel des voies sur une carte