wacht 0.1.0-beta.5

Official Rust SDK for the Wacht platform, providing type-safe API client and authentication middleware
Documentation
use serde::{Deserialize, Serialize};

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum DeploymentStorageProvider {
    S3,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum DeploymentLlmProvider {
    Gemini,
    Openai,
    Openrouter,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum DeploymentEmbeddingProvider {
    Gemini,
    Openai,
    Openrouter,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DeploymentStorageSettingsResponse {
    pub provider: DeploymentStorageProvider,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub bucket: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub region: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub endpoint: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub root_prefix: Option<String>,
    pub force_path_style: bool,
    pub access_key_id_set: bool,
    pub secret_access_key_set: bool,
}

#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct UpdateDeploymentStorageSettingsRequest {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub provider: Option<DeploymentStorageProvider>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub bucket: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub region: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub endpoint: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub root_prefix: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub force_path_style: Option<bool>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub access_key_id: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub secret_access_key: Option<String>,
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct DeploymentAiSettings {
    pub strong_llm_provider: DeploymentLlmProvider,
    pub weak_llm_provider: DeploymentLlmProvider,
    pub gemini_api_key_set: bool,
    pub openrouter_api_key_set: bool,
    pub openrouter_require_parameters: bool,
    pub openai_api_key_set: bool,
    pub anthropic_api_key_set: bool,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub strong_model: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub weak_model: Option<String>,
    pub embedding_provider: DeploymentEmbeddingProvider,
    pub embedding_model: String,
    pub embedding_dimension: i32,
    pub storage: DeploymentStorageSettingsResponse,
}

#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct UpdateDeploymentAiSettingsRequest {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub strong_llm_provider: Option<DeploymentLlmProvider>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub weak_llm_provider: Option<DeploymentLlmProvider>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub gemini_api_key: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub openrouter_api_key: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub openrouter_require_parameters: Option<bool>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub openai_api_key: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub anthropic_api_key: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub strong_model: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub weak_model: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub embedding_provider: Option<DeploymentEmbeddingProvider>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub embedding_model: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub embedding_dimension: Option<i32>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub storage: Option<UpdateDeploymentStorageSettingsRequest>,
}