# `Oaskit.Validation.RequestValidator`
[🔗](https://github.com/lud/oaskit/blob/v0.12.0/lib/oaskit/validation/request_validator.ex#L1)

Base validation logic for requests, used by the `Oaskit.Plugs.ValidateRequest`
Plug.

This module validates a `Oaskit.Validation.RequestData` struct instead of a
`Plug.Conn` struct, which makes it usable from client libraries.

# `built_spec`

```elixir
@type built_spec() ::
  {%{required(binary()) =&gt; %{security: term(), validation: term()}},
   jsv_ctx :: term()}
```

# `private_data`

```elixir
@type private_data() :: %{
  body_params: map(),
  query_params: map(),
  path_params: map(),
  header_params: map(),
  operation_id: binary()
}
```

# `validation_error`

```elixir
@type validation_error() ::
  Oaskit.Errors.InvalidBodyError.t()
  | Oaskit.Errors.UnsupportedMediaTypeError.t()
  | {:parameters_errors,
     [
       Oaskit.Errors.InvalidParameterError.t()
       | Oaskit.Errors.MissingParameterError.t()
     ]}
  | {:not_built, operation_id :: binary()}
```

# `validate_request`

```elixir
@spec validate_request(
  Oaskit.Validation.RequestData.t(),
  module() | built_spec(),
  binary()
) ::
  {:ok, private_data()} | {:error, validation_error()}
```

Validates a request and returns cast data (body params, query params and path
params) or an error.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
