Statuts & codes

Référence complète des valeurs énumérées de l'API : statuts de livraison, types de véhicule, codes d'erreur et limites de débit.

Statuts de livraison

Le champ status d'une livraison prend l'une des valeurs suivantes. Les statuts marqués terminaux sont définitifs.

CodeLibelléDescription
PENDING_PAYMENTEn attente de paiementCréée, en attente du blocage du montant (carte refusée : page de paiement à ouvrir).
SEARCHING_DRIVERRecherche d'un coursierMontant bloqué ; un coursier est en cours de recherche.
EN_ROUTE_PICKUPEn route vers l'enlèvementUn coursier a accepté la course et se dirige vers le point d'enlèvement.
AT_PICKUPSur le lieu d'enlèvementLe coursier est arrivé sur le lieu d'enlèvement.
PICKED_UPColis récupéréLe colis a été récupéré.
EN_ROUTE_DROPOFFEn route vers la livraisonLe coursier se dirige vers le point de livraison.
AT_DROPOFFCoursier à destinationLe coursier est arrivé au point de livraison.
INCIDENTIncident en coursLivraison suspendue après un incident, reprise par l'équipe CONVOY.
DELIVEREDterminalLivréLe colis a été remis ; preuve de livraison validée ; montant débité.
CANCELEDterminalAnnuléLa livraison a été annulée ; le montant bloqué est libéré.
EXPIREDterminalExpirée (aucun coursier)Paiement non effectué dans les 30 minutes, ou aucun coursier disponible ; rien n'est débité.

Types de véhicule

Valeurs acceptées par le champ vehicle lors de la création d'une livraison.

CodeVéhiculeCapacitéUsage typique
bikeVélo≤ 5 kgPlis, petits colis, intra-muros.
motoMoto≤ 15 kgExpress urbain, documents urgents.
carCar≤ 50 kgColis volumineux, plusieurs articles.
vanVan≤ 300 kgMobilier, lots, électroménager.
xlXLPalettesCharges lourdes, transport palettisé.

Codes d'erreur

CONVOY utilise les codes de statut HTTP conventionnels. Les réponses d'erreur incluent un objet error avec un type, un code machine et un message lisible.

Structure d'erreur
{
  "error": {
    "type": "validation_error",
    "code": "address_not_found",
    "message": "Adresse introuvable : vérifiez la rue, le code postal et la ville.",
    "param": "dropoff"
  }
}

param désigne, quand c'est utile, le champ en cause. Principaux codes : invalid_api_key, missing_param, invalid_vehicle, field_too_long, invalid_metadata, address_not_found, service_unavailable, unsupported_proof, payment_method_required, email_unverified, too_late, rate_limited.

StatutTypeSignification
400invalid_request_errorRequête mal formée (JSON invalide, champ manquant).
401authentication_errorClé API absente, invalide ou révoquée.
403permission_errorClé valide mais non autorisée pour cette ressource.
404not_found_errorLa ressource demandée est introuvable.
409conflict_errorConflit d'état (ex. annulation après l'enlèvement : too_late).
422validation_errorParamètres valides mais refusés (adresse introuvable, service non proposé, aucune carte enregistrée).
429rate_limit_errorTrop de requêtes : limite de débit atteinte.
5xxapi_errorErreur interne ou paiement indisponible. Réessayez avec un délai exponentiel.

Limites de débit

L'API est limitée à 120 requêtes par minute et par clé (fenêtre glissante). Au-delà, l'API renvoie un statut 429. Chaque réponse authentifiée expose les en-têtes suivants :

En-têteDescription
RateLimit-LimitNombre maximal de requêtes autorisées sur la fenêtre courante.
RateLimit-RemainingNombre de requêtes restantes sur la fenêtre courante.
Retry-AfterDélai en secondes avant de pouvoir réessayer (sur réponse 429).
Gérer les 429
En cas de 429, attendez la durée indiquée par Retry-After puis réessayez avec un délai exponentiel et une gigue (jitter). Évitez de réémettre immédiatement la requête en boucle.