Uniform contract implemented by DripDrop channel providers.
Summary
Types
@type delivery_error() :: %{kind: error_kind(), reason: term()}
@type error_kind() :: :temporary | :permanent
Callbacks
@callback deliver(Ecto.Schema.t(), term(), Ecto.Schema.t()) :: {:ok, delivery_success()} | {:error, delivery_error()}
@callback validate_credentials(map()) :: :ok | {:error, credential_errors()}
@callback verify_signature(Ecto.Schema.t(), term()) :: :ok | {:error, term()}
@callback webhook_routes(Ecto.Schema.t()) :: [webhook_route()]