package dto // ProviderPresetCreateDTO creates an official provider with sensible defaults. // For preset providers, base_url is derived automatically; users typically only provide api_key. type ProviderPresetCreateDTO struct { Preset string `json:"preset"` // openai | anthropic | gemini // Optional fields. Name string `json:"name"` Group string `json:"group"` Models []string `json:"models"` APIKey string `json:"api_key"` GoogleProject string `json:"google_project,omitempty"` GoogleLocation string `json:"google_location,omitempty"` Status string `json:"status"` Weight int `json:"weight,omitempty"` AutoBan *bool `json:"auto_ban,omitempty"` } // ProviderCustomCreateDTO creates an OpenAI-compatible provider. // For custom providers, base_url is required. type ProviderCustomCreateDTO struct { Name string `json:"name"` Group string `json:"group"` Models []string `json:"models"` BaseURL string `json:"base_url"` APIKey string `json:"api_key"` Status string `json:"status"` Weight int `json:"weight,omitempty"` AutoBan *bool `json:"auto_ban,omitempty"` } // ProviderGoogleCreateDTO creates a Google SDK provider (Gemini API or Vertex). // It intentionally does not require base_url. type ProviderGoogleCreateDTO struct { // Type must be a Google-family provider type, e.g.: // - gemini/google/aistudio (Gemini API) // - vertex/vertex-express (Vertex) Type string `json:"type"` // Optional fields. Name string `json:"name"` Group string `json:"group"` Models []string `json:"models"` // Gemini API APIKey string `json:"api_key,omitempty"` // Vertex GoogleProject string `json:"google_project,omitempty"` GoogleLocation string `json:"google_location,omitempty"` Status string `json:"status"` Weight int `json:"weight,omitempty"` AutoBan *bool `json:"auto_ban,omitempty"` }