| { |
| "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" |
| } |
| ] |
| } |
|
|
|
|