# `Ash.Reactor.Dsl.AshStep`
[🔗](https://github.com/ash-project/ash/blob/v3.23.1/lib/ash/reactor/dsl/ash_step.ex#L5)

The ash_step DSL module.

See `d:Reactor.step`.

# `t`

```elixir
@type t() :: %Ash.Reactor.Dsl.AshStep{
  __identifier__: any(),
  __spark_metadata__: Spark.Dsl.Entity.spark_meta(),
  arguments: [Reactor.Dsl.Argument.t()],
  async?: boolean(),
  compensate:
    nil
    | (any(), Reactor.inputs(), Reactor.context() -&gt;
         :ok | :retry | {:continue, any()}),
  guards: [Reactor.Guard.Build.t()],
  impl: nil | module() | {module(), keyword()},
  max_retries: non_neg_integer() | :infinity,
  name: atom(),
  run:
    nil
    | (Reactor.inputs(), Reactor.context() -&gt;
         {:ok, any()}
         | {:ok, any(), [Reactor.Step.t()]}
         | {:halt | :error, any()}),
  transform: nil | (any() -&gt; any()),
  undo:
    nil
    | (any(), Reactor.inputs(), Reactor.context() -&gt;
         :ok | :retry | {:error, any()})
}
```

---

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