Packages
opencode_sdk
0.1.62
0.1.84
0.1.83
0.1.82
0.1.81
0.1.80
0.1.79
0.1.78
0.1.77
0.1.76
0.1.75
0.1.74
0.1.73
0.1.72
0.1.71
0.1.70
0.1.69
0.1.68
0.1.67
0.1.66
0.1.65
0.1.64
0.1.63
0.1.62
0.1.61
0.1.60
0.1.59
0.1.58
0.1.57
0.1.56
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.48
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.41
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Unofficial OpenCode SDK for Elixir. A complete Elixir SDK for OpenCode, providing server creation, session management, messaging, file operations, and more. Mirrors the functionality of the official JavaScript SDK (@opencode-ai/sdk). Not affiliated with or built by the OpenCode team.
Current section
Files
Jump to
Current section
Files
lib/opencode/generated/provider.ex
defmodule OpenCode.Generated.Provider do
@moduledoc """
Provides API endpoints related to provider
"""
@default_client OpenCode.Client
@doc """
Get provider auth methods
Retrieve available authentication methods for all AI providers.
## Options
* `directory`
* `workspace`
"""
@spec provider_auth(opts :: keyword) :: {:ok, map} | :error
def provider_auth(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Provider, :provider_auth},
url: "/provider/auth",
method: :get,
query: query,
response: [{200, :map}],
opts: opts
})
end
@type provider_list_200_json_resp :: %{
all: [OpenCode.Generated.Provider.t()],
connected: [String.t()],
default: map
}
@doc """
List providers
Get a list of all available AI providers, including both available and connected ones.
## Options
* `directory`
* `workspace`
"""
@spec provider_list(opts :: keyword) ::
{:ok, OpenCode.Generated.Provider.provider_list_200_json_resp()} | :error
def provider_list(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.Provider, :provider_list},
url: "/provider",
method: :get,
query: query,
response: [{200, {OpenCode.Generated.Provider, :provider_list_200_json_resp}}],
opts: opts
})
end
@doc """
Start OAuth authorization
Start the OAuth authorization flow for a provider.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec provider_oauth_authorize(providerID :: String.t(), body :: map, opts :: keyword) ::
{:ok, OpenCode.Generated.ProviderAuthAuthorization.t()}
| {:error, OpenCode.Generated.BadRequestError.t()}
def provider_oauth_authorize(providerID, body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [providerID: providerID, body: body],
call: {OpenCode.Generated.Provider, :provider_oauth_authorize},
url: "/provider/#{providerID}/oauth/authorize",
body: body,
method: :post,
query: query,
request: [{"application/json", :map}],
response: [
{200, {OpenCode.Generated.ProviderAuthAuthorization, :t}},
{400, {OpenCode.Generated.BadRequestError, :t}}
],
opts: opts
})
end
@doc """
Handle OAuth callback
Handle the OAuth callback from a provider after user authorization.
## Options
* `directory`
* `workspace`
## Request Body
**Content Types**: `application/json`
"""
@spec provider_oauth_callback(providerID :: String.t(), body :: map, opts :: keyword) ::
{:ok, boolean} | {:error, OpenCode.Generated.BadRequestError.t()}
def provider_oauth_callback(providerID, body, opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [providerID: providerID, body: body],
call: {OpenCode.Generated.Provider, :provider_oauth_callback},
url: "/provider/#{providerID}/oauth/callback",
body: body,
method: :post,
query: query,
request: [{"application/json", :map}],
response: [{200, :boolean}, {400, {OpenCode.Generated.BadRequestError, :t}}],
opts: opts
})
end
@type t :: %__MODULE__{
env: [String.t()],
id: String.t(),
key: String.t() | nil,
models: map,
name: String.t(),
options: map,
source: String.t()
}
defstruct [:env, :id, :key, :models, :name, :options, :source]
@doc false
@spec __fields__(atom) :: keyword
def __fields__(type \\ :t)
def __fields__(:provider_list_200_json_resp) do
[all: [{OpenCode.Generated.Provider, :t}], connected: [:string], default: :map]
end
def __fields__(:t) do
[
env: [:string],
id: :string,
key: :string,
models: :map,
name: :string,
options: :map,
source: {:enum, ["env", "config", "custom", "api"]}
]
end
end