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"
  }
}
  • 200 cuando ok: true
  • 422 cuando falla la validación (el cuerpo siempre incluye errors)
{
  "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

typeReglas
textrequired, longitud mínima/máxima, regex opcional
emailcorreo electrónico de tipo RFC
phoneE.164 después de la normalización (+…)
number / integernumérico · límites mínimo/máximo opcionales
dateYYYY-MM-DD
booleansí/no
selectel 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/field
  • POST /api/v1/me/validate/form

El cuerpo tiene la misma forma; la autenticación utiliza el token Bearer del usuario.