Validation des champs
Validation réutilisable pour les formulaires flow et les backends partenaires.
Valider un champ
POST /api/v1/validate/field
{
"field": {
"key": "email",
"type": "email",
"label": "E-mail",
"required": true
},
"value": "not-an-email"
}
Réponse
{
"ok": false,
"key": "email",
"value": null,
"error": "Adresse e-mail invalide.",
"code": "format"
}
Raccourci
{
"type": "phone",
"key": "phone",
"value": "+228XXXXXXXX"
}
Valider un formulaire
POST /api/v1/validate/form
{
"fields": [
{ "key": "full_name", "type": "text", "label": "Nom", "required": true },
{ "key": "email", "type": "email", "label": "E-mail", "required": false },
{ "key": "phone", "type": "phone", "label": "Téléphone", "required": true }
],
"values": {
"full_name": "Ama",
"email": "[email protected]",
"phone": "+22890000000"
}
}
200lorsqueok: true422lorsque la validation échoue (le corps inclut toujourserrors)
{
"ok": false,
"values": {},
"errors": {
"email": "Adresse e-mail invalide."
},
"error_list": [
{ "key": "email", "code": "format", "error": "Adresse e-mail invalide.", "label": "E-mail" }
],
"first_error": "Adresse e-mail invalide."
}
Types de champs supportés
type | Règles |
|---|---|
text | required, min/max length, regex optionnel |
email | e-mail de type RFC |
phone | E.164 après normalisation (+…) |
number / integer | numérique · min/max optionnels |
date | YYYY-MM-DD |
boolean | oui/non |
select | la valeur doit être dans options[].id |
Règles personnalisées sur un champ
{
"key": "nif",
"type": "text",
"required": true,
"validation_regex": "^[A-Z0-9-]{6,20}$",
"validation_message": "NIF invalide",
"min_length": 6,
"max_length": 20
}
Variantes JWT client
Les apps utilisateur final peuvent appeler :
POST /api/v1/me/validate/fieldPOST /api/v1/me/validate/form
Même forme de corps ; authentifié avec le token Bearer utilisateur.
