# Zoi v0.18.4 - Table of Contents

> Zoi is a schema validation library for Elixir, designed to provide a simple and flexible way to define and validate data.

## GUIDES

- [Changelog](changelog.md)
- [Zoi](readme.md)

- Setup
  - [Quickstart Guide](quickstart_guide.md)
  - [Recipes](recipes.md)

- Integrations
  - [Rendering forms with Phoenix](rendering_forms_with_phoenix.md)
  - [Using Zoi to generate OpenAPI specs](using_zoi_to_generate_openapi_specs.md)
  - [Validating controller parameters](validating_controller_parameters.md)

- Utilities
  - [Converting Keys From Object](converting_keys_from_object.md)
  - [Generating Schemas from JSON example](generating_schemas_from_json_example.md)
  - [Localizing Zoi errors with Gettext](localizing_errors_with_gettext.md)

## Modules

- Main API
  - [Zoi](Zoi.md): `Zoi` is a schema validation library for Elixir, designed to provide a simple and flexible way to define and validate data.
  - [Zoi.ISO](Zoi.ISO.md): This module defines schemas for ISO time, date, and datetime formats,
along with transformations to convert them into Elixir's native types.

- Schema
  - [Zoi.Describe](Zoi.Describe.md): `Zoi.describe/1` introspect schemas, finding it's `:description` metadata and type specifications to generate documentation strings.
This documentation that can be used in HexDocs or other places where you want to describe the options your schema accepts.
  - [Zoi.Schema](Zoi.Schema.md): Utilities for traversing and transforming Zoi schemas.
  - [Zoi.Struct](Zoi.Struct.md): A helper module to define and validate structs using Zoi schemas.
This module provides functions to extract `@enforce_keys` and struct fields from a Zoi struct schema.
It is particularly useful when you want to create Elixir structs that align with Zoi schemas.
  - [Zoi.TypeSpec](Zoi.TypeSpec.md): Protocol for generating Elixir type specifications from Zoi schemas.

- Integrations
  - [Zoi.Form](Zoi.Form.md): Helpers for integrating `Zoi` objects with Phoenix (or any `Phoenix.HTML.FormData`)
forms.
  - [Zoi.JSONSchema](Zoi.JSONSchema.md): [JSON Schema](https://json-schema.org/) is a declarative language for annotating and validating JSON document's structure, constraints, and data types. It helps you standardize and define expectations for JSON data.

- Internals
  - [Zoi.Context](Zoi.Context.md): The Context provides the parsing information such as the input data, parsed data and errors.
  - [Zoi.Type](Zoi.Type.md): Protocol for defining types in Zoi.

- Exceptions
  - [Zoi.Error](Zoi.Error.md): Represents a validation error with detailed information.

