# apical v0.3.0 - Table of Contents ## GUIDES - [Getting Started with Apical](getting-started.md) - [Parameter Validation](parameter-validation.md) - [Request Body Handling](request-body-handling.md) - [Remote References](remote-references.md) - [Using Apical for Testing OpenAPI requests](apical-for-testing.md) ## Modules - [Apical](Apical.md): Generates a web router from an OpenAPI document. - [Apical.Plug.Controller](Apical.Plug.Controller.md) - [Apical.Plug.Router](Apical.Plug.Router.md): boilerplate code setting up a router using the `Plug` framework *without* using `Phoenix`. Note that although this reduces the needed dependencies, this doesn't provide you with some Phoenix affordances such as route helpers. - [Apical.RemoteRefs](Apical.RemoteRefs.md): Handles resolution of remote $ref references from a local cache. - [Apical.ToJson](Apical.ToJson.md): Protocol for converting Apical errors to JSON-compatible maps. - Behaviours - [Apical.Plugs.RequestBody.Source](Apical.Plugs.RequestBody.Source.md): Behaviour for adapters that process request bodies and alter the conn. - Plugs - [Apical.Plugs.Accept](Apical.Plugs.Accept.md): `Plug` module for validating Accept headers against response content types. - [Apical.Plugs.Cookie](Apical.Plugs.Cookie.md): `Plug` module for parsing cookie parameters and placing them into params. - [Apical.Plugs.Header](Apical.Plugs.Header.md): `Plug` module for parsing header parameters and placing them into params. - [Apical.Plugs.Path](Apical.Plugs.Path.md): `Plug` module for parsing path parameters and placing them into params. - [Apical.Plugs.Query](Apical.Plugs.Query.md): `Plug` module for parsing query parameters and placing them into params. - [Apical.Plugs.RequestBody](Apical.Plugs.RequestBody.md): `Plug` module for parsing request bodies and placing them into params. - [Apical.Plugs.SetOperationId](Apical.Plugs.SetOperationId.md): `Plug` module which sets the private `:operation_id` key on the `conn` struct to the operationId (as an atom) that was declared in the schema. - [Apical.Plugs.SetVersion](Apical.Plugs.SetVersion.md): `Plug` module which sets the `:api_version` key on the `conn` struct's `assigns` to the version string that was declared in the schema. - RequestBody Source Plugins - [Apical.Plugs.RequestBody.Default](Apical.Plugs.RequestBody.Default.md): Default source handler for request bodies with wildcard media types. - [Apical.Plugs.RequestBody.FormEncoded](Apical.Plugs.RequestBody.FormEncoded.md): Source handler for `application/x-www-form-urlencoded` request bodies. - [Apical.Plugs.RequestBody.Json](Apical.Plugs.RequestBody.Json.md): Source handler for `application/json` request bodies. - Exceptions - [Apical.Exceptions.InvalidContentLengthError](Apical.Exceptions.InvalidContentLengthError.md): Error raised when the `content-length` header does not parse to a valid integer. - [Apical.Exceptions.InvalidContentTypeError](Apical.Exceptions.InvalidContentTypeError.md): Error raised when the `content-type` header does not parse to a valid mimetype string. - [Apical.Exceptions.MissingContentLengthError](Apical.Exceptions.MissingContentLengthError.md): Error raised when the `content-length` header is missing from the request. - [Apical.Exceptions.MissingContentTypeError](Apical.Exceptions.MissingContentTypeError.md): Error raised when the `content-type` header is missing from the request. - [Apical.Exceptions.MultipleContentLengthError](Apical.Exceptions.MultipleContentLengthError.md): Error raised multiple `content-length` headers are provided by the request. - [Apical.Exceptions.MultipleContentTypeError](Apical.Exceptions.MultipleContentTypeError.md): Error raised multiple `content-type` headers are provided by the request. - [Apical.Exceptions.NotAcceptableError](Apical.Exceptions.NotAcceptableError.md): Error raised when the client's `Accept` header does not match any of the response content types defined in the OpenAPI schema. - [Apical.Exceptions.ParameterError](Apical.Exceptions.ParameterError.md): Error raised when parameters are invalid. Note that many of the fields correspond to error parameters returned by `Exonerate` validators. - [Apical.Exceptions.RequestBodyTooLargeError](Apical.Exceptions.RequestBodyTooLargeError.md): Error raised when the request body is too large. This could be because the payload is larger than the maximum allowed size as specified in configuration or if the request body size doesn't match the `content-length` header.