Scope
Expose each field's validation object and pre-validate rows before they hit the API.
| Rule |
Applies to |
Server error message |
min |
number, date, datetime |
<label> must be at least <min> / ... must be after <min> |
max |
number, date, datetime |
<label> must be at most <max> / ... must be before <max> |
minLength |
text, textarea |
<label> must be at least <n> characters |
maxLength |
text, textarea |
<label> must be at most <n> characters |
pattern |
text, textarea, email |
<label> format is invalid |
step |
number |
increment hint, UI only — not enforced server-side |
Type-level checks always run regardless of validation: email must be a valid address, url a valid URL, boolean a real boolean, select/multiselect values must be within options (<label> must be one of: ...), and a required empty value yields <label> is required.
Rules are applied by the server on POST/PUT /api/lists/{id}/data — not when the schema is created.
Acceptance criteria
Scope
Expose each field's
validationobject and pre-validate rows before they hit the API.minnumber,date,datetime<label> must be at least <min>/... must be after <min>maxnumber,date,datetime<label> must be at most <max>/... must be before <max>minLengthtext,textarea<label> must be at least <n> charactersmaxLengthtext,textarea<label> must be at most <n> characterspatterntext,textarea,email<label> format is invalidstepnumberType-level checks always run regardless of
validation:emailmust be a valid address,urla valid URL,booleana real boolean,select/multiselectvalues must be withinoptions(<label> must be one of: ...), and a required empty value yields<label> is required.Rules are applied by the server on
POST/PUT /api/lists/{id}/data— not when the schema is created.Acceptance criteria
400still maps back to the right field rather than a generic toast.stepis applied to the number input only, and is not treated as a constraint.