# peri v0.11.3 - Table of Contents > A Plug'n Play schema validator library, focused on raw data structures ## Pages - [Peri](readme.md) - Guides - [Types Reference](types.md) - [Validation Patterns](validation.md) - [Ecto Integration](ecto.md) - [Phoenix Integration](phoenix.md) - [Data Generation](generation.md) - [JSON Schema](json_schema.md) - [Refs](refs.md) ## Modules - [Peri](Peri.md): Peri is a data description library for Elixir, in the spirit of Clojure's Plumatic Schema and Metosin's Malli. A schema is plain Elixir data: atoms like `:string`, literals like `{:literal, 42}`, tuples, maps, keyword lists, composed however the data demands. There is no separate DSL to learn; the schema language is Elixir itself. Peri is data, Peri is Elixir. - [Peri.Ecto.Type](Peri.Ecto.Type.md): Responsible to convert between Peri <> Ecto types definitions - [Peri.Ecto.Type.Any](Peri.Ecto.Type.Any.md): Represents any type. Passes data to Cassandra as is. - [Peri.Ecto.Type.Atom](Peri.Ecto.Type.Atom.md): Custom Ecto type for storing atoms as strings - [Peri.Ecto.Type.Either](Peri.Ecto.Type.Either.md): Custom Ecto type for storing either of two types - [Peri.Ecto.Type.OneOf](Peri.Ecto.Type.OneOf.md): Custom Ecto type for storing one of many types, aka sum types - [Peri.Ecto.Type.PID](Peri.Ecto.Type.PID.md): Custom Ecto type for storing PIDs, use with caution - [Peri.Ecto.Type.Tuple](Peri.Ecto.Type.Tuple.md): Custom Ecto type for storing tuples with multiple types/elements - [Peri.Form](Peri.Form.md): A form-ready struct holding Peri validation results. - [Peri.Generatable](Peri.Generatable.md): A module for generating sample data based on Peri schemas using StreamData. - [Peri.JSONSchema.Decoder](Peri.JSONSchema.Decoder.md): Decodes a JSON Schema (Draft 7) map into a Peri schema definition. - [Peri.JSONSchema.Encoder](Peri.JSONSchema.Encoder.md): Encodes a Peri schema definition into a JSON Schema (Draft 7) map. - [Peri.Parser](Peri.Parser.md): The `Peri.Parser` module is responsible for managing the state during schema validation. It centralizes functions to handle updating data, adding errors, and managing the path within the data structure being validated. - [Peri.Phoenix](Peri.Phoenix.md): Bridges Peri schemas and Phoenix forms. - [Peri.Walker](Peri.Walker.md): Depth-first schema rewriter. - Exceptions - [Peri.Error](Peri.Error.md): Defines the structure and functions for handling validation errors in the Peri schema validation library. - [Peri.InvalidSchema](Peri.InvalidSchema.md): Exception raised when an invalid schema is encountered.