/* Options: Date: 2025-08-05 01:58:45 SwiftVersion: 5.0 Version: 8.0 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://www.asg.com.au/RestApi //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: MapDataRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/Sitefinity/Analytics/GetMapData") // @Route("/GetMapData") public class MapDataRequest : IReturn, Codable { public typealias Return = GetDashboardData public var dashboardId:String public var relatedDashboardId:String public var metrics:[MetricItemDTO] = [] public var filter:String public var dimension:Dimension public var jsStartDate:String public var jsEndDate:String public var selectedMetric:String public var region:String public var siteId:String public var startDate:Date public var endDate:Date required public init(){} } public class GetDashboardData : Codable { public var controls:[DashBoardControl] = [] public var layoutTemplateName:String public var groupBy:String public var metricNames:[MetricItemDTO] = [] public var errorMessage:String public var needsGrouping:Bool public var isDrillDown:Bool public var dateItems:[KendoItem] = [] public var nonDateItems:[KendoItem] = [] public var totalsItem:KendoItem public var mapDataTable:[[String]] = [] public var isMapRequest:Bool public var seriesSources:[String:[String]] = [:] public var statusCode:Int public var suppressMultipleSeries:Bool required public init(){} } public class MetricItemDTO : Codable { public var name:String public var displayName:String public var value:Double public var unit:String public var denominatorMetricName:String public var nominatorMetricName:String public var showInSelector:Bool required public init(){} } public enum Dimension : String, Codable { case Browser case BrowserVersion case City case Continent case VisitCount case Country case Date case Day case DaysSinceLastSession case FlashVersion case Hostname case Hour case DeviceCategory case JavaEnabled case Language case Latitude case Longitude case Month case NetworkDomain case NetworkLocation case PageDepth case OperatingSystem case OperatingSystemVersion case Region case ScreenColors case ScreenResolution case SubContinent case UserDefinedValue case UserType case Week case Year case AdContent case AdGroup case AdSlot case Campaign case Keyword case Medium case ReferralPath case Source case ExitPagePath case LandingPagePath case PagePath case PageTitle case Affiliation case DaysToTransaction case ProductCategory case ProductName case ProductSku case TransactionId case SearchCategory case SearchDestinationPage case SearchKeyword case SearchKeywordRefinement case SearchStartPage case SearchUsed case EventCategory case EventAction case EventLabel } public class DashBoardControl : Codable { public var controlType:String public var attributes:[String:String] = [:] public var placeholderId:String public var displayName:String public var series:[SingleSerie] = [] public var dimensionName:String public var relatedDimension:[String] = [] public var sortbyField:String public var sortAsc:Bool required public init(){} } public class KendoItem : Codable { public var category:String public var values:[String:Double] = [:] public var group:String public var tooltip:String public var dimensions:[String:String] = [:] required public init(){} } // @DataContract public class DimensionItem : Codable { // @DataMember public var value:String // @DataMember public var name:String required public init(){} } public class SingleSerie : Codable { public var mainMetric:MetricItemDTO public var categoryFormat:String public var batch:Bool public var isCategory:Bool public var seriesName:String public var seriesDimensions:[DimensionItem] = [] public var relatedDimension:String required public init(){} }