# peri v0.9.0 - 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) - [Data Generation](generation.md) - [JSON Schema](json_schema.md) - [Refs](refs.md) ## Modules - [Peri](Peri.md): Peri is a schema validation library for Elixir, inspired by Clojure's Plumatic Schema. It provides a flexible and powerful way to define and validate data structures using schemas. The library supports nested schemas, optional fields, custom validation functions, and various type constraints. - [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.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.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.