# `Codex.Protocol.Plugin.Interface`
[🔗](https://github.com/nshkrdotcom/codex_sdk/blob/v0.16.1/lib/codex/protocol/plugin/types.ex#L220)

Plugin presentation metadata returned on plugin summary/detail responses.

# `t`

```elixir
@type t() :: %Codex.Protocol.Plugin.Interface{
  brand_color: (String.t() | nil) | nil,
  capabilities: [String.t()],
  category: (String.t() | nil) | nil,
  composer_icon: (String.t() | nil) | nil,
  default_prompt: ([String.t()] | nil) | nil,
  developer_name: (String.t() | nil) | nil,
  display_name: (String.t() | nil) | nil,
  extra: map(),
  logo: (String.t() | nil) | nil,
  long_description: (String.t() | nil) | nil,
  privacy_policy_url: (String.t() | nil) | nil,
  screenshots: [String.t()],
  short_description: (String.t() | nil) | nil,
  terms_of_service_url: (String.t() | nil) | nil,
  website_url: (String.t() | nil) | nil
}
```

# `from_map`

```elixir
@spec from_map(map() | keyword() | t()) :: t()
```

# `parse`

```elixir
@spec parse(map() | keyword() | t()) ::
  {:ok, t()}
  | {:error,
     {:invalid_plugin_interface, CliSubprocessCore.Schema.error_detail()}}
```

# `parse!`

```elixir
@spec parse!(map() | keyword() | t()) :: t()
```

# `schema`

```elixir
@spec schema() :: Zoi.schema()
```

# `to_map`

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

---

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