/* Options: Date: 2026-11-01 16:20:38 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.dev.dynamics.trendsic.com //GlobalNamespace: //MakePropertiesOptional: False //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: KpiV2Request.* //ExcludeTypes: //DefaultImports: */ export interface IReturn { createResponse(): T; } export class DashboardStatTile { public Key: string; public Label: string; public Value: number; public PreviousValue?: number; public Unit: string; public DeltaPct?: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class DashboardSeriesPoint { public Label: string; public Value: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class DashboardSeries { public Name: string; public Points: DashboardSeriesPoint[] = []; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class KpiV2LocationRow { public LocationName: string; public Walkins: number; public Completed: number; public AvgServiceMinutes: number; public AbandonmentPct: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class KpiV2WorkerRow { public WorkerName: string; public Completed: number; public AvgServiceMinutes: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class KpiV2HeatPoint { public Dow: number; public Hr: number; public Cnt: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class KpiV2LiveRow { public LocationName: string; public Waiting: number; public InProgress: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SvcNamedTime { public Id: string; public Name: string; public SignedSec: number; public Served: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SvcTint { public Field: string; public Tone: string; public Reason: string; public Value?: number; public Reference?: number; public BranchValue?: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SvcMetrics { public Checkins: number; public Walkins: number; public Appts: number; public Served: number; public NoShows: number; public ApptNoShows: number; public CancelledAtWindow: number; public Abandoned: number; public Called: number; public CalledUp: number; public AbandonRate?: number; public NoShowRate?: number; public AvgServiceSec?: number; public MedianServiceSec?: number; public AvgWaitSec?: number; public MaxWaitSec: number; public AvgWalkUpSec?: number; public ExpectedServiceSec?: number; public SignedSec: number; public ServingSec: number; public PausedSec: number; public IdleSec: number; public UnstaffedSec: number; public Utilization?: number; public IdleShare?: number; public PausedShare?: number; public Sessions: number; public OpenDays: number; public FeesEarned?: number; public AvgFee?: number; public FeesPerStaffedHour?: number; public ExpectedFeesPerStaffedHour?: number; public LaborCost?: number; public LaborPartial: boolean; public MissingCostEmployeeIds: string[] = []; public MissingCost: SvcNamedTime[] = []; public LaborLocked: boolean; public Contribution?: number; public LostFees?: number; public LostNoShowFees?: number; public Mix: { [index:string]: number; } = {}; public HourlyServed: number[] = []; public HourlyFees: number[] = []; public HourlyCost: number[] = []; public Tints: SvcTint[] = []; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SvcBranchRow { public BranchId: string; public Name: string; public StateCode: string; public ZoneCode: string; public TimeZone: string; public Windows: number; public RecordingSinceUtc?: string; public SessionsSinceUtc?: string; public Metrics: SvcMetrics; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SvcStateRow { public StateCode: string; public StateName: string; public Branches: number; public Metrics: SvcMetrics; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SvcComparison { public Mode: string; public FromDate?: string; public ToDate?: string; public CutoffMinute?: number; public HasData: boolean; public Metrics: SvcMetrics; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SvcFeeChange { public LocationId: string; public OnDate: string; public FromFee: number; public ToFee: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SvcServiceRow { public LineId: string; public Name: string; public Completed: number; public AvgServiceSec?: number; public BranchAvgServiceSec?: number; public FeesEarned?: number; public FeeCurrent?: number; public FeeMin?: number; public FeeMax?: number; public FeePerMinute?: number; public BranchFeePerMinute?: number; public FeeChanges: SvcFeeChange[] = []; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SvcHourRow { public LocalHour: number; public Served: number; public FeesEarned?: number; public CostToStaff?: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SvcWorkerRow { public EmployeeId: string; public BranchId: string; public BranchName: string; public Name: string; public Served: number; public AvgServiceSec?: number; public Utilization?: number; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SvcAlert { public Level: string; public View: string; public Code: string; public StationId?: string; public EmployeeId?: string; public BranchId?: string; public LineId?: string; public Name: string; public OtherLineId?: string; public OtherName: string; public StationIds: string[] = []; public Values: { [index:string]: number; } = {}; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class SvcScope { public StateCode: string; public Branches: SvcBranchRow[] = []; public States: SvcStateRow[] = []; public Total: SvcMetrics; public Comparison: SvcComparison; public FeesByService: SvcServiceRow[] = []; public ByHour: SvcHourRow[] = []; public Workers: SvcWorkerRow[] = []; public MultiZone: boolean; public MultiState: boolean; public RecordingSinceUtc?: string; public SessionsSinceUtc?: string; public Alerts: SvcAlert[] = []; public CanSeeStaff: boolean; public CanSeeFinancial: boolean; public CanSeePay: boolean; public constructor(init?: Partial) { (Object as any).assign(this, init); } } // @DataContract export class ResponseStatus { // @DataMember(Order=1) public ErrorCode: string; // @DataMember(Order=2) public Message: string; // @DataMember(Order=3) public StackTrace: string; // @DataMember(Order=4) public Errors: ResponseError[] = []; // @DataMember(Order=5) public Meta: { [index:string]: string; } = {}; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class KpiV2Response { public ResponseStatus: ResponseStatus; public Stats: DashboardStatTile[] = []; public Trend: DashboardSeries[] = []; public ServicesByType: DashboardSeries; public LocationLeaderboard: KpiV2LocationRow[] = []; public WorkerProductivity: KpiV2WorkerRow[] = []; public Heatmap: KpiV2HeatPoint[] = []; public LiveQueue: KpiV2LiveRow[] = []; public Scope: SvcScope; public constructor(init?: Partial) { (Object as any).assign(this, init); } } // @Route("/v1/dashboard/kpiv2", "POST,OPTIONS") export class KpiV2Request implements IReturn { public FromDate: string; public ToDate: string; public LocationIds: string[] = []; public IncludeScope: boolean; public StateCode: string; public Compare: string; public constructor(init?: Partial) { (Object as any).assign(this, init); } public getTypeName() { return 'KpiV2Request'; } public getMethod() { return 'POST'; } public createResponse() { return new KpiV2Response(); } }