# ATLAS - Rest API with Spring boot (part 4)
## Context
See [part 1](https://hackmd.io/OAcft3gBT0SkV-SF__rGeg) for details on the context.
## Prerequisites
Finish [part 3](https://hackmd.io/OaA8nHOMTKih9-rM7YVEsA).
## Specifications
Add the validation starter to the project's dependencies (pom.xml).
Refactor with DTO (Data Transfer Objects) and some validation constraints.
Validation constraints docs: [Jakarta Bean Validation](https://docs.jboss.org/hibernate/beanvalidation/spec/2.0/api/javax/validation/constraints/package-summary.html).
### Data Transfer Objects
Implement seperate DTO in order to create, fully update and partially update a capital, a continent, a country and a river. The controller must now declare a DTO instead of an entity in the related routes.
### Constraints
#### Country
- Iso code 2: required, exactly 2 letters
- Iso code 3: optional, exactly 3 letters
- Name: required, at least one non-whitespace character, maximum 150 chars
- Area: optional, positive
- Population: required, positive
- Official language: required, at least one non-whitespace character, maximum 75 chars
#### Capital
- Name: required, at least one non-whitespace character, maximum 150 chars
- Area: optional, positive
- Population: required, positive
#### Continent
- Name: required, at least one non-whitespace character, maximum 100 chars
- Area: optional, positive
#### River
- Name: required, at least one non-whitespace character, maximum 50 chars
- Length: optional, positive
- Source: required, at least one non-whitespace character, maximum 100 chars
- Mouth: required, at least one non-whitespace character, maximum 100 chars