Menu de la documentation

Véhicules (vitrine)

Ces endpoints acceptent la clé d'API ou le ?garageSlug=public du garage. Seuls les véhicules publiés sont exposés ; les champs internes (prix d'achat, VIN, plaque, notes) ne sont jamais renvoyés.

Lister les véhicules

GET/api/public/fleet
ParamètreEffet
typesale (vente) ou rental (location)
brandFiltre par marque
searchMarque, modèle ou titre
minPrice / maxPriceFourchette (prix de vente ou tarif/jour)
Requête
curl "https://app.mooteck.com/api/public/fleet?type=sale&brand=Yamaha" \
  -H "x-api-key: <VOTRE_CLE_API>"
Réponse 200
{
  "data": [
    {
      "id": "clx...", "slug": "yamaha-mt-07-2021", "fleetType": "SALE",
      "brand": "Yamaha", "model": "MT-07", "year": 2021,
      "fuelType": "Essence", "color": "Bleu", "mileage": 12000,
      "sellingPrice": 6900, "dailyRate": null, "weeklyRate": null,
      "monthlyRate": null, "deposit": null, "status": "AVAILABLE",
      "photos": ["https://..."], "publicTitle": "Yamaha MT-07",
      "publicDescription": "Très bon état..."
    }
  ]
}

Détail d'un véhicule

GET/api/public/fleet/{slug}

Renvoie { "data": { ...véhicule } }. Pour un véhicule en location, un champ availability liste les périodes déjà réservées ([{ "start", "end" }], ISO 8601).404 si le slug est inconnu.

Créer une demande (lead)

POST/api/public/fleet/lead

Enregistre une demande de contact (achat ou location) et notifie le garage par email. email ou téléphone est requis. Inclure un champwebsite (honeypot) : s'il est rempli, la requête est ignorée silencieusement.

Limite de débit

5 requêtes / minute / IP. Au-delà : 429. Pour une location avec dates, une période indisponible renvoie 409.
Requête
curl -X POST https://app.mooteck.com/api/public/fleet/lead \
  -H "Content-Type: application/json" \
  -d '{
    "garageSlug": "garage-dupont",
    "vehicleSlug": "yamaha-mt-07-2021",
    "name": "Marie",
    "email": "marie@example.be",
    "message": "Intéressée par ce modèle",
    "startDate": "2026-08-01",
    "endDate": "2026-08-05"
  }'
Réponse 201
{ "ok": true }