# ex_ntfy v0.1.1 - Table of Contents

> An Elixir SDK for ntfy.sh — publish and subscribe to push notifications.

## Pages

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

- Guides
  - [Publishing cookbook](publishing.md)
  - [Subscriptions](subscriptions.md)
  - [Testing your app](testing.md)

## Modules

- [ExNtfy](ExNtfy.md): An Elixir SDK for [ntfy](https://ntfy.sh) — a simple HTTP-based pub-sub
notification service.

- Publishing
  - [ExNtfy.Publish.Options](ExNtfy.Publish.Options.md): Validates publish options and encodes them for ntfy's three publish shapes
  - [ExNtfy.Publisher](ExNtfy.Publisher.md): Publishing to ntfy topics — usually called through the `ExNtfy` facade.

- Polling &amp; Subscribing
  - [ExNtfy.Handler](ExNtfy.Handler.md): Behaviour for the handler consumption style of `ExNtfy.subscribe/2`.
  - [ExNtfy.Poller](ExNtfy.Poller.md): One-shot retrieval of cached messages — the `poll=1` mode of the subscribe
API (reference §2.1–§2.2). Usually called through the `ExNtfy` facade.
  - [ExNtfy.Stream.WS](ExNtfy.Stream.WS.md): WebSocket transport for `ExNtfy.Subscription` (`format: :ws`), subscribing
via `GET /<topics>/ws` — requires the **optional** `:mint_web_socket`
dependency
  - [ExNtfy.Subscribe.Options](ExNtfy.Subscribe.Options.md): Validates subscribe options and builds subscribe URLs — shared
infrastructure for one-shot polling (`ExNtfy.poll/2`, Phase 5) and the
Phase 6 streaming subscriptions, which call `path/2` with a stream format
and `to_query/1` without `poll=1`.
  - [ExNtfy.Subscription](ExNtfy.Subscription.md): A long-lived subscription to ntfy topics — a GenServer owning one streaming
HTTP connection, with automatic reconnect (resuming via `since=<last id>`),
a keepalive watchdog, and two consumption styles.

- Types
  - [ExNtfy.Action](ExNtfy.Action.md): An ntfy action button.
  - [ExNtfy.Attachment](ExNtfy.Attachment.md): An attachment on a received ntfy message.
  - [ExNtfy.Error](ExNtfy.Error.md): The error type for all ExNtfy failures.
  - [ExNtfy.Message](ExNtfy.Message.md): A received ntfy message — the JSON schema shared by publish responses and
subscribe events.

- Client &amp; Config
  - [ExNtfy.Client](ExNtfy.Client.md): Req-based HTTP client for the ntfy API.
  - [ExNtfy.Config](ExNtfy.Config.md): Resolves client configuration with a fixed precedence:
per-call options override application config (`config :ex_ntfy, ...`),
which overrides library defaults.

