# `Cairnloop.Auditor`
[🔗](https://github.com/szTheory/cairnloop/blob/main/lib/cairnloop/auditor.ex#L1)

Behaviour for providing host application auditing to Cairnloop.

Cairnloop uses this behaviour to achieve compliance-grade, durable auditing.
Host applications implement this behaviour to insert their own Ecto.Multi operations
to log evidence within the same database transaction.

# `audit`

```elixir
@callback audit(
  multi :: Ecto.Multi.t(),
  action :: atom(),
  actor :: map() | String.t() | nil,
  metadata :: map()
) :: Ecto.Multi.t()
```

Injects an audit log operation into an existing Ecto.Multi pipeline.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
