Aller au contenu

API Contact

Endpoint

POST /api/v1/contact

Envoie un message via le formulaire de contact. Un email est envoyé à l'administrateur.

Authentification : Non requise (endpoint public)

Rate limiting : throttle:5,1 — 5 requêtes par minute par IP

Requête

{
    "name": "Jean Dupont",
    "email": "jean@example.com",
    "subject": "Partenariat club",
    "message": "Bonjour, je souhaiterais discuter d'un partenariat avec votre plateforme."
}
Champ Type Obligatoire Contraintes
name string Oui max: 255
email string Oui format email, max: 255
subject string Oui max: 255
message string Oui min: 10, max: 5000

Réponse succès (200)

{
    "message": "Message envoyé avec succès."
}

Réponse erreur de validation (422)

{
    "message": "The given data was invalid.",
    "errors": {
        "name": ["The name field is required."],
        "email": ["The email must be a valid email address."],
        "message": ["The message must be at least 10 characters."]
    }
}

Réponse trop de requêtes (429)

Retourné si le rate limiter est déclenché (plus de 5 requêtes en 1 minute).

Architecture

Backend

  • Controller : App\Http\Controllers\Api\V1\ContactController
  • Request : App\Http\Requests\Contact\ContactRequest
  • Mailable : App\Mail\ContactFormMail
  • Template : resources/views/emails/contact.blade.php
  • Route : routes/api.phpPOST /v1/contact avec middleware throttle:5,1

Frontend

  • Page : src/pages/ContactPage.tsx
  • Validation : Schema Zod (validation côté client identique au backend)
  • Appel API : apiClient.post('/v1/contact', data)

Configuration

L'email de destination est configuré par :

  1. config('mail.contact_address') — variable d'environnement MAIL_CONTACT_ADDRESS
  2. Fallback : config('mail.from.address') — variable d'environnement MAIL_FROM_ADDRESS