Validação de campos

Validação reutilizável para formulários de fluxos e backends de parceiros.

Validar um campo

POST /api/v1/validate/field

{
  "field": {
    "key": "email",
    "type": "email",
    "label": "E-mail",
    "required": true
  },
  "value": "not-an-email"
}

Resposta

{
  "ok": false,
  "key": "email",
  "value": null,
  "error": "Adresse e-mail invalide.",
  "code": "format"
}

Forma abreviada

{
  "type": "phone",
  "key": "phone",
  "value": "+228XXXXXXXX"
}

Validar um formulário

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 quando ok: true
  • 422 quando a validação falha (o corpo sempre inclui 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 compatíveis

typeRegras
textrequired, comprimento mínimo/máximo, regex opcional
emaile-mail no formato RFC
phoneE.164 após normalização (+…)
number / integernumérico · limites mínimo/máximo opcionais
dateYYYY-MM-DD
booleansim/não
selecto valor deve estar em options[].id

Regras personalizadas para um 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 com JWT do cliente

Os aplicativos de usuário final podem chamar:

  • POST /api/v1/me/validate/field
  • POST /api/v1/me/validate/form

O corpo tem o mesmo formato; a autenticação usa o token Bearer do usuário.