langfuse-client-base 0.12.0

Auto-generated Langfuse API client from OpenAPI specification
Documentation
/*
 * langfuse
 *
 * ## Authentication  Authenticate with the API using [Basic Auth](https://en.wikipedia.org/wiki/Basic_access_authentication), get API keys in the project settings:  - username: Langfuse Public Key - password: Langfuse Secret Key  ## Exports  - OpenAPI spec: https://cloud.langfuse.com/generated/api/openapi.yml
 *
 * The version of the OpenAPI document:
 *
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// UpsertLlmConnectionRequest : Request to create or update an LLM connection (upsert)
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, bon::Builder)]
pub struct UpsertLlmConnectionRequest {
    /// Provider name (e.g., 'openai', 'my-gateway'). Must be unique in project, used for upserting.
    #[serde(rename = "provider")]
    pub provider: String,
    #[serde(rename = "adapter")]
    pub adapter: models::LlmAdapter,
    /// Secret key for the LLM API.
    #[serde(rename = "secretKey")]
    pub secret_key: String,
    /// Custom base URL for the LLM API
    #[serde(
        rename = "baseURL",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub base_url: Option<Option<String>>,
    /// List of custom model names
    #[serde(
        rename = "customModels",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub custom_models: Option<Option<Vec<String>>>,
    /// Whether to include default models. Default is true.
    #[serde(
        rename = "withDefaultModels",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub with_default_models: Option<Option<bool>>,
    /// Extra headers to send with requests
    #[serde(
        rename = "extraHeaders",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub extra_headers: Option<Option<std::collections::HashMap<String, String>>>,
    /// Adapter-specific configuration. Validation rules: - **Bedrock**: Required. Must be `{\"region\": \"<aws-region>\"}` (e.g., `{\"region\":\"us-east-1\"}`) - **VertexAI**: Optional. If provided, must be `{\"location\": \"<gcp-location>\"}` (e.g., `{\"location\":\"us-central1\"}`) - **Other adapters**: Not supported. Omit this field or set to null.
    #[serde(
        rename = "config",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub config: Option<Option<std::collections::HashMap<String, serde_json::Value>>>,
}

impl UpsertLlmConnectionRequest {
    /// Request to create or update an LLM connection (upsert)
    pub fn new(
        provider: String,
        adapter: models::LlmAdapter,
        secret_key: String,
    ) -> UpsertLlmConnectionRequest {
        UpsertLlmConnectionRequest {
            provider,
            adapter,
            secret_key,
            base_url: None,
            custom_models: None,
            with_default_models: None,
            extra_headers: None,
            config: None,
        }
    }
}