Valider un CSV
POST /v1/files/validate — multipart/form-data
| Champ | ||
|---|---|---|
file |
obligatoire | Le fichier tel qu'il serait déposé. 20 Mo au plus. |
type |
obligatoire | adf ou jdr |
declarant |
obligatoire | employer ou training_organization |
strict_references |
facultatif | true par défaut |
spec_version |
facultatif |
curl -X POST https://api.prevenapi.fr/v1/files/validate \
-H "Authorization: Bearer pp_test_xxx" \
-F type=adf -F declarant=employer \
-F "file=@import.csv;type=text/csv"
Le fichier est analysé en mémoire et n'est jamais écrit sur disque. Seuls des compteurs sont conservés.
Réponse
Toujours 200 quand le fichier a pu être lu. Lisez valid.
{
"valid": false,
"spec_version": "2026-02",
"rows_total": 42,
"rows_valid": 39,
"rows_invalid": 3,
"file_rejected": false,
"error_count": 3,
"errors": [
{"row": 17, "column": "DOMAINE_FORMATION", "code": "INVALID_FORMACODE", "message": "Le code 99999 n'existe pas dans le référentiel formacode du Passeport de prévention."},
{"row": 28, "column": "DATE_FIN_FORMATION", "code": "END_BEFORE_START", "message": "La date de fin de la formation est antérieure à la date de début."}
],
"warnings": []
}
rowest le numéro de ligne du fichier ; l'en-tête est la ligne 1.file_rejected: truesignale une erreur qui ferait rejeter tout le fichier par le portail : encodage, séparateur, en-têtes, nom de fichier, fichier vide. Dans ce cas les lignes ne sont pas analysées.- Au-delà de 1 000 erreurs, la liste est coupée (
truncated: true) ;error_countreste exact.
Ce qui est vérifié
Structure, en-têtes et leur ordre, encodage, séparateur, nombre de colonnes, champs obligatoires et conditionnels, longueurs, énumérations, dates et leur cohérence, NIR, SIRET (structure et clé), codes Formacode / NSF / ROME / RS, doublons d'ID_UNIQUE_PARTENAIRE, cohérence des lignes d'une même déclaration, limite de 500 titulaires.
Ce que seul le portail peut vérifier
- qu'un
ID_UNIQUE_PARTENAIREn'a pas déjà servi dans un dépôt précédent ; - que le couple NIR + nom de naissance est reconnu ;
- que le SIRET existe réellement.
Un fichier valid: true peut donc encore voir des lignes rejetées pour ces trois raisons.
Dates dans le futur
Le portail compare les dates de formation au jour du dépôt. Nous les comparons au jour de la validation (heure de Paris).