{ "info": { "_postman_id": "capl-routeur-ia-api", "name": "CAPL Routeur IA API", "description": "Collection complète pour l'API Routeur IA avec LangGraph\n\n## Configuration\n1. Créer un environnement Postman avec:\n - `base_url`: http://localhost:7860\n - `token`: (sera rempli automatiquement après /auth/token)\n\n## Workflow\n1. Exécuter POST /auth/token pour obtenir un JWT\n2. Le token sera automatiquement sauvegardé\n3. Tous les autres endpoints l'utiliseront automatiquement", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "item": [ { "name": "Authentication", "item": [ { "name": "Get JWT Token", "event": [ { "listen": "test", "script": { "exec": [ "// Sauvegarder le token automatiquement", "if (pm.response.code === 200) {", " const jsonData = pm.response.json();", " pm.environment.set(\"token\", jsonData.access_token);", " console.log(\"Token saved:\", jsonData.access_token);", "}" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{}" }, "url": { "raw": "{{base_url}}/auth/token", "host": [ "{{base_url}}" ], "path": [ "auth", "token" ] }, "description": "Obtenir un token JWT pour authentification.\nLe token est automatiquement sauvegardé dans l'environnement." }, "response": [] }, { "name": "Verify Token", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{base_url}}/auth/verify", "host": [ "{{base_url}}" ], "path": [ "auth", "verify" ] }, "description": "Vérifier si le token JWT est valide." }, "response": [] } ], "description": "Endpoints d'authentification JWT" }, { "name": "Info & Health", "item": [ { "name": "Root - API Info", "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/", "host": [ "{{base_url}}" ], "path": [ "" ] }, "description": "Informations générales sur l'API (route publique)." }, "response": [] }, { "name": "Health Check", "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/health", "host": [ "{{base_url}}" ], "path": [ "health" ] }, "description": "Vérifier l'état de santé de l'API (route publique)." }, "response": [] } ], "description": "Routes publiques d'information" }, { "name": "Models & Agents", "item": [ { "name": "List Available Models", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{base_url}}/models", "host": [ "{{base_url}}" ], "path": [ "models" ] }, "description": "Liste tous les modèles LLM disponibles (OpenAI et Mistral AI)." }, "response": [] }, { "name": "List Available Agents", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{base_url}}/agents", "host": [ "{{base_url}}" ], "path": [ "agents" ] }, "description": "Liste tous les types d'agents disponibles." }, "response": [] } ], "description": "Endpoints pour lister les modèles et agents" }, { "name": "Completion", "item": [ { "name": "Completion Simple (GPT-4o)", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"message\": \"Bonjour, comment vas-tu?\",\n \"model\": \"mistral-large-latest\",\n \"agent\": \"V2\",\n \"stream\": false,\n \"temperature\": 0.7\n}" }, "url": { "raw": "{{base_url}}/completion", "host": [ "{{base_url}}" ], "path": [ "completion" ] }, "description": "Completion simple avec GPT-4o (mode non-streaming)." }, "response": [] }, { "name": "Completion Simple (Mistral Large)", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"message\": \"Explique-moi la théorie de la relativité en 2 phrases\",\n \"model\": \"mistral-large-latest\",\n \"agent\": \"V2\",\n \"stream\": false,\n \"temperature\": 0.7\n}" }, "url": { "raw": "{{base_url}}/completion", "host": [ "{{base_url}}" ], "path": [ "completion" ] }, "description": "Completion simple avec Mistral Large (mode non-streaming)." }, "response": [] }, { "name": "Completion Streaming (GPT-3.5)", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"message\": \"Raconte-moi une courte histoire\",\n \"model\": \"mistral-large-latest\",\n \"agent\": \"V2\",\n \"stream\": true,\n \"temperature\": 0.9\n}" }, "url": { "raw": "{{base_url}}/completion", "host": [ "{{base_url}}" ], "path": [ "completion" ] }, "description": "Completion avec streaming (Server-Sent Events).\nNote: Postman peut avoir des limites avec les SSE, testez avec curl pour un meilleur résultat." }, "response": [] }, { "name": "Completion avec Historique", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"message\": \"Et en Python?\",\n \"model\": \"mistral-large-latest\",\n \"stream\": false,\n \"conversation_history\": [\n {\n \"role\": \"user\",\n \"content\": \"Comment faire une boucle en JavaScript?\"\n },\n {\n \"role\": \"assistant\",\n \"content\": \"En JavaScript, vous pouvez utiliser: for (let i = 0; i < 10; i++) { console.log(i); }\"\n }\n ]\n}" }, "url": { "raw": "{{base_url}}/completion", "host": [ "{{base_url}}" ], "path": [ "completion" ] }, "description": "Completion avec historique de conversation pour maintenir le contexte." }, "response": [] }, { "name": "Completion avec Paramètres Avancés", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"message\": \"Écris un poème court sur l'IA\",\n \"model\": \"mistral-large-latest\",\n \"agent\": \"V2\",\n \"stream\": false,\n \"temperature\": 1.2,\n \"max_tokens\": 150\n}" }, "url": { "raw": "{{base_url}}/completion", "host": [ "{{base_url}}" ], "path": [ "completion" ] }, "description": "Completion avec température élevée et limitation de tokens." }, "response": [] } ], "description": "Endpoints de completion texte (simple et streaming)" }, { "name": "Transcription", "item": [ { "name": "Transcribe Audio File", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [], "body": { "mode": "formdata", "formdata": [ { "key": "file", "description": "Fichier audio (mp3, wav, m4a, etc.)", "type": "file", "src": [] } ] }, "url": { "raw": "{{base_url}}/transcription", "host": [ "{{base_url}}" ], "path": [ "transcription" ] }, "description": "Transcription audio vers texte avec OpenAI Whisper.\nSupporte: mp3, mp4, mpeg, mpga, m4a, wav, webm\nMax: 25 MB" }, "response": [] }, { "name": "Transcribe with Language", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [], "body": { "mode": "formdata", "formdata": [ { "key": "file", "description": "Fichier audio", "type": "file", "src": [] } ] }, "url": { "raw": "{{base_url}}/transcription?language=fr", "host": [ "{{base_url}}" ], "path": [ "transcription" ], "query": [ { "key": "language", "value": "fr", "description": "Code langue ISO-639-1 (fr, en, es, etc.)" } ] }, "description": "Transcription avec langue spécifiée pour améliorer la précision." }, "response": [] }, { "name": "Get Supported Formats", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{base_url}}/transcription/supported-formats", "host": [ "{{base_url}}" ], "path": [ "transcription", "supported-formats" ] }, "description": "Liste des formats audio supportés et limitations." }, "response": [] } ], "description": "Endpoints de transcription audio (STT)" }, { "name": "Real-time", "item": [ { "name": "Get Active Connections", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "GET", "header": [], "url": { "raw": "{{base_url}}/realtime/connections", "host": [ "{{base_url}}" ], "path": [ "realtime", "connections" ] }, "description": "Nombre de connexions WebSocket actives." }, "response": [] }, { "name": "Broadcast Message", "request": { "auth": { "type": "bearer", "bearer": [ { "key": "token", "value": "{{token}}", "type": "string" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"text\": \"Message de broadcast à tous les clients\",\n \"priority\": \"normal\"\n}" }, "url": { "raw": "{{base_url}}/realtime/broadcast", "host": [ "{{base_url}}" ], "path": [ "realtime", "broadcast" ] }, "description": "Envoyer un message à toutes les connexions WebSocket actives." }, "response": [] } ], "description": "Endpoints temps réel (WebSocket)\nNote: WebSocket /realtime/ws doit être testé avec un client WebSocket" } ], "event": [ { "listen": "prerequest", "script": { "type": "text/javascript", "exec": [ "// Script global pre-request", "// Vérifier si le token existe", "if (!pm.environment.get(\"token\")) {", " console.log(\"⚠️ Token manquant. Exécutez d'abord POST /auth/token\");", "}" ] } } ], "variable": [ { "key": "base_url", "value": "http://localhost:7860", "type": "string" } ] }