{
  "tool": "editeur-image",
  "name": "L'Éditeur d'image",
  "apiVersion": "1",
  "description": "Applique à une image des transformations non-interactives (rotation, miroir, luminosité/contraste/saturation) puis ré-encode en PNG/JPEG/WebP. Le recadrage et le flou de zone restent interactifs et ne sont pas exposés. 100 % dans le navigateur.",
  "url": "https://sui-juris.fr/p2p-tools/editeur-image/",
  "ops": {
    "transform": {
      "summary": "Pivote / retourne / ajuste une image et la ré-encode.",
      "args": {
        "fileBytes":  { "type": "base64", "required": true, "description": "L'image source encodée en base64." },
        "filename":   { "type": "string", "required": false, "description": "Nom du fichier source (défaut image)." },
        "rotate":     { "type": "number", "required": false, "default": 0, "description": "Rotation horaire en degrés (multiple de 90 : 0/90/180/270)." },
        "flipH":      { "type": "boolean", "required": false, "default": false, "description": "Miroir horizontal." },
        "flipV":      { "type": "boolean", "required": false, "default": false, "description": "Miroir vertical." },
        "brightness": { "type": "number", "required": false, "default": 100, "description": "Luminosité en % (100 = inchangé)." },
        "contrast":   { "type": "number", "required": false, "default": 100, "description": "Contraste en % (100 = inchangé)." },
        "saturation": { "type": "number", "required": false, "default": 100, "description": "Saturation en % (100 = inchangé)." },
        "format":     { "type": "string", "required": false, "default": "image/png", "enum": ["image/png", "image/jpeg", "image/webp"], "description": "Format de sortie." },
        "quality":    { "type": "number", "required": false, "default": 90, "description": "Qualité 1–100 (ignorée pour PNG)." }
      },
      "returns": { "bytes": "base64 de l'image transformée", "mime": "type MIME de sortie", "filename": "nom suggéré", "width": "largeur px", "height": "hauteur px" }
    }
  }
}
