namespace Creative.Configuration; /// /// Configuration for the Creative service. /// Bound from appsettings.json section "Creative". /// Override via environment variables: Creative__OpenAiApiKey, etc. /// public class CreativeConfig { public const string SectionName = "Creative"; /// /// When false, returns emulated/mock creative assets. /// When true, calls OpenAI and performs real URL scraping. /// public bool EnableRealApi { get; set; } = false; /// /// OpenAI API key for copy generation. /// public string? OpenAiApiKey { get; set; } /// /// OpenAI model to use. Default: gpt-4o-mini. /// public string OpenAiModel { get; set; } = "gpt-4o-mini"; /// /// Max tokens for OpenAI responses. /// public int OpenAiMaxTokens { get; set; } = 1000; /// /// Timeout in seconds for URL scraping. /// public int ScrapeTimeoutSeconds { get; set; } = 15; /// /// Timeout in seconds for OpenAI API calls. /// public int OpenAiTimeoutSeconds { get; set; } = 30; // ── Image Provider ────────────────────────────────────── /// /// Image provider: "emulated" | "unsplash" | "dalle". /// Default: emulated (placeholder images). /// public string ImageProvider { get; set; } = "emulated"; /// /// Unsplash Access Key (optional - basic search works without it, /// but rate limits are generous with a free key from unsplash.com/developers). /// public string? UnsplashAccessKey { get; set; } /// /// Number of images to return per draft. Default: 3 /// (landscape, square, portrait for responsive display ads). /// public int ImageCount { get; set; } = 3; /// /// DALL-E model to use when ImageProvider=dalle. /// Default: dall-e-3. /// public string DalleModel { get; set; } = "dall-e-3"; /// /// DALL-E image size. Default: 1024x1024. /// Options: 1024x1024, 1792x1024, 1024x1792. /// public string DalleSize { get; set; } = "1024x1024"; }