/* Options: Date: 2026-11-01 21:47:25 SwiftVersion: 6.0 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.dev.dynamics.trendsic.com //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: KpiV2Request.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/v1/dashboard/kpiv2", "POST,OPTIONS") public class KpiV2Request : IReturn, Codable { public typealias Return = KpiV2Response public var fromDate:Date? public var toDate:Date? public var locationIds:[String] = [] public var includeScope:Bool? public var stateCode:String? public var compare:String? required public init(){} } public class KpiV2Response : Codable { public var responseStatus:ResponseStatus? public var stats:[DashboardStatTile] = [] public var trend:[DashboardSeries] = [] public var servicesByType:DashboardSeries? public var locationLeaderboard:[KpiV2LocationRow] = [] public var workerProductivity:[KpiV2WorkerRow] = [] public var heatmap:[KpiV2HeatPoint] = [] public var liveQueue:[KpiV2LiveRow] = [] public var scope:SvcScope? required public init(){} } public class DashboardStatTile : Codable { public var key:String? public var label:String? public var value:Double? public var previousValue:Double? public var unit:String? public var deltaPct:Double? required public init(){} } public class DashboardSeries : Codable { public var name:String? public var points:[DashboardSeriesPoint] = [] required public init(){} } public class KpiV2LocationRow : Codable { public var locationName:String? public var walkins:Int? public var completed:Int? public var avgServiceMinutes:Double? public var abandonmentPct:Double? required public init(){} } public class KpiV2WorkerRow : Codable { public var workerName:String? public var completed:Int? public var avgServiceMinutes:Double? required public init(){} } public class KpiV2HeatPoint : Codable { public var dow:Int? public var hr:Int? public var cnt:Int? required public init(){} } public class KpiV2LiveRow : Codable { public var locationName:String? public var waiting:Int? public var inProgress:Int? required public init(){} } public class SvcScope : Codable { public var stateCode:String? public var branches:[SvcBranchRow] = [] public var states:[SvcStateRow] = [] public var total:SvcMetrics? public var comparison:SvcComparison? public var feesByService:[SvcServiceRow] = [] public var byHour:[SvcHourRow] = [] public var workers:[SvcWorkerRow] = [] public var multiZone:Bool? public var multiState:Bool? public var recordingSinceUtc:Date? public var sessionsSinceUtc:Date? public var alerts:[SvcAlert] = [] public var canSeeStaff:Bool? public var canSeeFinancial:Bool? public var canSeePay:Bool? required public init(){} } public class DashboardSeriesPoint : Codable { public var label:String? public var value:Double? required public init(){} } public class SvcBranchRow : Codable { public var branchId:String? public var name:String? public var stateCode:String? public var zoneCode:String? public var timeZone:String? public var windows:Int? public var recordingSinceUtc:Date? public var sessionsSinceUtc:Date? public var metrics:SvcMetrics? required public init(){} } public class SvcStateRow : Codable { public var stateCode:String? public var stateName:String? public var branches:Int? public var metrics:SvcMetrics? required public init(){} } public class SvcMetrics : Codable { public var checkins:Int? public var walkins:Int? public var appts:Int? public var served:Int? public var noShows:Int? public var apptNoShows:Int? public var cancelledAtWindow:Int? public var abandoned:Int? public var called:Int? public var calledUp:Int? public var abandonRate:Double? public var noShowRate:Double? public var avgServiceSec:Double? public var medianServiceSec:Double? public var avgWaitSec:Double? public var maxWaitSec:Int? public var avgWalkUpSec:Double? public var expectedServiceSec:Double? public var signedSec:Int? public var servingSec:Int? public var pausedSec:Int? public var idleSec:Int? public var unstaffedSec:Int? public var utilization:Double? public var idleShare:Double? public var pausedShare:Double? public var sessions:Int? public var openDays:Int? public var feesEarned:Double? public var avgFee:Double? public var feesPerStaffedHour:Double? public var expectedFeesPerStaffedHour:Double? public var laborCost:Double? public var laborPartial:Bool? public var missingCostEmployeeIds:[String] = [] public var missingCost:[SvcNamedTime] = [] public var laborLocked:Bool? public var contribution:Double? public var lostFees:Double? public var lostNoShowFees:Double? public var mix:[String:Int] = [:] public var hourlyServed:[Int] = [] public var hourlyFees:[Double] = [] public var hourlyCost:[Double] = [] public var tints:[SvcTint] = [] required public init(){} } public class SvcComparison : Codable { public var mode:String? public var fromDate:Date? public var toDate:Date? public var cutoffMinute:Int? public var hasData:Bool? public var metrics:SvcMetrics? required public init(){} } public class SvcServiceRow : Codable { public var lineId:String? public var name:String? public var completed:Int? public var avgServiceSec:Double? public var branchAvgServiceSec:Double? public var feesEarned:Double? public var feeCurrent:Double? public var feeMin:Double? public var feeMax:Double? public var feePerMinute:Double? public var branchFeePerMinute:Double? public var feeChanges:[SvcFeeChange] = [] required public init(){} } public class SvcHourRow : Codable { public var localHour:Int? public var served:Int? public var feesEarned:Double? public var costToStaff:Double? required public init(){} } public class SvcWorkerRow : Codable { public var employeeId:String? public var branchId:String? public var branchName:String? public var name:String? public var served:Int? public var avgServiceSec:Double? public var utilization:Double? required public init(){} } public class SvcAlert : Codable { public var level:String? public var view:String? public var code:String? public var stationId:String? public var employeeId:String? public var branchId:String? public var lineId:String? public var name:String? public var otherLineId:String? public var otherName:String? public var stationIds:[String] = [] public var values:[String:Double] = [:] required public init(){} } public class SvcNamedTime : Codable { public var id:String? public var name:String? public var signedSec:Int? public var served:Int? required public init(){} } public class SvcTint : Codable { public var field:String? public var tone:String? public var reason:String? public var value:Double? public var reference:Double? public var branchValue:Double? required public init(){} } public class SvcFeeChange : Codable { public var locationId:String? public var onDate:Date? public var fromFee:Double? public var toFee:Double? required public init(){} }