# VerifiedPubSub v0.1.0 - API Reference

## Modules

- [VerifiedPubSub](VerifiedPubSub.md): Compile-time verified PubSub.

- Declaring topics
  - [VerifiedPubSub.Info](VerifiedPubSub.Info.md): The only supported way to read a manifest.
  - [VerifiedPubSub.Manifest](VerifiedPubSub.Manifest.md): Declares the topics and events of an application.
  - [VerifiedPubSub.Topic](VerifiedPubSub.Topic.md): Builds the segment of a wire topic that a param fills.

- Broadcasting and subscribing
  - [VerifiedPubSub.Api](VerifiedPubSub.Api.md): The call-site API: `subscribe/2`, `unsubscribe/2`, `topic/2`, `broadcast/4`,
`broadcast!/4`, `broadcast_from/5` and `broadcast_from!/5`.
  - [VerifiedPubSub.ManifestMismatchError](VerifiedPubSub.ManifestMismatchError.md): The error for a message that a subscriber receives from a different manifest.
  - [VerifiedPubSub.Message](VerifiedPubSub.Message.md): The struct that a subscriber receives for each verified broadcast.
  - [VerifiedPubSub.PayloadError](VerifiedPubSub.PayloadError.md): The error for a broadcast payload that does not match the shape that the manifest
declares.
  - [VerifiedPubSub.Subscriber](VerifiedPubSub.Subscriber.md): Declares that a module subscribes to topics of a manifest, and defines its
handlers.
  - [VerifiedPubSub.TopicError](VerifiedPubSub.TopicError.md): The error for a param value that cannot safely fill its segment of the wire topic.

- Internals
  - [VerifiedPubSub.Dsl](VerifiedPubSub.Dsl.md): The Spark DSL extension that `VerifiedPubSub.Manifest` uses.
  - [VerifiedPubSub.Dsl.Field](VerifiedPubSub.Dsl.Field.md): A payload field that a manifest declares.
  - [VerifiedPubSub.Dsl.Message](VerifiedPubSub.Dsl.Message.md): An event that a manifest declares on a topic.
  - [VerifiedPubSub.Dsl.Topic](VerifiedPubSub.Dsl.Topic.md): A topic that a manifest declares, with its wire segments and its events.
  - [VerifiedPubSub.Payload](VerifiedPubSub.Payload.md): Validates the payload of each broadcast against the manifest at runtime.
  - [VerifiedPubSub.Subscriber.Verify](VerifiedPubSub.Subscriber.Verify.md): Checks at compile time that a `VerifiedPubSub.Subscriber` covers each event.
  - [VerifiedPubSub.Transformers.DefinePayloadSchemas](VerifiedPubSub.Transformers.DefinePayloadSchemas.md): Defines `__verified_pubsub_fields__/2` on the manifest, with one clause for each event.
  - [VerifiedPubSub.Transformers.ParseParams](VerifiedPubSub.Transformers.ParseParams.md): Validates the segments of each topic, and finds the params in them.
  - [VerifiedPubSub.Transformers.ValidateFields](VerifiedPubSub.Transformers.ValidateFields.md): Validates the type of each declared field at compile time.
  - [VerifiedPubSub.Transformers.ValidateTopics](VerifiedPubSub.Transformers.ValidateTopics.md): Validates the topics and events of the manifest at compile time.

## Mix Tasks

- [mix verified_pubsub.install](Mix.Tasks.VerifiedPubsub.Install.md): Installs VerifiedPubSub into a project.

