> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fastgen.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Validation

### Body Validation

Body Validation is useful for ensuring that data transmitted in API requests adheres to specific criteria. By validating the request body, you can maintain the integrity and security of your API and safeguard it against invalid or malicious data.

The `Validation` tab, located at the topmost action in a route, enables you to validate JSON data within incoming API requests. If the body of the request fails to align with the specified validation schema, the request will be immediately terminated.

#### General structure

The schema is defined using JSON syntax, with each key corresponding to a JSON key in the request body.

Each value in the schema must be an object that includes, at a minimum, the type key, which can be one of the following: number, string, list, or object. Various keys are available for data validation, depending on the chosen type.

#### Numbers

To validate numerical values, use the `number` data type. The `required` key in the validation schema specifies whether a particular field is mandatory or optional and `required` can be set for all data types:

```json theme={null}
{
  "myNumericProp": {
    "type": "number",
    "required": true
  }
}
```

#### Text

To validate text values, use the `string` data type. You can specify additional validation rules, such as a regular expression pattern or minimum and maximum length constraints:

```json theme={null}
{
  "myStringProp": {
    "type": "string",
    "required": true,
    "regex": "^[a-zA-Z0-9]+$",
    "minLength": 3,
    "maxLength": 10
  }
}
```

#### Object

To validate text values, use the `object` data type. The `objectValidation` key can then be used to further specify the expected schema for each nested property within the object:

```json theme={null}
{
  "myObjectProp": {
    "type": "object",
    "objectValidation": {
      "myNestedProp": {
        "type": "string",
        "required": true,
        "minLength": 1,
        "maxLength": 50
      }
    }
  }
}
```

#### List

To validate list values, use the `list` data type. You can specify minimum and maximum length constraints, as well as validation rules for each item within the list:

```json theme={null}
{
  "myListProp": {
    "type": "list",
    "minLength": 1,
    "maxLength": 1,
    "itemValidation": {
      "type": "number"
    }
  }
}
```
