# `WardrikOAuth.Flow`

A process for one sign-in under way. It ends when the principal finishes, or after 15 minutes.

# `begin`

```elixir
@spec begin(map(), WardrikOAuth.Provider.t(), WardrikCore.Principal.t()) ::
  {:authorize, String.t()} | {:error, term()}
```

Returns the sign-in URL for `provider` and `principal`, starting a flow if none is running.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `describe`

```elixir
@spec describe(pid()) :: map()
```

Describes the flow, for a page or CLI to show.

# `finish`

```elixir
@spec finish(pid(), map()) :: {:ok, String.t()} | {:error, term()}
```

Finishes a browser flow with its callback's params.

---

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