using System.Text.Json.Serialization; namespace GoogleApi.Models; #region Campaign Payloads public sealed class CreateCampaignPayload { public string Name { get; set; } = string.Empty; public CampaignType Type { get; set; } = CampaignType.Search; public long BudgetMicros { get; set; } public BiddingStrategy BiddingStrategy { get; set; } = BiddingStrategy.MaximizeClicks; public string? StartDate { get; set; } public string? EndDate { get; set; } } public sealed class GetCampaignPayload { public string CampaignId { get; set; } = string.Empty; } public sealed class UpdateCampaignPayload { public string CampaignId { get; set; } = string.Empty; public string? Name { get; set; } public long? BudgetMicros { get; set; } public CampaignStatus? Status { get; set; } } public sealed class ListCampaignsPayload { public CampaignStatus? StatusFilter { get; set; } public int PageSize { get; set; } = 50; public string? PageToken { get; set; } } #endregion #region Reporting Payloads public sealed class CampaignStatsPayload { public string CampaignId { get; set; } = string.Empty; public string? StartDate { get; set; } public string? EndDate { get; set; } } public sealed class AccountStatsPayload { public string? StartDate { get; set; } public string? EndDate { get; set; } } #endregion #region Enums [JsonConverter(typeof(JsonStringEnumConverter))] public enum CampaignStatus { Unknown = 0, Enabled = 1, Paused = 2, Removed = 3 } [JsonConverter(typeof(JsonStringEnumConverter))] public enum CampaignType { Search = 0, Display = 1, Shopping = 2, Video = 3, PerformanceMax = 4 } [JsonConverter(typeof(JsonStringEnumConverter))] public enum BiddingStrategy { ManualCpc = 0, MaximizeClicks = 1, MaximizeConversions = 2, TargetCpa = 3, TargetRoas = 4 } #endregion