Class: ActionAgent::Api::ProviderKeysController

Inherits:
BaseController show all
Defined in:
app/controllers/action_agent/api/provider_keys_controller.rb

Overview

Per-account LLM provider credentials (Settings -> Provider API Keys). API keys are write-only: responses carry a masked hint, never the key. Ollama's credential is a host URL and is echoed back in full.

Instance Method Summary collapse

Methods inherited from ActionAgent::ApplicationController

allow_unauthenticated_access

Instance Method Details

#createObject

POST /api/provider_keys — upserts the credential for a provider.



23
24
25
26
27
28
29
30
31
# File 'app/controllers/action_agent/api/provider_keys_controller.rb', line 23

def create
  provider = params.require(:provider)
  credential = params.require(:credential)

  record = owned(ProviderKey).find_or_initialize_by(provider: provider)
  record.update!(credential: credential)

  render json: { provider_key: serialize(provider, record) }, status: :created
end

#destroyObject

DELETE /api/provider_keys/:provider



34
35
36
37
# File 'app/controllers/action_agent/api/provider_keys_controller.rb', line 34

def destroy
  owned(ProviderKey).find_by!(provider: params[:provider]).destroy!
  head :no_content
end

#indexObject

GET /api/provider_keys — one row per supported provider, configured or not.



12
13
14
15
16
17
18
19
20
# File 'app/controllers/action_agent/api/provider_keys_controller.rb', line 12

def index
  configured = owned(ProviderKey).index_by(&:provider)

  render json: {
    provider_keys: ProviderKey::PROVIDERS.map do |provider|
      serialize(provider, configured[provider])
    end
  }
end