ExoConnect pour Acomba
AccueilAPIDocumentation
AccueilAPIDocumentation
Contactez-nous
  1. Documentation
  • Introduction
  • Guide de démarrage rapide
  • Authentification
  • Concepts clés
  • Codes d'erreur
  • Guide d'installation
    • Prérequis
    • Installation
    • SDK Acomba
    • Activation
    • Configuration
    • Clés API
    • Versions de l'API
  1. Documentation

Codes d'erreur

L'API ExoConnect utilise les codes HTTP standard pour indiquer le résultat d'une requête. Les codes 2xx confirment le succès, les codes 4xx signalent une erreur côté client et les codes 5xx indiquent un problème côté serveur.

Résumé des codes#

CodeStatutDescription
200OKLa requête a été traitée avec succès.
400Bad RequestParamètres manquants ou format incorrect.
401UnauthorizedEn-tête x-api-key manquant ou invalide.
404Not FoundLa ressource demandée n'existe pas.
409ConflictL'opération entre en conflit avec l'état actuel de la ressource.
422Unprocessable EntityLes données envoyées ne respectent pas les contraintes métier.
500Internal Server ErrorErreur interne du serveur.
503Service UnavailableLe service Acomba ou le SDK n'est pas disponible.

Format de réponse d'erreur#

Toutes les erreurs retournent un objet JSON contenant un champ detail qui décrit le problème :
{
  "detail": "Clé API manquante ou invalide — vérifiez le header x-api-key"
}
Pour les erreurs de validation (422), l'API retourne un format plus détaillé avec la liste des champs en erreur :
{
  "detail": [
    {
      "loc": ["body", "code"],
      "msg": "field required",
      "type": "value_error.missing"
    }
  ]
}

Détail par code#

200 — OK#

La requête a été traitée avec succès. Le format de la réponse dépend du type d'opération :
Lecture (GET)
{
  "items": [...],
  "total": 412,
  "limit": 50,
  "offset": 0,
  "truncated": true
}
Mutation (POST / PATCH / DELETE)
{
  "success": true,
  "id": 416
}

400 — Bad Request#

La requête est mal formée : paramètres manquants, format incorrect ou valeurs hors limites.
Causes fréquentes :
SituationExemple
Paramètre de query invalide?limit=abc au lieu d'un entier
Format de date incorrectsince=2026-13-01 (mois invalide)
Entité non supportée?entity=unknown dans /api/helpers/updates
Corps JSON mal forméAccolades manquantes, virgule en trop
{
  "detail": "Requête invalide — paramètres manquants ou format incorrect."
}
Validez le format de vos dates avec le standard ISO 8601 (YYYY-MM-DDTHH:mm:ss) avant l'envoi. C'est la cause la plus fréquente de 400 sur les routes de synchronisation.

401 — Unauthorized#

L'en-tête x-api-key est absent ou contient une clé invalide. Aucune requête ne peut aboutir sans une clé valide.
{
  "detail": "Clé API manquante ou invalide — vérifiez le header x-api-key"
}
Causes fréquentes :
SituationSolution
Header absentAjoutez x-api-key: VOTRE_CLE_API à chaque requête
Clé expirée ou révoquéeGénérez une nouvelle clé dans l'application ExoConnect
Faute de frappe dans le headerUtilisez exactement x-api-key (sensible à la casse)
Espace ou retour de ligneVérifiez qu'aucun caractère invisible ne s'est glissé dans la valeur
Stockez votre clé dans une variable d'environnement (EXOCONNECT_API_KEY) plutôt qu'en dur dans votre code. Consultez la page Authentification pour les bonnes pratiques.

404 — Not Found#

La ressource demandée n'existe pas. Le code ou l'identifiant spécifié ne correspond à aucune fiche dans Acomba.
{
  "detail": "Ressource introuvable — le code ou l'ID spécifié n'existe pas."
}
Causes fréquentes :
SituationSolution
Code métier incorrectVérifiez la casse exacte du code (ex : JACHETE, pas jachete)
ID suppriméLa fiche a été supprimée dans Acomba
Mauvais endpointVérifiez le chemin de la route (ex : /api/customers et non /api/customer)
Les codes métier sont sensibles à la casse dans Acomba. Utilisez plutôt l'accès par ID interne (/by-id/{id}) pour éviter les erreurs de casse. L'ID est immuable et ne change jamais.

409 — Conflict#

L'opération demandée entre en conflit avec l'état actuel de la ressource ou du système.
{
  "detail": "Conflit métier — l'opération entre en conflit avec l'état actuel."
}
Causes fréquentes :
SituationSolution
Code déjà utiliséChoisissez un code unique pour la nouvelle ressource
Suppression d'une entité référencéeRetirez d'abord les références (factures, paiements) avant de supprimer
Indexation ou synchronisation déjà en coursAttendez la fin de l'opération avant d'en lancer une nouvelle

422 — Unprocessable Entity#

Les données envoyées sont syntaxiquement correctes mais ne respectent pas les contraintes métier ou les règles de validation du SDK Acomba.
{
  "detail": "Erreur de validation — les données envoyées ne respectent pas les contraintes métier."
}
Causes fréquentes :
SituationSolution
Champ obligatoire manquantConsultez la documentation de l'endpoint pour les champs requis
Valeur hors limitesVérifiez les longueurs max et plages acceptées (ex : code max 12 caractères)
Référence invalideLe payment_term_code ou territory_code n'existe pas dans Acomba
Type de données incorrectUn champ numérique reçoit une chaîne de caractères
Les erreurs 422 de FastAPI incluent le chemin exact du champ en erreur dans detail[].loc. Utilisez cette information pour identifier précisément quel champ corriger.

500 — Internal Server Error#

Une erreur inattendue s'est produite côté serveur. Cette erreur peut provenir du SDK Acomba (erreur COM) ou de l'API elle-même.
{
  "detail": "Erreur interne — contactez le support si le problème persiste."
}
Actions recommandées :
ActionDétail
Réessayer la requêteCertaines erreurs COM sont transitoires (lock temporaire)
Vérifier qu'Acomba est ouvertLe SDK nécessite qu'Acomba soit lancé sur le poste
Consulter les logsGET /system/logs peut révéler la cause exacte
Contacter le supportSi l'erreur persiste : support@exom.ca

503 — Service Unavailable#

Le service n'est pas prêt à traiter les requêtes. Acomba n'est pas démarré, le SDK est en pause ou la base de données d'indexation n'est pas initialisée.
{
  "detail": "Service SDK indisponible — le runtime n'est pas initialisé."
}
Causes fréquentes :
SituationSolution
Acomba n'est pas lancéDémarrez Acomba sur le poste où l'API est installée
SDK en pauseReprenez le SDK via POST /system/sdk/resume
Fenêtre d'arrêt activeLe SDK est dans une fenêtre d'arrêt planifiée, il reprendra automatiquement
Base d'indexation non initialiséeVérifiez le statut avec GET /system/indexing/status
Vérifiez l'état du service avec GET /system/health avant de diagnostiquer une erreur 503. Cette route retourne le statut de chaque composant (SDK, base de données, relais).

Bonnes pratiques de gestion des erreurs#

1
Vérifiez le code HTTP en premier
Utilisez le code de statut HTTP pour déterminer la catégorie d'erreur avant de lire le corps de la réponse. Les codes 4xx sont des erreurs client (corrigez votre requête), les 5xx sont des erreurs serveur (réessayez ou contactez le support).
2
Implémentez une logique de retry pour les erreurs transitoires
Les erreurs 500 et 503 peuvent être temporaires (lock COM, redémarrage SDK). Implémentez un retry avec backoff exponentiel pour ces codes, avec un maximum de 3 tentatives.
3
Loguez le corps complet de la réponse
Le champ detail contient souvent des informations précieuses pour le diagnostic. Loguez-le systématiquement pour faciliter le débogage.
4
Surveillez la santé du service
Intégrez un appel périodique à GET /system/health dans votre monitoring. Cela vous permet de détecter les interruptions avant qu'elles n'affectent vos opérations.

Exemple de gestion des erreurs#

Python
JavaScript
PHP
Modified at 2026-03-20 02:48:39
Previous
Concepts clés
Next
Prérequis
Built with