> For the complete documentation index, see [llms.txt](https://structure.js.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://structure.js.org/validation/validate-raw-data.md).

# Validate raw data

In addition to the *instance* `validate()` method, Structure also adds a *static* `validate()` to your structure classes that receives a *raw object* or a *structure instance* as parameter and has the same return type of the [normal validation](/validation.md):

```javascript
const User = attributes({
  name: {
    type: String,
    minLength: 10,
  },
  age: {
    type: Number,
    required: true,
  },
})(class User {});

// Using a raw object
const rawData = {
  name: 'John',
};

const { valid, errors } = User.validate(rawData);

valid; // false
errors; /*
[
  { message: '"name" length must be at least 10 characters long', path: ['name'] },
  { message: '"age" is required', path: ['age'] }
]
*/

// Using a structure instance
const user = new User({
  name: 'Some long name',
});

const validation = User.validate(user);

validation.valid; // false
validation.errors; /*
[
  { message: '"age" is required', path: ['age'] }
]
*/
```
