Current section

Files

Jump to
opencode_sdk lib opencode generated provider.ex
Raw

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.ProviderAuthError1.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.ProviderAuthError1, :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.ProviderAuthError1.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.ProviderAuthError1, :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