# Validation

Formerie valide les valeurs soumises sur le serveur. Les vérifications du SDK ou
du navigateur peuvent améliorer l’expérience utilisateur, mais la soumission finale
demeure celle qui fait foi.

## Chemins des champs

Les champs imbriqués utilisent des chemins avec des points et des crochets :

```txt
contact.email
guests[0].email
guests[1].name
```

Les réponses de validation utilisent ces chemins dans `error.fields` et dans
`error.issues`.

## Plusieurs problèmes par champ

Un même champ peut retourner plusieurs problèmes. Le code d’interface devrait tous
les conserver et choisir d’afficher le premier ou la liste complète.

```json
{
  "path": "contact.email",
  "code": "FIELD_EMAIL_INVALID",
  "message": "Invalid email address.",
  "rule": "email",
  "params": {}
}
```

## Capacités courantes des champs

Formerie prend en charge des modèles courants et déterministes de validation et de
normalisation :

- champs obligatoires
- longueur minimale, maximale et exacte des chaînes
- vérifications de courriel, d’URL, de téléphone, d’UUID, de date, d’heure et de
  date et heure
- valeurs permises
- bornes numériques et exigences de nombres entiers
- vérifications de minimum, de maximum et d’unicité des tableaux
- champs d’objets imbriqués
- règles de formulaire contextuelles définies côté serveur
- règles de visibilité conditionnelle définies côté serveur
- retrait des espaces, normalisation des courriels, transformations de casse et
  assainisseurs sûrs

L’API ignore les champs masqués et ne les inclut pas dans les valeurs assainies.
Utilisez les règles de visibilité pour l’affichage de l’interface seulement; la
livraison, les destinataires, les gabarits et les identifiants des fournisseurs
restent gérés côté serveur.

## Validation partielle et par étape

Utilisez `POST https://forms.formerie.com/{workspaceHandle}/{formHandle}/validate` ou
la fonction `validate()` du SDK pour les formulaires progressifs. Si vous ciblez
explicitement les routes de l’API, la route équivalente est
`POST /v1/{workspaceHandle}/{formHandle}/validate` sur `https://api.formerie.com`.

- `partial` : valide seulement les champs fournis.
- `step` : valide les champs configurés pour l’étape publique nommée.
- soumission finale : valide le formulaire au complet et demeure celle qui fait foi.

La validation partielle n’enregistre pas de soumissions, ne vérifie pas de jetons
CAPTCHA, ne réserve pas de quota et n’envoie pas de courriel.
