# `Ash.Resource.ManualDestroy`
[🔗](https://github.com/ash-project/ash/blob/v3.23.1/lib/ash/resource/manual_actions/manual_destroy.ex#L5)

A module to implement manual destroy actions.

Note that in the returns of these functions you must return the destroyed record or records.

# `bulk_destroy`
*optional* 

```elixir
@callback bulk_destroy(
  changesets :: Enumerable.t(Ash.Changeset.t()),
  opts :: Keyword.t(),
  context :: Ash.Resource.ManualDestroy.Context.t()
) :: [
  :ok
  | {:ok, Ash.Resource.record()}
  | {:ok, Ash.Resource.record(),
     %{notifications: [Ash.Notifier.Notification.t()]}}
  | {:ok, Ash.Resource.record(), [Ash.Notifier.Notification.t()]}
  | {:error, Ash.Error.t()}
  | {:notifications, [Ash.Notifier.Notification.t()]}
]
```

# `destroy`

```elixir
@callback destroy(
  changeset :: Ash.Changeset.t(),
  opts :: Keyword.t(),
  context :: Ash.Resource.ManualDestroy.Context.t()
) ::
  {:ok, Ash.Resource.record()}
  | {:ok, Ash.Resource.record(), [Ash.Notifier.Notification.t()]}
  | {:error, term()}
```

---

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