# `Jido.Messaging.Onboarding.Flow`
[🔗](https://github.com/agentjido/jido_messaging/blob/v1.0.0/lib/jido_messaging/onboarding/flow.ex#L1)

Persisted onboarding flow state.

Flow state is append-only with explicit transition history and persisted
idempotency records so retries do not duplicate side effects.

# `t`

```elixir
@type t() :: %Jido.Messaging.Onboarding.Flow{
  completion_metadata: nil | nil | map(),
  directory_match: nil | nil | map(),
  idempotency: map(),
  inserted_at: %DateTime{
    calendar: term(),
    day: term(),
    hour: term(),
    microsecond: term(),
    minute: term(),
    month: term(),
    second: term(),
    std_offset: term(),
    time_zone: term(),
    utc_offset: term(),
    year: term(),
    zone_abbr: term()
  },
  onboarding_id: binary(),
  pairing: nil | nil | map(),
  request: map(),
  side_effects: [map()],
  status: :started | :directory_resolved | :paired | :completed | :cancelled,
  transitions: [map()],
  updated_at: %DateTime{
    calendar: term(),
    day: term(),
    hour: term(),
    microsecond: term(),
    minute: term(),
    month: term(),
    second: term(),
    std_offset: term(),
    time_zone: term(),
    utc_offset: term(),
    year: term(),
    zone_abbr: term()
  }
}
```

# `new`

```elixir
@spec new(map()) :: t()
```

Creates a new onboarding flow in the `:started` state.

# `schema`

Returns the Zoi schema.

---

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