Files
AdPlatform-Server/GoogleApi/Models/OperationPayloads.cs
2026-03-14 13:50:09 -07:00

107 lines
2.5 KiB
C#

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 Account Payloads
public sealed class CreateCustomerClientPayload
{
/// <summary>Display name for the new sub-account (used for billing reconciliation)</summary>
public string AccountName { get; set; } = string.Empty;
/// <summary>Currency code (e.g. "USD")</summary>
public string CurrencyCode { get; set; } = "USD";
/// <summary>Time zone (e.g. "America/Los_Angeles")</summary>
public string TimeZone { get; set; } = "America/Los_Angeles";
/// <summary>Optional descriptive name visible in MCC (defaults to AccountName)</summary>
public string? DescriptiveName { 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