# Format des données

L'endpoint POST /api/v1/send/:code accepte deux formats de corps. Dans les deux cas, les headers d'authentification sont obligatoires.

# JSON

POST /api/v1/send/contact_acme_corp
Content-Type: application/json
X-KEY-PUNA: gk_prod_7f3a2b9c
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

{
  "nom": "Alice Martin",
  "email": "alice@example.com",
  "message": "Bonjour, je souhaite obtenir un devis."
}

Toutes les clés de premier niveau sont acceptées. Les valeurs sont sanitisées contre le XSS avant stockage.

# Multipart / Form-data

POST /api/v1/send/contact_acme_corp
Content-Type: multipart/form-data
X-KEY-PUNA: gk_prod_7f3a2b9c
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

nom=Alice Martin
email=alice@example.com
fichier=<binary>

# Fichiers joints

  • Stockés dans storage/uploads/ et référencés dans la soumission.
  • 12 types MIME acceptés par défaut : images (JPEG, PNG, GIF, WebP), PDF, archives (ZIP, RAR, 7z), documents Office (DOCX, XLSX, PPTX) et texte plat.
  • Chaque fichier est validé par extension et par magic bytes.
  • Les archives sont inspectées (protection contre les ZIP bombs, macros VBA, exécutables intégrés, path traversal).
  • Si ClamAV est activé, chaque fichier est scanné avant stockage - un fichier infecté est rejeté avec une réponse 400.

Pour des exemples complets dans votre langage, voir :