ApiBorne
Sommaire du guide

Erreurs et retry

Des statuts HTTP réels — jamais de « 200 + flag d'erreur » — et un corps normalisé. Le comportement de retry de la borne dépend directement de vos statuts : les respecter n'est pas cosmétique.

Le corps d'erreur normalisé

json
{ "error": { "code": "UNKNOWN_APPOINTMENT", "message": "Appointment apt-1001 not found", "details": null } }

message est destiné aux logs (jamais affiché au patient) : mettez-y de quoi diagnostiquer. details est libre (champ en faute, limite dépassée…). Le module d'erreurs de la démo tient en un fichier : src/server/contract/errors.ts.

Les codes du contrat

CodeHTTPSens
INVALID_AUTH_KEY401Clé partagée incorrecte pour ce device
UNKNOWN_DEVICE401Device non provisionné (validé en premier)
INVALID_CREDENTIALS401staff/sign-in : identifiants invalides
VALIDATION_ERROR400Corps ou paramètre invalide
UNKNOWN_PATIENT404Patient introuvable
UNKNOWN_APPOINTMENT404RDV introuvable (id ou code)
UNKNOWN_DOCUMENT404Document introuvable / déjà supprimé
ALREADY_CHECKED_IN409Check-in impossible : état réellement incompatible
UPLOAD_TOO_LARGE413Upload au-delà de votre limite (≥ 10 Mo à accepter)
INTERNAL_ERROR500Erreur interne (retentée par la borne)
NOT_SUPPORTED501DÉPRÉCIÉ — toutes les routes sont obligatoires : répondez la forme minimale (liste vide, 204, 404…)

Politique de retry de la borne

Activité : la borne retente les 5xx et erreurs réseau, jamais les 4xx.Réponse de votre API(ou erreur réseau)Statut ?2xxParcours continue4xxDéfinitif — jamais retentéla borne affiche le message adapté5xx / réseauRetenténombre et plage horaire configurés côté borneConséquence : vos écritures (check-in surtout) doivent tolérer un rejeu après timeout — idempotence.
Votre statut HTTP pilote directement le comportement de la borne — un mauvais statut casse le mécanisme de retry.
  • Erreurs réseau et 5xx : retentées (nombre et plage horaire configurables côté borne) ;
  • 4xx : jamais retentés — la borne les considère définitifs.
Conséquence directe : vos opérations d'écriture doivent tolérer un rejeu après timeout. Le cas critique est le check-in — idempotence détaillée sur sa page de référence. Un mauvais statut (500 à la place d'un 404, 200 avec flag d'erreur…) casse ce mécanisme.