{
  "tool": "filigrane",
  "name": "Le Filigrane visible",
  "apiVersion": "1",
  "description": "Appose un filigrane visible (texte, ©, « CONFIDENTIEL »…) incrusté dans les pixels d'une image ou d'un PDF. Le filigrane est physiquement ré-encodé dans une copie. 100% local, rien n'est envoyé.",
  "url": "https://sui-juris.fr/p2p-tools/filigrane/",
  "ops": {
    "filigraner": {
      "summary": "Ajoute un filigrane visible à une image (PNG en sortie) ou un PDF (PDF en sortie).",
      "args": {
        "fileBytes": { "type": "base64", "required": true, "description": "Fichier source (image ou PDF) encodé en base64." },
        "filename": { "type": "string", "required": false, "description": "Nom du fichier source (détection PDF et nom de sortie)." },
        "mime": { "type": "string", "required": false, "description": "Type MIME du fichier source (aide à détecter un PDF)." },
        "text": { "type": "string", "required": false, "description": "Texte du filigrane (défaut : CONFIDENTIEL)." },
        "opacity": { "type": "number", "required": false, "description": "Opacité de 0.05 à 1 (défaut 0.3)." },
        "size": { "type": "number", "required": false, "description": "Taille de la police en px (défaut 54)." },
        "angle": { "type": "number", "required": false, "description": "Angle en degrés de -90 à 90 (défaut -45)." },
        "color": { "type": "string", "required": false, "description": "Couleur hexadécimale (défaut #dc2626)." },
        "layout": { "type": "string", "required": false, "description": "'mosaic' (répété en diagonale, défaut) ou 'single'." },
        "position": { "type": "string", "required": false, "description": "Pour layout 'single' : center | top-left | top-right | bottom-left | bottom-right." }
      },
      "returns": { "bytes": "Fichier filigrané encodé en base64", "mime": "image/png ou application/pdf", "filename": "nom du fichier de sortie" }
    }
  }
}
