# `OpenCode.Generated.Provider`
[🔗](https://github.com/UtkarshUsername/opencode-sdk-elixir/blob/v0.1.84/lib/opencode/generated/provider.ex#L1)

Provides API endpoints related to provider

# `provider_list_200_json_resp`

```elixir
@type provider_list_200_json_resp() :: %{
  all: [t()],
  connected: [String.t()],
  default: map()
}
```

# `t`

```elixir
@type t() :: %OpenCode.Generated.Provider{
  env: [String.t()],
  id: String.t(),
  key: String.t() | nil,
  models: map(),
  name: String.t(),
  options: map(),
  source: String.t()
}
```

# `provider_auth`

```elixir
@spec provider_auth(opts :: keyword()) ::
  {:ok, map()} | {:error, OpenCode.Generated.BadRequestError.t()}
```

Get provider auth methods

Retrieve available authentication methods for all AI providers.

## Options

  * `directory`
  * `workspace`

# `provider_list`

```elixir
@spec provider_list(opts :: keyword()) ::
  {:ok, provider_list_200_json_resp()}
  | {:error, OpenCode.Generated.BadRequestError.t()}
```

List providers

Get a list of all available AI providers, including both available and connected ones.

## Options

  * `directory`
  * `workspace`

# `provider_oauth_authorize`

```elixir
@spec provider_oauth_authorize(
  providerID :: String.t(),
  body :: map(),
  opts :: keyword()
) ::
  {:ok, OpenCode.Generated.ProviderAuthAuthorization.t()}
  | {:error,
     OpenCode.Generated.InvalidRequestError.t()
     | OpenCode.Generated.ProviderAuthError1.t()}
```

Start OAuth authorization

Start the OAuth authorization flow for a provider.

## Options

  * `directory`
  * `workspace`

## Request Body

**Content Types**: `application/json`

# `provider_oauth_callback`

```elixir
@spec provider_oauth_callback(
  providerID :: String.t(),
  body :: map(),
  opts :: keyword()
) ::
  {:ok, boolean()}
  | {:error,
     OpenCode.Generated.InvalidRequestError.t()
     | OpenCode.Generated.ProviderAuthError1.t()}
```

Handle OAuth callback

Handle the OAuth callback from a provider after user authorization.

## Options

  * `directory`
  * `workspace`

## Request Body

**Content Types**: `application/json`

---

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