# `OpenUI.ActionPlan`
[🔗](https://github.com/ideia4it/openui/blob/v0.1.1/lib/openui/action_plan.ex#L1)

The actions a component triggers, in order (language.md, section 6.3).

A step is one of:

  * `{:run, statement_id, :query | :mutation}`
  * `{:to_assistant, message, context}` (`context` is `nil` when absent)
  * `{:open_url, url}`
  * `{:set, "$name", expression}`, evaluated when the action runs
  * `{:reset, ["$name"]}`
  * `{:custom, name, params}` for an action of the library

# `step`

```elixir
@type step() ::
  {:run, String.t(), :query | :mutation}
  | {:to_assistant, String.t(), term()}
  | {:open_url, String.t()}
  | {:set, String.t(), OpenUI.Parser.Expression.ast()}
  | {:reset, [String.t()]}
  | {:custom, String.t(), %{required(String.t()) =&gt; term()}}
```

# `t`

```elixir
@type t() :: %OpenUI.ActionPlan{steps: [step()]}
```

---

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