Erreurs & limites
Les erreurs renvoient un objet JSON avec un champ error lisible. Certaines erreurs de base de données ajoutent un champ code(DUPLICATE, NOT_FOUND,INVALID_REFERENCE).
Erreur — exemple
{
"error": "Créneau complet"
}Codes HTTP
| Code | Signification |
|---|---|
| 200 / 201 | Succès. Le corps varie selon l'endpoint. |
| 400 | Requête invalide (champ manquant, date/quantité incorrecte, payload malformé). |
| 401 | Clé d'API manquante ou invalide, ou bascule de synchronisation désactivée. |
| 404 | Ressource introuvable (ex. véhicule inconnu). |
| 409 | Conflit métier (créneau complet, dates indisponibles, devis déjà traité). |
| 429 | Trop de requêtes (voir Limites de débit). |
| 500 | Erreur serveur inattendue. |
Formats de succès
Le périmètre public n'a pas d'enveloppe unique : les listes renvoient{ "data": [...] }, la création de RDV renvoie{ "success": true, "appointmentId": "…" }, et les leads renvoient { "ok": true }. Chaque endpoint précise sa forme dans sa page de référence.Limites de débit
Les endpoints sensibles au spam sont limités par IP. Un dépassement renvoie429 avec un message dans error.
| Endpoint | Limite |
|---|---|
| POST /api/public/fleet/lead | 5 requêtes / minute |
| POST /api/public/quotes/[token]/accept | 5 requêtes / 15 min |
| POST /api/public/quotes/[token]/refuse | 5 requêtes / 15 min |
Astuce
Les endpoints de lecture (produits, stock, véhicules) ne sont pas limités aujourd'hui, mais restez raisonnable : mettez en cache côté boutique et évitez le polling agressif.