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