# API — smart_ide-orchestrator (spécification) Service prévu : routage des intentions vers Ollama, AnythingLLM, micro-services et [ia-dev-gateway](./ia-dev-gateway.md). **Bearer** : `ORCHESTRATOR_TOKEN`. Défaut **`127.0.0.1:37145`**. ## `GET /health` **200** : `{ "status": "ok" }` — sans authentification. ## `POST /v1/route` Résout une intention sans nécessairement l’exécuter (si `dryRun: true`). **Corps JSON** | Champ | Obligatoire | Description | |-------|-------------|-------------| | `intent` | oui | Identifiant stable (`code.complete`, `rag.query`, `agent.run`, `tools.registry`, `tools.pageindex.run`, …) | | `context` | non | Objet libre (fichiers ouverts, sélection, etc.) | | `projectId` | non | Projet `ia_dev` / workspace | | `env` | non | `test` \| `pprod` \| `prod` | | `dryRun` | non | Si `true`, retourne seulement la résolution | **200** : ```json { "resolved": true, "target": "ollama | anythingllm | service | ia_dev", "action": "string", "upstream": { "method": "POST", "url": "relative or absolute", "headersHint": [] } } ``` **200** avec `resolved: false` et `reason` si intention inconnue ou refus policy. **401** : Bearer invalide. ## `POST /v1/execute` Exécute la résolution (ou accepte un corps identique à `/v1/route` avec `dryRun: false`). Peut enchaîner appels HTTP vers les services internes. Les réponses pass-through dépendent de la cible. **422** : paramètres incohérents. ## `GET /v1/timeline` **200** : `{ "items": [ { "at", "type", "summary", "runId"?, "projectId"? } ] }` — agrégat léger pour l’UI (implémentation ultérieure branchée sur logs / DB). **401** si protégé comme les autres routes métier. ## Notes - CORS : à configurer au reverse proxy pour le **front web** uniquement ; pas d’exposition publique sans TLS. - Versionnement : préfixe `/v1/`.