107 lines
2.5 KiB
C#
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
|