# ExDav v0.1.0 - API Reference

## Modules

- [ExDav](ExDav.md): CalDAV server library.
- [ExDav.Authenticator](ExDav.Authenticator.md): Behaviour for CalDAV authenticators.
- [ExDav.Authenticator.Basic](ExDav.Authenticator.Basic.md): HTTP Basic authenticator. Verifies the username/password pair via a
configurable `:verify` MFA tuple `{module, function}` invoked as
`apply(module, function, [username, password])`. Returns the username
as the principal on success.
- [ExDav.CalDav.Plug](ExDav.CalDav.Plug.md): Top-level Plug that handles CalDAV requests under the `/dav` prefix.
- [ExDav.CalDav.XML](ExDav.CalDav.XML.md): XML response builders and small request parsers for the CalDAV
endpoints. Generates Multi-Status (RFC 4918) responses with the
CalDAV (RFC 4791) and CalendarServer extensions.

- [ExDav.ICal](ExDav.ICal.md): Tiny iCalendar helpers — just enough to extract the UID and primary
component (VEVENT vs VTODO) from an iCalendar object and to compute
an ETag from its serialized form.

- [ExDav.Storage](ExDav.Storage.md): Behaviour for CalDAV storage adapters.
- [ExDav.Storage.Memory](ExDav.Storage.Memory.md): In-memory implementation of `ExDav.Storage`. Backed by a single Agent
registered under the module name, for use in dev demos and tests.
- [ExDav.Storage.Postgres](ExDav.Storage.Postgres.md): Postgres-backed implementation of `ExDav.Storage`. Owns its own users,
calendars, calendar objects, and tombstones tables; the Repo module is
configured via `config :ex_dav, repo: MyApp.Repo`.
- [ExDav.Storage.Postgres.Schemas.Calendar](ExDav.Storage.Postgres.Schemas.Calendar.md): A CalDAV calendar collection owned by a user.
- [ExDav.Storage.Postgres.Schemas.Object](ExDav.Storage.Postgres.Schemas.Object.md): A single calendar resource (an event, todo, etc.).
- [ExDav.Storage.Postgres.Schemas.Tombstone](ExDav.Storage.Postgres.Schemas.Tombstone.md): Records the deletion of a calendar object for sync-collection.
- [ExDav.Storage.Postgres.Schemas.User](ExDav.Storage.Postgres.Schemas.User.md): A CalDAV principal.

