namespace GoogleApi.Models; #region Forecast Payloads /// /// Payload for KeywordForecast operation. /// Gateway sends targeting + budget; we translate to GenerateKeywordForecastMetrics. /// public sealed class KeywordForecastPayload { /// Keywords to forecast (from wizard Step 1 URL analysis) public List Keywords { get; set; } = new(); /// Geo target IDs (Google Ads geo constants) public List GeoTargetIds { get; set; } = new(); /// Monthly budget in whole currency units allocated to this channel public decimal MonthlyBudget { get; set; } /// Currency code public string CurrencyCode { get; set; } = "USD"; /// Forecast period in days (default 30) public int ForecastDays { get; set; } = 30; /// Campaign type for bid simulation public CampaignType CampaignType { get; set; } = CampaignType.Search; } /// /// Response from keyword forecast — monthly estimated metrics. /// public sealed class KeywordForecastResponse { public string Provider { get; set; } = "google"; public ForecastEstimates Monthly { get; set; } = new(); public ForecastMetrics Metrics { get; set; } = new(); public string Confidence { get; set; } = "none"; public string DataSource { get; set; } = "emulated"; } public sealed class ForecastEstimates { public double Impressions { get; set; } public double Clicks { get; set; } public decimal Cost { get; set; } public double Conversions { get; set; } public double? Reach { get; set; } } public sealed class ForecastMetrics { public decimal AvgCpc { get; set; } public decimal AvgCpm { get; set; } public double Ctr { get; set; } public decimal? EstimatedCpa { get; set; } } #endregion