# async_api_spex v0.1.0 - Table of Contents

> Declarative AsyncAPI 3.0 documents: structs, use macros, a Plug, and a mix task.

## Pages

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

## Modules

- [AsyncApiSpex](AsyncApiSpex.md): Declarative AsyncAPI 3.0 documents for Elixir applications.
- [AsyncApiSpex.Channel](AsyncApiSpex.Channel.md): A channel: a topic, exchange and routing key, subject, or any other address a
message is sent to or received from.
- [AsyncApiSpex.Components](AsyncApiSpex.Components.md): Reusable objects referenced from elsewhere in the document.
- [AsyncApiSpex.CorrelationId](AsyncApiSpex.CorrelationId.md): Describes where a correlation identifier lives inside a message.

- [AsyncApiSpex.Document](AsyncApiSpex.Document.md): An AsyncAPI 3.0 document.
- [AsyncApiSpex.Encoder](AsyncApiSpex.Encoder.md): Converts an `AsyncApiSpex.Document` into a JSON-encodable map.
- [AsyncApiSpex.Info](AsyncApiSpex.Info.md): Metadata about the API: its title and version, plus optional descriptive and
legal fields.

- [AsyncApiSpex.Message](AsyncApiSpex.Message.md): A message on a channel: its metadata, headers, and payload.
- [AsyncApiSpex.Operation](AsyncApiSpex.Operation.md): An operation on a channel: a `:send` (the application publishes) or
`:receive` (the application consumes).

- [AsyncApiSpex.Parameter](AsyncApiSpex.Parameter.md): A parameter used in a channel address expression, such as `{tenant}`.

- [AsyncApiSpex.Plug.RenderSpec](AsyncApiSpex.Plug.RenderSpec.md): A Plug that serves an AsyncAPI document with the `application/asyncapi+json`
content type.
- [AsyncApiSpex.Reference](AsyncApiSpex.Reference.md): A reference to another object in the document. Encodes as `{"$ref": ref}`.

- [AsyncApiSpex.Resolver](AsyncApiSpex.Resolver.md): Extracts reusable modules into `AsyncApiSpex.Components` and replaces their
uses with `AsyncApiSpex.Reference` structs.
- [AsyncApiSpex.Schema](AsyncApiSpex.Schema.md): Declares a reusable AsyncAPI Schema Object (JSON Schema draft-07).
- [AsyncApiSpex.Server](AsyncApiSpex.Server.md): A message broker or other server the application connects to.
- [AsyncApiSpex.Spec](AsyncApiSpex.Spec.md): Behaviour for a module that returns a static AsyncAPI document.
- [AsyncApiSpex.Tag](AsyncApiSpex.Tag.md): A named tag attached to a server, channel, operation, or message.

- [AsyncApiSpex.Validator](AsyncApiSpex.Validator.md): Checks a resolved AsyncAPI document against the rules this library relies on.

## Mix Tasks

- [mix async_api_spex.gen](Mix.Tasks.AsyncApiSpex.Gen.md): Writes an AsyncAPI 3.0 document to a file.

