# DripDrop v0.1.0 - API Reference

## Modules

- [DripDrop](DripDrop.md): Public entry point for DripDrop.
- [DripDrop.AdapterHealth](DripDrop.AdapterHealth.md): Health-state transitions and ramp-cap math for outbound adapters.

- [DripDrop.AdapterPool](DripDrop.AdapterPool.md): Tenant-scoped sender pool used by outbound sequence versions.

- [DripDrop.AdapterPoolMember](DripDrop.AdapterPoolMember.md): Membership row connecting an adapter pool to a channel adapter.

- [DripDrop.AdapterPools](DripDrop.AdapterPools.md): Context for authoring outbound adapter pools and memberships.

- [DripDrop.AdapterPools.WDRR](DripDrop.AdapterPools.WDRR.md): Smooth weighted round-robin allocator for outbound adapter pools.
- [DripDrop.AdapterSequenceBudget](DripDrop.AdapterSequenceBudget.md): Per-adapter, per-sequence outbound send-share budget.

- [DripDrop.AdapterSequenceBudgets](DripDrop.AdapterSequenceBudgets.md): Context for managing outbound adapter sequence budgets.

- [DripDrop.Application](DripDrop.Application.md): OTP application supervisor for DripDrop runtime services.

- [DripDrop.Cache](DripDrop.Cache.md): Local Nebulex cache used for short-lived dispatch and provider state.

- [DripDrop.Channel](DripDrop.Channel.md): Uniform contract implemented by DripDrop channel providers.

- [DripDrop.ChannelAdapter](DripDrop.ChannelAdapter.md): Configures one provider implementation for a DripDrop channel.
- [DripDrop.ChannelAdapters](DripDrop.ChannelAdapters.md): Context for creating, updating, and selecting channel adapters.

- [DripDrop.Channels](DripDrop.Channels.md): Registry and lookup helpers for built-in and host-registered channel providers.

- [DripDrop.Channels.Email](DripDrop.Channels.Email.md): Email channel namespace and provider registration surface.

- [DripDrop.Channels.Email.Gmail](DripDrop.Channels.Email.Gmail.md): Gmail API email provider.
- [DripDrop.Channels.Email.Local](DripDrop.Channels.Email.Local.md): Local development email provider backed by `Swoosh.Adapters.Local`.

- [DripDrop.Channels.Email.MIME](DripDrop.Channels.Email.MIME.md): Builds simple RFC 5322 messages for direct email APIs.
- [DripDrop.Channels.Email.MailerSend](DripDrop.Channels.Email.MailerSend.md): MailerSend email provider backed by Swoosh.
- [DripDrop.Channels.Email.MailerSend.WebhookHandler](DripDrop.Channels.Email.MailerSend.WebhookHandler.md): Marker module for MailerSend webhook route dispatch.

- [DripDrop.Channels.Email.Mailgun](DripDrop.Channels.Email.Mailgun.md): Mailgun email provider backed by Swoosh.
- [DripDrop.Channels.Email.Mailgun.WebhookHandler](DripDrop.Channels.Email.Mailgun.WebhookHandler.md): Marker module for Mailgun webhook route dispatch.

- [DripDrop.Channels.Email.Ms365](DripDrop.Channels.Email.Ms365.md): Microsoft 365 email provider backed by Microsoft Graph.
- [DripDrop.Channels.Email.OAuthToken](DripDrop.Channels.Email.OAuthToken.md): Retrieves and caches host-owned OAuth access tokens for email providers.
- [DripDrop.Channels.Email.Postmark](DripDrop.Channels.Email.Postmark.md): Postmark email provider backed by Swoosh.
- [DripDrop.Channels.Email.Postmark.WebhookHandler](DripDrop.Channels.Email.Postmark.WebhookHandler.md): Marker module for Postmark webhook route dispatch.

- [DripDrop.Channels.Email.SES](DripDrop.Channels.Email.SES.md): Amazon SES email provider backed by Swoosh.
- [DripDrop.Channels.Email.SES.WebhookHandler](DripDrop.Channels.Email.SES.WebhookHandler.md): Marker module for Amazon SES SNS webhook route dispatch.

- [DripDrop.Channels.Email.SMTP](DripDrop.Channels.Email.SMTP.md): SMTP email provider backed by Swoosh.
- [DripDrop.Channels.Email.SendGrid](DripDrop.Channels.Email.SendGrid.md): SendGrid email provider backed by Swoosh.
- [DripDrop.Channels.Email.SendGrid.WebhookHandler](DripDrop.Channels.Email.SendGrid.WebhookHandler.md): Marker module for SendGrid Event Webhook route dispatch.

- [DripDrop.Channels.Email.SwooshDelivery](DripDrop.Channels.Email.SwooshDelivery.md): Shared Swoosh delivery helper for built-in email providers.
- [DripDrop.Channels.Helpers](DripDrop.Channels.Helpers.md): Shared helpers for provider implementations.

- [DripDrop.Channels.Payload](DripDrop.Channels.Payload.md): Extracts rendered provider payload data from steps.

- [DripDrop.Channels.Provider](DripDrop.Channels.Provider.md): Convenience macro and validation helpers for provider modules.

- [DripDrop.Channels.PubSub](DripDrop.Channels.PubSub.md): Phoenix PubSub channel namespace and provider registration surface.

- [DripDrop.Channels.PubSub.PhoenixPubSub](DripDrop.Channels.PubSub.PhoenixPubSub.md): Phoenix PubSub channel provider for in-app dispatch fan-out.

- [DripDrop.Channels.SMS](DripDrop.Channels.SMS.md): SMS channel namespace and provider registration surface.

- [DripDrop.Channels.SMS.AwsSns](DripDrop.Channels.SMS.AwsSns.md): Amazon SNS SMS provider.

- [DripDrop.Channels.SMS.Local](DripDrop.Channels.SMS.Local.md): Local development SMS provider.
- [DripDrop.Channels.SMS.Twilio](DripDrop.Channels.SMS.Twilio.md): Twilio SMS provider.
- [DripDrop.Channels.SMS.Twilio.WebhookHandler](DripDrop.Channels.SMS.Twilio.WebhookHandler.md): Marker module for Twilio messaging status webhook route dispatch.

- [DripDrop.Channels.Slack](DripDrop.Channels.Slack.md): Slack channel namespace and provider registration surface.

- [DripDrop.Channels.Slack.Webhook](DripDrop.Channels.Slack.Webhook.md): Slack incoming-webhook channel provider.

- [DripDrop.Channels.Telegram](DripDrop.Channels.Telegram.md): Telegram channel namespace and provider registration surface.

- [DripDrop.Channels.Telegram.BotAPI](DripDrop.Channels.Telegram.BotAPI.md): Telegram Bot API channel provider for sending chat messages.

- [DripDrop.Channels.Webhook](DripDrop.Channels.Webhook.md): Generic webhook channel namespace and provider registration surface.

- [DripDrop.Channels.Webhook.Default](DripDrop.Channels.Webhook.Default.md): Generic signed HTTP webhook channel provider.

- [DripDrop.Channels.Webhook.Signer](DripDrop.Channels.Webhook.Signer.md): Signature signing and verification per the Standard Webhooks spec.
- [DripDrop.Channels.Webhook.Standard](DripDrop.Channels.Webhook.Standard.md): Builds Standard Webhooks request payloads and signature headers.

- [DripDrop.Channels.WhatsApp](DripDrop.Channels.WhatsApp.md): WhatsApp channel namespace and provider registration surface.

- [DripDrop.Channels.WhatsApp.CloudAPI](DripDrop.Channels.WhatsApp.CloudAPI.md): WhatsApp Cloud API channel provider for sending templated or text messages.

- [DripDrop.Clock](DripDrop.Clock.md): Centralized UTC clock helpers.
- [DripDrop.Concurrency.AdapterLock](DripDrop.Concurrency.AdapterLock.md): Per-adapter Postgres transaction-scoped advisory lock for outbound dispatch.
- [DripDrop.Condition](DripDrop.Condition.md): Runtime condition attached to a step or branch transition.

- [DripDrop.Conditions.Predicate](DripDrop.Conditions.Predicate.md): Predicate parsing and evaluation for condition rules.

- [DripDrop.Config](DripDrop.Config.md): Small configuration helpers used across DripDrop.

- [DripDrop.DBHelpers](DripDrop.DBHelpers.md): Small helpers for crossing raw SQL and Ecto schema boundaries.
- [DripDrop.Dispatch](DripDrop.Dispatch.md): Dispatch administration helpers.

- [DripDrop.Dispatch.Concurrency](DripDrop.Dispatch.Concurrency.md): Limits in-flight dispatches by channel and adapter.
- [DripDrop.Dispatch.Idempotency](DripDrop.Dispatch.Idempotency.md): Builds deterministic idempotency keys for step execution scheduling.

- [DripDrop.Dispatch.Steps](DripDrop.Dispatch.Steps.md): Creates and enqueues step execution rows for enrollments.

- [DripDrop.Encrypted.Map](DripDrop.Encrypted.Map.md): Cloak Ecto type for maps encrypted with `DripDrop.Vault`.

- [DripDrop.Enrollment](DripDrop.Enrollment.md): A subscriber's lifecycle through a sequence.

- [DripDrop.Enrollments](DripDrop.Enrollments.md): Enrollment lifecycle context.

- [DripDrop.Event](DripDrop.Event.md): Host or subscriber event used to trigger event-timed sequence steps.

- [DripDrop.Helpers](DripDrop.Helpers.md): Shared helpers for data shaping, module resolution, and small parsing tasks.
- [DripDrop.HookBehavior](DripDrop.HookBehavior.md): Behaviour for host-defined Elixir hooks invoked during dispatch.

- [DripDrop.Hooks.Evaluator](DripDrop.Hooks.Evaluator.md): Evaluates Elixir module hooks and HTTP hooks with bounded runtime.

- [DripDrop.Hooks.URLGuard](DripDrop.Hooks.URLGuard.md): Validates outbound HTTP hook URLs to mitigate SSRF.
- [DripDrop.HttpHook](DripDrop.HttpHook.md): Stores an HTTP hook that sequence conditions can call during dispatch.
- [DripDrop.HttpHooks](DripDrop.HttpHooks.md): Context for HTTP hooks.

- [DripDrop.Inbound](DripDrop.Inbound.md): Host-callable inbound email ingestion.

- [DripDrop.Ingest](DripDrop.Ingest.md): Normalizes verified provider webhooks into DripDrop message events.
- [DripDrop.Ingest.Correlation](DripDrop.Ingest.Correlation.md): Shared message-event correlation queries.

- [DripDrop.Jobs.CronTick](DripDrop.Jobs.CronTick.md): Seeds due cron-driven steps on each scheduler tick.

- [DripDrop.Jobs.DispatchStep](DripDrop.Jobs.DispatchStep.md): Executes one scheduled step through policy, rendering, delivery, and transition handling.

- [DripDrop.MessageEvent](DripDrop.MessageEvent.md): A normalized provider event emitted after delivery or inbound webhook ingest.
- [DripDrop.Migration](DripDrop.Migration.md): Versioned DripDrop schema migrations for host applications.

- [DripDrop.Migrations.V01](DripDrop.Migrations.V01.md): Initial DripDrop schema migration registered with EctoEvolver.

- [DripDrop.MixHelpers](DripDrop.MixHelpers.md): Shared helpers for DripDrop Mix tasks.

- [DripDrop.OnReply](DripDrop.OnReply.md): Default reply handler for inbound provider events.
- [DripDrop.Policy.AdapterHealthCheck](DripDrop.Policy.AdapterHealthCheck.md): Outbound-only dispatch gate for adapter health state.

- [DripDrop.Policy.AdapterPause](DripDrop.Policy.AdapterPause.md): Defers dispatch when a channel adapter has been paused by the
bounce/complaint threshold checker.
- [DripDrop.Policy.BounceComplaintThresholds](DripDrop.Policy.BounceComplaintThresholds.md): Periodically pauses adapters whose rolling bounce or complaint rates cross policy limits.

- [DripDrop.Policy.Gate](DripDrop.Policy.Gate.md): First dispatch policy check.

- [DripDrop.Policy.MinGap](DripDrop.Policy.MinGap.md): Outbound-only minimum gap enforcement between sends from one adapter.

- [DripDrop.Policy.QuietHours](DripDrop.Policy.QuietHours.md): Defers dispatch outside recipient-local sending hours.

- [DripDrop.Policy.RampCap](DripDrop.Policy.RampCap.md): Outbound-only daily cap enforcement using adapter ramp state.

- [DripDrop.Policy.RateLimit](DripDrop.Policy.RateLimit.md): Defers dispatch when configured sending-rate buckets are exhausted.

- [DripDrop.Policy.RateLimit.Backend](DripDrop.Policy.RateLimit.Backend.md): Behaviour for rate-limit backends used by the messaging policy gate.

- [DripDrop.Policy.RateLimit.Postgres](DripDrop.Policy.RateLimit.Postgres.md): Postgres-backed rate-limit backend using advisory transaction locks.
- [DripDrop.Policy.SendingRules](DripDrop.Policy.SendingRules.md): Applies optional per-step and per-adapter sending controls.
- [DripDrop.Policy.SubCap](DripDrop.Policy.SubCap.md): Outbound-only per-sequence share cap for a pinned adapter.

- [DripDrop.Policy.UnsubscribeHeaders](DripDrop.Policy.UnsubscribeHeaders.md): Adds RFC 8058 one-click unsubscribe headers when a step opts in.

- [DripDrop.Recipients](DripDrop.Recipients.md): Normalizes channel recipient identifiers for matching and policy checks.
- [DripDrop.Redact](DripDrop.Redact.md): Redacts secrets from values before they are persisted to audit snapshots.
- [DripDrop.Repo](DripDrop.Repo.md): Thin delegating wrapper around the host-configured DripDrop repo.
- [DripDrop.Scheduler](DripDrop.Scheduler.md): Behaviour for scheduling DripDrop step executions.

- [DripDrop.Schedulers.Oban](DripDrop.Schedulers.Oban.md): Scheduler adapter for host applications that use Oban.

- [DripDrop.Schedulers.Pgflow](DripDrop.Schedulers.Pgflow.md): Scheduler adapter backed by PgFlow.

- [DripDrop.Schedulers.Test](DripDrop.Schedulers.Test.md): In-memory scheduler adapter used by the DripDrop test suite.

- [DripDrop.Sequence](DripDrop.Sequence.md): Sequence definition shared by one or more immutable versions.

- [DripDrop.SequenceAuthoring](DripDrop.SequenceAuthoring.md): Public authoring API for sequences, versions, steps, transitions, and conditions.

- [DripDrop.SequenceVersion](DripDrop.SequenceVersion.md): Immutable authoring version for a sequence.

- [DripDrop.ShortLink](DripDrop.ShortLink.md): Persisted audit row for a URL rewritten through the short-link pipeline.

- [DripDrop.ShortLinks](DripDrop.ShortLinks.md): Context for persisted short-link records.
- [DripDrop.ShortLinks.Adapter](DripDrop.ShortLinks.Adapter.md): Behaviour implemented by short-link providers.

- [DripDrop.ShortLinks.Config](DripDrop.ShortLinks.Config.md): Resolves effective short-link configuration.

- [DripDrop.ShortLinks.GoodAnalytics](DripDrop.ShortLinks.GoodAnalytics.md): Short-link adapter for in-process GoodAnalytics integration.

- [DripDrop.ShortLinks.Module](DripDrop.ShortLinks.Module.md): Delegates short-link creation to a host-provided Elixir module.

- [DripDrop.ShortLinks.None](DripDrop.ShortLinks.None.md): Short-link adapter that leaves destination URLs unchanged.

- [DripDrop.ShortLinks.Pipeline](DripDrop.ShortLinks.Pipeline.md): Rewrites payload URLs through the configured short-link provider.

- [DripDrop.ShortLinks.Request](DripDrop.ShortLinks.Request.md): Provider-neutral request for creating a short link.

- [DripDrop.ShortLinks.Result](DripDrop.ShortLinks.Result.md): Provider-neutral result from creating a short link.

- [DripDrop.ShortLinks.Webhook](DripDrop.ShortLinks.Webhook.md): Short-link adapter that calls a host-owned HTTP endpoint.

- [DripDrop.StartupCheck](DripDrop.StartupCheck.md): Validates host configuration before DripDrop starts dispatching messages.

- [DripDrop.Step](DripDrop.Step.md): A sequence step with channel, timing, and template configuration.

- [DripDrop.StepExecution](DripDrop.StepExecution.md): A scheduled or completed attempt to run one step for one enrollment.

- [DripDrop.StepTransition](DripDrop.StepTransition.md): Explicit edge between steps, or from sequence entry / to completion.

- [DripDrop.Suppression](DripDrop.Suppression.md): A normalized do-not-send record for a channel recipient.

- [DripDrop.Suppressions](DripDrop.Suppressions.md): Normalize, create, and query channel suppressions.

- [DripDrop.Telemetry](DripDrop.Telemetry.md): Telemetry event catalogue for DripDrop.
- [DripDrop.Templates](DripDrop.Templates.md): Public template helpers.

- [DripDrop.Templates.Renderer](DripDrop.Templates.Renderer.md): Renders templates and validates channel payload shapes.

- [DripDrop.Templates.Spintax](DripDrop.Templates.Spintax.md): Deterministic spintax rendering for optional template variation.

- [DripDrop.Templates.Validators](DripDrop.Templates.Validators.md): Channel-specific rendered payload validators.

- [DripDrop.Templates.Variables](DripDrop.Templates.Variables.md): Builds the template variable scope used during dispatch.

- [DripDrop.TenantScope](DripDrop.TenantScope.md): Helpers for enforcing explicit tenant scope on query APIs.
- [DripDrop.Threading](DripDrop.Threading.md): Outbound email threading header generation.

- [DripDrop.Timing](DripDrop.Timing.md): Embedded timing configuration for sequence steps.

- [DripDrop.UnsubscribeToken](DripDrop.UnsubscribeToken.md): Signs and verifies one-click unsubscribe tokens.

- [DripDrop.Vault](DripDrop.Vault.md): Cloak vault used for encrypted DripDrop credential fields.

- [DripDrop.Web](DripDrop.Web.md): Webhook route helpers for host applications.
- [DripDrop.Web.Router](DripDrop.Web.Router.md): Router macro for mounting DripDrop provider webhooks.
- [DripDrop.Web.UnsubscribePlug](DripDrop.Web.UnsubscribePlug.md): Handles RFC 8058 one-click unsubscribe URLs generated by DripDrop.

- [DripDrop.Web.WebhookPlug](DripDrop.Web.WebhookPlug.md): Framework-neutral Plug for provider webhook ingestion.
- [DripDrop.WebhookRequest](DripDrop.WebhookRequest.md): Normalizes provider webhook request access for signature verification.

## Mix Tasks

- [mix dripdrop.check_schema](Mix.Tasks.Dripdrop.CheckSchema.md): Verifies that the configured database has the current DripDrop schema version.

- [mix dripdrop.gen.migration](Mix.Tasks.Dripdrop.Gen.Migration.md): Generates a host migration that applies pending DripDrop schema upgrades.
- [mix dripdrop.setup](Mix.Tasks.Dripdrop.Setup.md): Generates a wrapper migration in the host app that calls `DripDrop.Migration`.

- [mix dripdrop.uninstall](Mix.Tasks.Dripdrop.Uninstall.md): Prints the SQL needed to remove DripDrop database objects.

