# Local Office API — Feature ## Objectif Exposer sur cette machine une API REST permettant à des applications tierces d’uploader, lister, télécharger, modifier (commandes) et supprimer des fichiers Office (docx, xlsx, pptx). ## Impacts - **Applications tierces** : consomment l’API avec une clé (header `X-API-Key`). - **Stockage** : répertoire local (`STORAGE_PATH`) et métadonnées en SQLite (`DATABASE_PATH`). - **Sécurité** : pas de secret dans le dépôt ; `API_KEYS` en env ou `.env`. Isolation par clé API (chaque document est lié à la clé qui l’a créé). ## Modifications - **Backend** : FastAPI, auth par clé API, rate limiting (slowapi), CORS. - **Routes** : `POST/GET/DELETE /documents`, `GET /documents/:id`, `GET /documents/:id/file`, `POST /documents/:id/commands`. - **Moteur d’édition** : python-docx pour les commandes `replaceText` et `insertParagraph` sur les docx. xlsx/pptx non implémentés (réponse 400). - **Config** : `.env.example` ; variables `API_KEYS`, `STORAGE_PATH`, `DATABASE_PATH`, `MAX_UPLOAD_BYTES`, `RATE_LIMIT_PER_MINUTE`. ## Modalités de déploiement - Sur cette machine : `./run.sh` ou `API_KEYS=... uvicorn app.main:app --host 0.0.0.0 --port 8000`. - En production (ex. infra 4NK) : mettre un reverse proxy (Nginx) devant l’API, TLS, et définir les variables depuis `.secrets//` ou la config d’hébergement. ## Modalités d’analyse - Logs : sortie standard (niveau INFO). - Vérifier que les documents sont bien isolés par clé (tester avec deux clés différentes). - Tester rate limit : dépasser `RATE_LIMIT_PER_MINUTE` requêtes/minute par clé et vérifier 429.