Validación de campos
Validación reutilizable para los formularios de flows y los backends de socios.
Validar un campo
POST /api/v1/validate/field
{
"field": {
"key": "email",
"type": "email",
"label": "E-mail",
"required": true
},
"value": "not-an-email"
}
Respuesta
{
"ok": false,
"key": "email",
"value": null,
"error": "Adresse e-mail invalide.",
"code": "format"
}
Forma abreviada
{
"type": "phone",
"key": "phone",
"value": "+228XXXXXXXX"
}
Validar un formulario
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"
}
}
200cuandook: true422cuando falla la validación (el cuerpo siempre incluyeerrors)
{
"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."
}
Tipos de campo compatibles
type | Reglas |
|---|---|
text | required, longitud mínima/máxima, regex opcional |
email | correo electrónico de tipo RFC |
phone | E.164 después de la normalización (+…) |
number / integer | numérico · límites mínimo/máximo opcionales |
date | YYYY-MM-DD |
boolean | sí/no |
select | el valor debe estar en options[].id |
Reglas personalizadas para un campo
{
"key": "nif",
"type": "text",
"required": true,
"validation_regex": "^[A-Z0-9-]{6,20}$",
"validation_message": "NIF invalide",
"min_length": 6,
"max_length": 20
}
Variantes con JWT de cliente
Las aplicaciones de usuario final pueden llamar a:
POST /api/v1/me/validate/fieldPOST /api/v1/me/validate/form
El cuerpo tiene la misma forma; la autenticación utiliza el token Bearer del usuario.