# jsonapi_plug v2.0.4 - Table of Contents

> JSON:API library for Plug and Phoenix applications

## Pages

- [JSON:API library for Plug and Phoenix applications](readme.md)
- [Upgrading between major versions](upgrading.md)
- [Changelog](changelog.md)

## Modules

- [JSONAPIPlug](JSONAPIPlug.md): JSONAPIPlug context
- [JSONAPIPlug.API](JSONAPIPlug.API.md):   JSON:API API Configuration
- [JSONAPIPlug.Phoenix.Component](JSONAPIPlug.Phoenix.Component.md): JSONAPIPlug Phoenix Component helper
- [JSONAPIPlug.Plug](JSONAPIPlug.Plug.md): Implements validation and parsing of `JSON:API` requests

- Document
  - [JSONAPIPlug.Document](JSONAPIPlug.Document.md): JSON:API Document
  - [JSONAPIPlug.Document.ErrorObject](JSONAPIPlug.Document.ErrorObject.md): JSON:API Error Object
  - [JSONAPIPlug.Document.JSONAPIObject](JSONAPIPlug.Document.JSONAPIObject.md): JSON:API Document JSON:API Object

  - [JSONAPIPlug.Document.LinkObject](JSONAPIPlug.Document.LinkObject.md): JSON:API Link Object
  - [JSONAPIPlug.Document.RelationshipObject](JSONAPIPlug.Document.RelationshipObject.md): JSON:API Relationship Object
  - [JSONAPIPlug.Document.ResourceIdentifierObject](JSONAPIPlug.Document.ResourceIdentifierObject.md): JSON:API Resource Identifier object
  - [JSONAPIPlug.Document.ResourceObject](JSONAPIPlug.Document.ResourceObject.md): JSON:API Resource Object

- Resource
  - [JSONAPIPlug.Resource](JSONAPIPlug.Resource.md): You can use any struct as a resource by deriving or directly implementing the `JSONAPIPlug.Resource` protocol
  - [JSONAPIPlug.Resource.Attribute](JSONAPIPlug.Resource.Attribute.md): Custom Resource attributes serialization and deserialization
  - [JSONAPIPlug.Resource.Links](JSONAPIPlug.Resource.Links.md): Resource Links
  - [JSONAPIPlug.Resource.Meta](JSONAPIPlug.Resource.Meta.md): Resource Links

- Plugs
  - [JSONAPIPlug.Plug.ContentTypeNegotiation](JSONAPIPlug.Plug.ContentTypeNegotiation.md): Provides content type negotiation by validating the `content-type` and `accept` headers.
  - [JSONAPIPlug.Plug.Params](JSONAPIPlug.Plug.Params.md): Plug for parsing the JSON:API Document in requests
  - [JSONAPIPlug.Plug.QueryParam](JSONAPIPlug.Plug.QueryParam.md): JSON:API Query Paramter parser plug
  - [JSONAPIPlug.Plug.ResponseContentType](JSONAPIPlug.Plug.ResponseContentType.md): Plug for setting the response content type

- Ecto
  - [JSONAPIPlug.Normalizer.Ecto](JSONAPIPlug.Normalizer.Ecto.md): JSON:API Document normalizer implementation for Ecto
  - [JSONAPIPlug.QueryParser.Ecto.Fields](JSONAPIPlug.QueryParser.Ecto.Fields.md): JSON:API 'fields' query parameter parser implementation for Ecto
  - [JSONAPIPlug.QueryParser.Ecto.Include](JSONAPIPlug.QueryParser.Ecto.Include.md): JSON:API `include` query parameter parser implementation for Ecto
  - [JSONAPIPlug.QueryParser.Ecto.Sort](JSONAPIPlug.QueryParser.Ecto.Sort.md): JSON:API 'sort' query parameter parser implementation for Ecto

- Parsers
  - [JSONAPIPlug.QueryParser](JSONAPIPlug.QueryParser.md): Parses a JSON:API query parameter to a user defined format.
  - [JSONAPIPlug.QueryParser.Filter](JSONAPIPlug.QueryParser.Filter.md): JSON:API 'filter' query parameter parser
  - [JSONAPIPlug.QueryParser.Page](JSONAPIPlug.QueryParser.Page.md): JSON:API 'page' query parameter parser

- Behaviours
  - [JSONAPIPlug.Normalizer](JSONAPIPlug.Normalizer.md): Transforms user data to and from a `JSON:API` Document.
  - [JSONAPIPlug.Pagination](JSONAPIPlug.Pagination.md): JSON:API Pagination strategy

- Exceptions
  - [JSONAPIPlug.Exceptions.InvalidDocument](JSONAPIPlug.Exceptions.InvalidDocument.md): Defines a generic exception for when an invalid document is received.

  - [JSONAPIPlug.Exceptions.InvalidHeader](JSONAPIPlug.Exceptions.InvalidHeader.md): Defines a generic exception for when an invalid header is received.

  - [JSONAPIPlug.Exceptions.InvalidQuery](JSONAPIPlug.Exceptions.InvalidQuery.md): Defines a generic exception for when an invalid query parameter is received.

