Erreurs
Format
Toutes les erreurs HTTP ont la même forme :
{
"error": {
"type": "validation_error",
"code": "INVALID_FORMACODE",
"message": "One or more declarations are invalid. No file was generated.",
"request_id": "req_8ed4b59fd8fc87db",
"details": [
{"row": 2, "column": "DOMAINE_FORMATION", "field": "declarations[0].training.formacodes", "code": "INVALID_FORMACODE", "message": "Le code 99999 n'existe pas…"}
]
}
}
Appuyez-vous sur code, jamais sur message. Un code publié n'est ni renommé ni réutilisé. request_id est aussi dans l'en-tête X-Request-ID : donnez-le au support, il nous suffit et nous évite de vous demander des données personnelles.
Codes HTTP
| HTTP | type |
Quand |
|---|---|---|
| 200 | — | Succès. Les endpoints validate répondent 200 même si valid est false. |
| 400 | validation_error, invalid_request_error |
Données métier invalides (generate), version inconnue, limite du mode test |
| 401 | authentication_error |
Clé absente, inconnue ou révoquée |
| 404 | not_found |
Ressource inconnue, ou appartenant à une autre organisation |
| 409 | idempotency_error |
Idempotency-Key réutilisée avec un autre corps |
| 410 | invalid_request_error |
Fichier expiré ou généré avec store: false |
| 413 | invalid_request_error |
Corps ou fichier trop volumineux, trop de lignes |
| 415 | invalid_request_error |
Le fichier envoyé n'est pas un CSV |
| 422 | invalid_request_error |
JSON mal formé, champ inconnu, type incorrect |
| 429 | rate_limit_error, quota_error |
Trop de requêtes, ou quota mensuel atteint |
| 500 | api_error |
Erreur interne |
| 503 | reference_error |
Référentiel indisponible : rien n'a été validé, réessayez |
Codes de validation
Fichier entier rejeté
| Code | Signification |
|---|---|
INVALID_ENCODING |
Le fichier n'est pas en UTF-8 |
INVALID_SEPARATOR |
Le séparateur n'est pas \| |
INVALID_HEADER |
Colonne manquante, inconnue, ou dans le mauvais ordre |
INVALID_FILENAME |
Plus de 200 caractères, ou caractère interdit |
EMPTY_FILE |
Aucune déclaration |
Ligne ou champ
| Code | Signification |
|---|---|
INVALID_COLUMN_COUNT |
La ligne n'a pas le bon nombre de colonnes |
REQUIRED_FIELD |
Champ toujours obligatoire, vide |
CONDITIONAL_FIELD_REQUIRED |
Champ obligatoire à cause d'un autre champ |
FIELD_MUST_BE_EMPTY |
Champ qui doit rester vide dans ce cas |
VALUE_TOO_LONG |
Longueur maximale dépassée |
INVALID_CHARACTER |
\| ou saut de ligne dans une valeur |
INVALID_FORMAT |
Liste de codes mal formée |
INVALID_VALUE |
Valeur hors de l'énumération |
INVALID_DATE |
Pas une date jj/mm/aaaa valide |
DATE_IN_FUTURE |
Date de formation postérieure à aujourd'hui |
END_BEFORE_START |
Fin de formation avant le début |
VALIDITY_BEFORE_TRAINING_END |
Début de validité avant la fin de formation |
VALIDITY_END_BEFORE_START |
Fin de validité avant le début de validité |
INVALID_SIRET |
Pas 14 chiffres, ou clé de contrôle fausse |
INVALID_NIR |
Pas 13 caractères |
INVALID_URL |
LIEN_PREUVE ne commence pas par http:// ou https:// |
INVALID_CODE_COUNT |
Trop ou pas assez de codes |
INVALID_FORMACODE, INVALID_NSF, INVALID_ROME_SKILL, UNKNOWN_CERTIFICATION |
Code absent du référentiel |
DUPLICATE_ENTRY |
ID_UNIQUE_PARTENAIRE déjà présent dans le fichier |
INCONSISTENT_DECLARATION |
Deux lignes du même ID_DECLARATION décrivent la formation différemment |
TOO_MANY_HOLDERS |
Plus de 500 titulaires pour une déclaration |
CSV_INJECTION_RISK |
Texte commençant par = + - @ (erreur à la génération, avertissement à la validation) |
Avertissements seulement
BOM_PRESENT, EMPTY_ROW, SURROUNDING_WHITESPACE, QUOTED_VALUE, NIR_UNUSUAL_FORMAT, DUPLICATE_CODE, AMBIGUOUS_RULE, FIELD_NOT_IN_FILE_TYPE.
Un avertissement signale un point que la documentation officielle ne tranche pas. Il n'empêche jamais la génération.