# async_api_spex v0.2.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.Plug.Viewer](AsyncApiSpex.Plug.Viewer.md): A Plug that serves an HTML page rendering an AsyncAPI document in the browser with the [AsyncAPI React component](https://github.com/asyncapi/asyncapi-react): servers, channels, operations, messages, and schemas. - [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.