Gestion des erreurs et bonnes pratiques
Gestion des erreurs
Les erreurs métier sont renvoyées sous forme RFC7807 / Problem Details.
En plus des champs standards type, title, status, detail et instance, la charge peut inclure :
correlationId;- un code métier ;
- une structure
errorsdétaillant les violations de validation.
Codes HTTP courants
| Code | Signification |
|---|---|
400 Bad Request | Payload invalide, paramètre manquant ou combinaison de données incohérente. |
401 Unauthorized | Token absent, invalide ou expiré. |
403 Forbidden | Tenant non possédé par le partenaire, header x-tenant incohérent ou règle d'autorisation métier non satisfaite. |
404 Not Found | Tenant, legal unit ou office introuvable dans le périmètre courant. |
409 Conflict | Ressource déjà existante, action rejouée dans un état incompatible ou tentative d'approbation / création redondante. |
429 Too Many Requests | La limite de requêtes a été atteinte. Le client doit attendre avant de renouveler l'appel et appliquer une stratégie de retry avec backoff exponentiel. |
Les limites de requêtes applicables et les règles générales de reprise associées sont décrites dans les Integration Guidelines BCSolutions, section « Limitation du nombre de requêtes (rate limiting) ».
Journalisation conseillée
Conservez au minimum :
- timestamp ;
tenantSlug;- endpoint appelé ;
- code HTTP ;
correlationIdde la réponse ;x-correlation-idémis ;- identifiants métier retournés :
jobRunId,legalUnitId,officeId,apiAccessId, etc.
Bonnes pratiques d'intégration
- Utiliser des UUID pour
x-correlation-idet les propager dans toute la chaîne applicative du partenaire. - Implémenter des retries prudents avec backoff exponentiel sur les erreurs transitoires, notamment
429,500,503et les timeouts réseau, et non sur les erreurs métier explicites. - Maîtriser la cadence des traitements batch et éviter l'envoi simultané d'un grand nombre de requêtes pouvant entraîner le déclenchement du mécanisme de limitation.
- Rendre idempotentes les opérations de création côté partenaire, en particulier la création de tenant, de legal unit et d'office.
- Éviter de déclencher automatiquement
/public-api-access/{apiAccessId}/rotatesans contrôle opérateur. - Ne jamais journaliser un
clientSecretou un access token en clair. - Valider les identifiants SIREN / SIRET dans le directory avant de créer l'office lorsque c'est possible.
- Traiter le provisioning comme asynchrone et distinguer clairement un accusé de mise en file d'une réussite complète de bout en bout.
- Utiliser une adresse
principalUserEmaildistincte pour chaque tenant. - Documenter dans votre propre système les liens entre
tenantSlug,legalUnitId,officeId,apiAccessIdetclientId.
Références
- OpenAPI / Swagger des myBCS Partners API — référence contractuelle des endpoints, payloads et codes de retour.
- Integration Guidelines BCSolutions — règles transverses de sécurité, OAuth, journalisation et gestion d'erreurs.
- Guides des APIs métier du tenant — pour les appels effectués au nom du tenant une fois les credentials bootstrap obtenus et utilisés.
Statut du guide
Ce guide est une synthèse opérationnelle destinée aux partenaires.
En cas d'écart entre ce guide et la spécification OpenAPI publiée pour un environnement donné, la spécification OpenAPI fait foi pour le contrat technique, tandis que les règles d'exploitation et de sécurité demeurent applicables telles qu'énoncées dans le guide.