namespace GoogleApi.Models; /// /// Represents an audience segment from Google Ads (affinity, in-market, life events, etc.) /// public class AudienceSegment { public long Id { get; set; } public string Name { get; set; } = string.Empty; public string Type { get; set; } = string.Empty; // AFFINITY, IN_MARKET, LIFE_EVENT, DETAILED_DEMOGRAPHIC public string? ParentName { get; set; } public int? ParentId { get; set; } } /// /// Response containing all available audience segments /// public class AudienceSegmentsResponse { public List Affinity { get; set; } = new(); public List InMarket { get; set; } = new(); public List LifeEvents { get; set; } = new(); public List DetailedDemographics { get; set; } = new(); public int TotalCount => Affinity.Count + InMarket.Count + LifeEvents.Count + DetailedDemographics.Count; public DateTimeOffset RetrievedAt { get; set; } = DateTimeOffset.UtcNow; } /// /// Geo target constant for location targeting /// public class GeoTarget { public long Id { get; set; } public string Name { get; set; } = string.Empty; public string CanonicalName { get; set; } = string.Empty; public string TargetType { get; set; } = string.Empty; // City, State, Country, etc. public string? CountryCode { get; set; } public string? ParentGeoTarget { get; set; } } /// /// Response for geo target search /// public class GeoTargetSearchResponse { public List Results { get; set; } = new(); public string Query { get; set; } = string.Empty; } /// /// Payload for searching geo targets /// public class GeoTargetSearchPayload { public string Query { get; set; } = string.Empty; public string? CountryCode { get; set; } public int MaxResults { get; set; } = 20; }