smart_ide/docs/API/local-office.md
Nicolas Cantu 088eab84b7 Platform docs, services, ia_dev submodule, smart_ide project config
- Add ia_dev submodule (projects/smart_ide on forge 4nk)
- Document APIs, orchestrator, gateway, local-office, rollout
- Add systemd/scripts layout; relocate setup scripts
- Remove obsolete nginx/enso-only docs from this repo scope
2026-04-03 16:07:58 +02:00

3.5 KiB
Raw Blame History

API — local-office

Service FastAPI : gestion de fichiers Office (upload, liste, métadonnées, téléchargement, commandes sur docx, suppression). Auth par clé API, pas Bearer.

Authentification

Toutes les routes documentées ici exigent :

X-API-Key: <une des clés listées dans API_KEYS>

Les clés sont définies côté serveur (variable API_KEYS, liste séparée par virgules). Chaque document est associé à la clé qui la créé ; accès aux ressources dun autre propriétaire renvoie 404.

Rate limiting : requêtes limitées par clé (slowapi, voir RATE_LIMIT_PER_MINUTE).

Préfixe des routes

Le routeur est monté sous /documents (pas de préfixe /api).

Endpoints

POST /documents

Upload multipart dun fichier Office.

  • En-têtes : X-API-Key ; pour la partie fichier, Content-Type doit être lun des types autorisés :
    • application/vnd.openxmlformats-officedocument.wordprocessingml.document (docx)
    • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (xlsx)
    • application/vnd.openxmlformats-officedocument.presentationml.presentation (pptx)

Réponse 201

{
  "document_id": "string",
  "name": "string",
  "mime_type": "string",
  "size": number
}

Erreurs : 400 type non supporté ; 413 fichier trop volumineux (MAX_UPLOAD_BYTES).

GET /documents

Liste les documents de la clé.

Réponse 200 : tableau dobjets métadonnées (structure définie par le stockage SQLite — champs typiques : id, nom, mime, taille, dates).

GET /documents/{document_id}

Métadonnées dun document (propriétaire = clé courante).

Erreurs : 404 si absent ou non propriétaire.

GET /documents/{document_id}/file

Téléchargement du fichier binaire ; Content-Type et nom de fichier alignés sur les métadonnées.

POST /documents/{document_id}/commands

Applique une liste de commandes au contenu. Implémenté pour docx uniquement ; xlsx/pptx renvoient 400 (« not implemented yet »).

Corps JSON

{
  "commands": [
    {
      "type": "replaceText",
      "search": "texte à chercher",
      "replace": "remplacement"
    },
    {
      "type": "insertParagraph",
      "text": "nouveau paragraphe",
      "position": "end"
    }
  ]
}
type Champs Description
replaceText search (non vide), replace Première occurrence remplacée dans paragraphes / tableaux
insertParagraph text, position optionnel end (défaut) ou start Insère un paragraphe

Réponse 200 : { "document_id", "size" } (taille après écriture).

Erreurs : 400 commande ou MIME invalide ; 404 document absent ou autre clé.

DELETE /documents/{document_id}

Supprime métadonnées et fichier.

Réponse 204 sans corps.

Erreurs : 404 si absent ou non propriétaire.

Variables denvironnement (rappel)

Variable Rôle
API_KEYS Liste de clés autorisées (obligatoire en production)
STORAGE_PATH Fichiers sur disque
DATABASE_PATH SQLite métadonnées
MAX_UPLOAD_BYTES Taille max upload
RATE_LIMIT_PER_MINUTE Plafond requêtes / minute / clé

Voir services/local-office/.env.example.