# `Kino.Workspace`
[🔗](https://github.com/livebook-dev/kino/blob/v0.19.0/lib/kino/workspace.ex#L1)

Functions related to workspace integrations and Livebook apps.

# `app_info`

```elixir
@type app_info() ::
  %{type: :single}
  | %{type: :none}
  | %{
      :type =&gt; :multi_session,
      optional(:started_by) =&gt; user_info(),
      optional(:session_params) =&gt; map()
    }
```

# `user_info`

```elixir
@type user_info() :: %{
  id: String.t(),
  name: String.t() | nil,
  email: String.t() | nil,
  source: atom(),
  payload: map() | nil
}
```

# `app_info`

```elixir
@spec app_info() :: app_info()
```

Returns information about the running app.

Note that `:started_by` information is only available for multi-session
apps when the app uses a Livebook Teams workspace.

Multi-session apps can be started with `lb_*` query parameters. Those parameters
are available in `:session_params` map.

Unless called from within an app deployment, returns `%{type: :none}`.

# `user_info`

```elixir
@spec user_info(String.t()) ::
  {:ok, user_info()} | {:error, :not_found | :not_available}
```

Returns user information for the given connected client id.

Note that this information is only available when the session uses
Livebook Teams workspace, otherwise `:not_available` error is returned.

If there is no such connected client, `:not_found` error is returned.

---

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