/v1, à partir
de l’URL de base du backend POS.
GET /v1/products ou
POST /v1/checkout/finalize.
Forme des réponses
Succès
Les routes de domaine renvoient leur charge utile directement, en JSON brut — il n’y a pas d’enveloppe{ "data": … } sur ces routes. Selon l’opération,
c’est un objet (un modèle de lecture), un tableau, ou une page.
L’unique exception est
GET /v1/auth/whoami, une route récente qui renvoie
{ "data": { "effectivePermissions": [ … ] } }. Unifier toutes les réponses de
succès sous une enveloppe { data } est un chantier transverse
volontairement non réalisé ici, car il toucherait le client API et toutes
les applications.Erreur
Un échec renvoie l’enveloppe d’erreur partagée :code— unResultCodedu noyau (voir Codes d’erreur).message— un message lisible.statusCode— le statut HTTP, cohérent avec le code d’état de la réponse.fieldErrors— présent uniquement surVALIDATION_FAILED: la liste des erreurs de champ{ field, message }.
Pagination
Les opérations de liste se paginent par les paramètres de requêtepage et
pageSize (pageSize plafonné, en pratique à 100).
Validation
Les schémas qui valident une requête au runtime sont les mêmes que ceux qui génèrent le spec OpenAPI : les paramètres, la querystring et le corps documentés sont exactement ceux validés à l’exécution. Un corps ou un paramètre invalide produit un400 VALIDATION_FAILED avec fieldErrors.
