Use pydantic constraint types to provide easier definitions
Currently quite a few of the validators for the pydantic models are not yet using constrained types.
This needs to change to have more strict validation and fewer and less complicated validator functions.