# đŸ€– Guide d'IntĂ©gration pour Agent IA - TodoFlow API Ce guide explique comment un **Agent d'Intelligence Artificielle** (comme un assistant autonome, un agent de codage ou un script LLM) peut se connecter, comprendre et piloter la Todo List centralisĂ©e de l'utilisateur. --- ## 🔑 1. Authentification & SĂ©curitĂ© Pour toutes les requĂȘtes HTTP, l'Agent IA doit s'authentifier en fournissant la clĂ© API configurĂ©e dans l'en-tĂȘte `X-API-Key`. ### En-tĂȘte HTTP Requis : ```http X-API-Key: ai-agent-token-secure-101 ``` *Note : La clĂ© par dĂ©faut pour l'agent IA dans la configuration de production est `ai-agent-token-secure-101`, mais elle peut ĂȘtre personnalisĂ©e via la variable d'environnement `API_KEYS_RAW` du conteneur Docker.* --- ## 📐 2. DĂ©couverte Automatique (OpenAPI / Swagger) L'API TodoFlow a Ă©tĂ© conçue avec **FastAPI**, ce qui signifie qu'elle gĂ©nĂšre dynamiquement une spĂ©cification OpenAPI standard au format JSON. ### Endpoints de DĂ©couverte : * **SchĂ©ma OpenAPI JSON :** `http://:8000/openapi.json` *(IdĂ©al pour qu'un LLM lise et comprenne la structure des donnĂ©es et des routes de maniĂšre autonome)* * **Documentation Swagger Interactive :** `http://:8000/docs` --- ## 📋 3. SpĂ©cifications des OpĂ©rations (CRUD) ### A. RĂ©cupĂ©rer toutes les tĂąches (GET `/api/v1/tasks`) Permet Ă  l'Agent IA de lire la liste de tĂąches actuelle. Il peut filtrer les tĂąches par statut. * **Query Parameters (Optionnel) :** * `status` : Peut ĂȘtre `"A faire"`, `"En cours"` ou `"Termine"`. * **RĂ©ponse (200 OK) :** Une liste d'objets au format suivant : ```json [ { "id": "e1a77ff0-2c32-4f37-baef-e68b903f806e", "title": "Acheter du pain", "description": null, "status": "A faire", "created_at": "2026-05-26T14:15:30Z", "updated_at": "2026-05-26T14:15:30Z" } ] ``` ### B. CrĂ©er une nouvelle tĂąche (POST `/api/v1/tasks`) Permet Ă  l'Agent IA d'ajouter un nouvel objectif pour l'utilisateur. * **Request Body (JSON) :** ```json { "title": "PrĂ©parer la rĂ©union de projet", "description": "RĂ©diger l'ordre du jour et prĂ©parer les diapositives", "status": "A faire" } ``` * **RĂ©ponse (201 Created) :** Renvoie l'objet créé avec son UUID unique gĂ©nĂ©rĂ© par le serveur et son horodatage de crĂ©ation (`created_at`). ### C. Mettre Ă  jour une tĂąche (PUT `/api/v1/tasks/{id}`) Permet Ă  l'Agent IA de marquer une tĂąche comme **"En cours"** ou **"Termine"**, ou d'en modifier le titre/description. * **Request Body (JSON - Mise Ă  jour partielle acceptĂ©e) :** ```json { "status": "En cours" } ``` * **RĂ©ponse (200 OK) :** Renvoie l'objet mis Ă  jour avec son nouvel horodatage `updated_at`. ### D. Supprimer une tĂąche (DELETE `/api/v1/tasks/{id}`) Permet Ă  l'Agent IA de nettoyer la liste en supprimant une tĂąche. * **RĂ©ponse (204 No Content) :** SuccĂšs de la suppression (aucun corps de rĂ©ponse). --- ## 🐍 4. Exemple d'implĂ©mentation en Python pour l'Agent IA Voici un script simple montrant comment un Agent IA peut interagir avec l'API en utilisant la bibliothĂšque `requests` : ```python import requests API_URL = "http://localhost:8000/api/v1" API_KEY = "ai-agent-token-secure-101" headers = { "X-API-Key": API_KEY, "Content-Type": "application/json" } # 1. Lire toutes les tĂąches actives response = requests.get(f"{API_URL}/tasks", headers=headers) if response.status_code == 200: tasks = response.json() print(f"L'utilisateur a {len(tasks)} tĂąches au total.") # 2. CrĂ©er une nouvelle tĂąche pour l'utilisateur new_task = { "title": "Analyser les performances de la stack", "description": "TĂąche gĂ©nĂ©rĂ©e automatiquement par l'Agent IA", "status": "A faire" } create_resp = requests.post(f"{API_URL}/tasks", json=new_task, headers=headers) if create_resp.status_code == 201: created_task = create_resp.json() task_id = created_task["id"] print(f"TĂąche créée par l'IA avec succĂšs ! ID: {task_id}") # 3. Passer cette tĂąche "En cours" update_resp = requests.put( f"{API_URL}/tasks/{task_id}", json={"status": "En cours"}, headers=headers ) if update_resp.status_code == 200: print("La tĂąche a Ă©tĂ© marquĂ©e 'En cours' par l'IA.") ``` --- ## 💡 Conseils pour le Prompt System de l'Agent IA Si vous intĂ©grez cette API Ă  un LLM (comme GPT-4 ou Gemini), vous pouvez ajouter cette consigne dans son **System Prompt** : > *"Tu es un Agent IA assistant personnel. Tu as accĂšs Ă  l'API de gestion des tĂąches de l'utilisateur. Pour piloter sa liste, tu dois faire des appels REST sur l'API en utilisant l'en-tĂȘte `X-API-Key: ai-agent-token-secure-101`. DĂ©couvre les spĂ©cifications exactes de l'API en interrogeant `/openapi.json`. Assure-toi de respecter les statuts valides : 'A faire', 'En cours', 'Termine'."*