| POST,OPTIONS | /v1/dashboard/kpiv2 |
|---|
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using CRM.AgencyPlatform.API.Internal;
namespace CRM.AgencyPlatform.API.Internal
{
public partial class DashboardSeries
{
public virtual string Name { get; set; }
public virtual List<DashboardSeriesPoint> Points { get; set; } = [];
}
public partial class DashboardSeriesPoint
{
public virtual string Label { get; set; }
public virtual double Value { get; set; }
}
public partial class DashboardStatTile
{
public virtual string Key { get; set; }
public virtual string Label { get; set; }
public virtual double Value { get; set; }
public virtual double? PreviousValue { get; set; }
public virtual string Unit { get; set; }
public virtual double? DeltaPct { get; set; }
}
public partial class KpiV2HeatPoint
{
public virtual int Dow { get; set; }
public virtual int Hr { get; set; }
public virtual int Cnt { get; set; }
}
public partial class KpiV2LiveRow
{
public virtual string LocationName { get; set; }
public virtual int Waiting { get; set; }
public virtual int InProgress { get; set; }
}
public partial class KpiV2LocationRow
{
public virtual string LocationName { get; set; }
public virtual int Walkins { get; set; }
public virtual int Completed { get; set; }
public virtual double AvgServiceMinutes { get; set; }
public virtual double AbandonmentPct { get; set; }
}
public partial class KpiV2Request
{
public virtual DateTime FromDate { get; set; }
public virtual DateTime ToDate { get; set; }
public virtual List<Guid> LocationIds { get; set; } = [];
public virtual bool IncludeScope { get; set; }
public virtual string StateCode { get; set; }
public virtual string Compare { get; set; }
}
public partial class KpiV2Response
{
public virtual ResponseStatus ResponseStatus { get; set; }
public virtual List<DashboardStatTile> Stats { get; set; } = [];
public virtual List<DashboardSeries> Trend { get; set; } = [];
public virtual DashboardSeries ServicesByType { get; set; }
public virtual List<KpiV2LocationRow> LocationLeaderboard { get; set; } = [];
public virtual List<KpiV2WorkerRow> WorkerProductivity { get; set; } = [];
public virtual List<KpiV2HeatPoint> Heatmap { get; set; } = [];
public virtual List<KpiV2LiveRow> LiveQueue { get; set; } = [];
public virtual SvcScope Scope { get; set; }
}
public partial class KpiV2WorkerRow
{
public virtual string WorkerName { get; set; }
public virtual int Completed { get; set; }
public virtual double AvgServiceMinutes { get; set; }
}
public partial class SvcAlert
{
public virtual string Level { get; set; }
public virtual string View { get; set; }
public virtual string Code { get; set; }
public virtual Guid? StationId { get; set; }
public virtual Guid? EmployeeId { get; set; }
public virtual Guid? BranchId { get; set; }
public virtual Guid? LineId { get; set; }
public virtual string Name { get; set; }
public virtual Guid? OtherLineId { get; set; }
public virtual string OtherName { get; set; }
public virtual List<Guid> StationIds { get; set; } = [];
public virtual Dictionary<string, double> Values { get; set; } = new();
}
public partial class SvcBranchRow
{
public virtual Guid BranchId { get; set; }
public virtual string Name { get; set; }
public virtual string StateCode { get; set; }
public virtual string ZoneCode { get; set; }
public virtual string TimeZone { get; set; }
public virtual int Windows { get; set; }
public virtual DateTime? RecordingSinceUtc { get; set; }
public virtual DateTime? SessionsSinceUtc { get; set; }
public virtual SvcMetrics Metrics { get; set; }
}
public partial class SvcComparison
{
public virtual string Mode { get; set; }
public virtual DateTime? FromDate { get; set; }
public virtual DateTime? ToDate { get; set; }
public virtual int? CutoffMinute { get; set; }
public virtual bool HasData { get; set; }
public virtual SvcMetrics Metrics { get; set; }
}
public partial class SvcFeeChange
{
public virtual Guid LocationId { get; set; }
public virtual DateTime OnDate { get; set; }
public virtual decimal FromFee { get; set; }
public virtual decimal ToFee { get; set; }
}
public partial class SvcHourRow
{
public virtual int LocalHour { get; set; }
public virtual int Served { get; set; }
public virtual decimal? FeesEarned { get; set; }
public virtual decimal? CostToStaff { get; set; }
}
public partial class SvcMetrics
{
public virtual int Checkins { get; set; }
public virtual int Walkins { get; set; }
public virtual int Appts { get; set; }
public virtual int Served { get; set; }
public virtual int NoShows { get; set; }
public virtual int ApptNoShows { get; set; }
public virtual int CancelledAtWindow { get; set; }
public virtual int Abandoned { get; set; }
public virtual int Called { get; set; }
public virtual int CalledUp { get; set; }
public virtual double? AbandonRate { get; set; }
public virtual double? NoShowRate { get; set; }
public virtual double? AvgServiceSec { get; set; }
public virtual double? MedianServiceSec { get; set; }
public virtual double? AvgWaitSec { get; set; }
public virtual int MaxWaitSec { get; set; }
public virtual double? AvgWalkUpSec { get; set; }
public virtual double? ExpectedServiceSec { get; set; }
public virtual long SignedSec { get; set; }
public virtual long ServingSec { get; set; }
public virtual long PausedSec { get; set; }
public virtual long IdleSec { get; set; }
public virtual long UnstaffedSec { get; set; }
public virtual double? Utilization { get; set; }
public virtual double? IdleShare { get; set; }
public virtual double? PausedShare { get; set; }
public virtual int Sessions { get; set; }
public virtual int OpenDays { get; set; }
public virtual decimal? FeesEarned { get; set; }
public virtual decimal? AvgFee { get; set; }
public virtual decimal? FeesPerStaffedHour { get; set; }
public virtual decimal? ExpectedFeesPerStaffedHour { get; set; }
public virtual decimal? LaborCost { get; set; }
public virtual bool LaborPartial { get; set; }
public virtual List<Guid> MissingCostEmployeeIds { get; set; } = [];
public virtual List<SvcNamedTime> MissingCost { get; set; } = [];
public virtual bool LaborLocked { get; set; }
public virtual decimal? Contribution { get; set; }
public virtual decimal? LostFees { get; set; }
public virtual decimal? LostNoShowFees { get; set; }
public virtual Dictionary<Guid, int> Mix { get; set; } = new();
public virtual int[] HourlyServed { get; set; } = [];
public virtual decimal[] HourlyFees { get; set; } = [];
public virtual decimal[] HourlyCost { get; set; } = [];
public virtual List<SvcTint> Tints { get; set; } = [];
}
public partial class SvcNamedTime
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual long SignedSec { get; set; }
public virtual int Served { get; set; }
}
public partial class SvcScope
{
public virtual string StateCode { get; set; }
public virtual List<SvcBranchRow> Branches { get; set; } = [];
public virtual List<SvcStateRow> States { get; set; } = [];
public virtual SvcMetrics Total { get; set; }
public virtual SvcComparison Comparison { get; set; }
public virtual List<SvcServiceRow> FeesByService { get; set; } = [];
public virtual List<SvcHourRow> ByHour { get; set; } = [];
public virtual List<SvcWorkerRow> Workers { get; set; } = [];
public virtual bool MultiZone { get; set; }
public virtual bool MultiState { get; set; }
public virtual DateTime? RecordingSinceUtc { get; set; }
public virtual DateTime? SessionsSinceUtc { get; set; }
public virtual List<SvcAlert> Alerts { get; set; } = [];
public virtual bool CanSeeStaff { get; set; }
public virtual bool CanSeeFinancial { get; set; }
public virtual bool CanSeePay { get; set; }
}
public partial class SvcServiceRow
{
public virtual Guid LineId { get; set; }
public virtual string Name { get; set; }
public virtual int Completed { get; set; }
public virtual double? AvgServiceSec { get; set; }
public virtual double? BranchAvgServiceSec { get; set; }
public virtual decimal? FeesEarned { get; set; }
public virtual decimal? FeeCurrent { get; set; }
public virtual decimal? FeeMin { get; set; }
public virtual decimal? FeeMax { get; set; }
public virtual decimal? FeePerMinute { get; set; }
public virtual decimal? BranchFeePerMinute { get; set; }
public virtual List<SvcFeeChange> FeeChanges { get; set; } = [];
}
public partial class SvcStateRow
{
public virtual string StateCode { get; set; }
public virtual string StateName { get; set; }
public virtual int Branches { get; set; }
public virtual SvcMetrics Metrics { get; set; }
}
public partial class SvcTint
{
public virtual string Field { get; set; }
public virtual string Tone { get; set; }
public virtual string Reason { get; set; }
public virtual double? Value { get; set; }
public virtual double? Reference { get; set; }
public virtual double? BranchValue { get; set; }
}
public partial class SvcWorkerRow
{
public virtual Guid EmployeeId { get; set; }
public virtual Guid BranchId { get; set; }
public virtual string BranchName { get; set; }
public virtual string Name { get; set; }
public virtual int Served { get; set; }
public virtual double? AvgServiceSec { get; set; }
public virtual double? Utilization { get; set; }
}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /v1/dashboard/kpiv2 HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/csv
Content-Type: text/csv
Content-Length: length
{"FromDate":"0001-01-01T00:00:00.0000000","ToDate":"0001-01-01T00:00:00.0000000","LocationIds":["00000000000000000000000000000000"],"IncludeScope":false,"StateCode":"String","Compare":"String"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length
{"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"Stats":[{"Key":"String","Label":"String","Value":0,"PreviousValue":0,"Unit":"String","DeltaPct":null}],"Trend":[{"Name":"String","Points":[{"Label":"String","Value":0}]}],"ServicesByType":{"Name":"String","Points":[{"Label":"String","Value":0}]},"LocationLeaderboard":[{"LocationName":"String","Walkins":0,"Completed":0,"AvgServiceMinutes":0,"AbandonmentPct":0}],"WorkerProductivity":[{"WorkerName":"String","Completed":0,"AvgServiceMinutes":0}],"Heatmap":[{"Dow":0,"Hr":0,"Cnt":0}],"LiveQueue":[{"LocationName":"String","Waiting":0,"InProgress":0}],"Scope":{"StateCode":"String","Branches":[{"BranchId":"00000000000000000000000000000000","Name":"String","StateCode":"String","ZoneCode":"String","TimeZone":"String","Windows":0,"RecordingSinceUtc":"0001-01-01T00:00:00.0000000","SessionsSinceUtc":"0001-01-01T00:00:00.0000000","Metrics":{"Checkins":0,"Walkins":0,"Appts":0,"Served":0,"NoShows":0,"ApptNoShows":0,"CancelledAtWindow":0,"Abandoned":0,"Called":0,"CalledUp":0,"AbandonRate":0,"NoShowRate":0,"AvgServiceSec":0,"MedianServiceSec":0,"AvgWaitSec":0,"MaxWaitSec":0,"AvgWalkUpSec":0,"ExpectedServiceSec":0,"SignedSec":0,"ServingSec":0,"PausedSec":0,"IdleSec":0,"UnstaffedSec":0,"Utilization":0,"IdleShare":0,"PausedShare":0,"Sessions":0,"OpenDays":0,"FeesEarned":0,"AvgFee":0,"FeesPerStaffedHour":0,"ExpectedFeesPerStaffedHour":0,"LaborCost":0,"LaborPartial":false,"MissingCostEmployeeIds":["00000000000000000000000000000000"],"MissingCost":[{"Id":"00000000000000000000000000000000","Name":"String","SignedSec":0,"Served":0}],"LaborLocked":false,"Contribution":0,"LostFees":0,"LostNoShowFees":0,"Mix":{"00000000000000000000000000000000":0},"HourlyServed":[0],"HourlyFees":[0],"HourlyCost":[0],"Tints":[{"Field":"String","Tone":"String","Reason":"String","Value":0,"Reference":0,"BranchValue":0}]}}],"States":[{"StateCode":"String","StateName":"String","Branches":0,"Metrics":{"Checkins":0,"Walkins":0,"Appts":0,"Served":0,"NoShows":0,"ApptNoShows":0,"CancelledAtWindow":0,"Abandoned":0,"Called":0,"CalledUp":0,"AbandonRate":0,"NoShowRate":0,"AvgServiceSec":0,"MedianServiceSec":0,"AvgWaitSec":0,"MaxWaitSec":0,"AvgWalkUpSec":0,"ExpectedServiceSec":0,"SignedSec":0,"ServingSec":0,"PausedSec":0,"IdleSec":0,"UnstaffedSec":0,"Utilization":0,"IdleShare":0,"PausedShare":0,"Sessions":0,"OpenDays":0,"FeesEarned":0,"AvgFee":0,"FeesPerStaffedHour":0,"ExpectedFeesPerStaffedHour":0,"LaborCost":0,"LaborPartial":false,"MissingCostEmployeeIds":["00000000000000000000000000000000"],"MissingCost":[{"Id":"00000000000000000000000000000000","Name":"String","SignedSec":0,"Served":0}],"LaborLocked":false,"Contribution":0,"LostFees":0,"LostNoShowFees":0,"Mix":{"00000000000000000000000000000000":0},"HourlyServed":[0],"HourlyFees":[0],"HourlyCost":[0],"Tints":[{"Field":"String","Tone":"String","Reason":"String","Value":0,"Reference":0,"BranchValue":0}]}}],"Total":{"Checkins":0,"Walkins":0,"Appts":0,"Served":0,"NoShows":0,"ApptNoShows":0,"CancelledAtWindow":0,"Abandoned":0,"Called":0,"CalledUp":0,"AbandonRate":0,"NoShowRate":0,"AvgServiceSec":0,"MedianServiceSec":0,"AvgWaitSec":0,"MaxWaitSec":0,"AvgWalkUpSec":0,"ExpectedServiceSec":0,"SignedSec":0,"ServingSec":0,"PausedSec":0,"IdleSec":0,"UnstaffedSec":0,"Utilization":0,"IdleShare":0,"PausedShare":0,"Sessions":0,"OpenDays":0,"FeesEarned":0,"AvgFee":0,"FeesPerStaffedHour":0,"ExpectedFeesPerStaffedHour":0,"LaborCost":0,"LaborPartial":false,"MissingCostEmployeeIds":["00000000000000000000000000000000"],"MissingCost":[{"Id":"00000000000000000000000000000000","Name":"String","SignedSec":0,"Served":0}],"LaborLocked":false,"Contribution":0,"LostFees":0,"LostNoShowFees":0,"Mix":{"00000000000000000000000000000000":0},"HourlyServed":[0],"HourlyFees":[0],"HourlyCost":[0],"Tints":[{"Field":"String","Tone":"String","Reason":"String","Value":0,"Reference":0,"BranchValue":0}]},"Comparison":{"Mode":"String","FromDate":"0001-01-01T00:00:00.0000000","ToDate":"0001-01-01T00:00:00.0000000","CutoffMinute":0,"HasData":false,"Metrics":{"Checkins":0,"Walkins":0,"Appts":0,"Served":0,"NoShows":0,"ApptNoShows":0,"CancelledAtWindow":0,"Abandoned":0,"Called":0,"CalledUp":0,"AbandonRate":0,"NoShowRate":0,"AvgServiceSec":0,"MedianServiceSec":0,"AvgWaitSec":0,"MaxWaitSec":0,"AvgWalkUpSec":0,"ExpectedServiceSec":0,"SignedSec":0,"ServingSec":0,"PausedSec":0,"IdleSec":0,"UnstaffedSec":0,"Utilization":0,"IdleShare":0,"PausedShare":0,"Sessions":0,"OpenDays":0,"FeesEarned":0,"AvgFee":0,"FeesPerStaffedHour":0,"ExpectedFeesPerStaffedHour":0,"LaborCost":0,"LaborPartial":false,"MissingCostEmployeeIds":["00000000000000000000000000000000"],"MissingCost":[{"Id":"00000000000000000000000000000000","Name":"String","SignedSec":0,"Served":0}],"LaborLocked":false,"Contribution":0,"LostFees":0,"LostNoShowFees":0,"Mix":{"00000000000000000000000000000000":0},"HourlyServed":[0],"HourlyFees":[0],"HourlyCost":[0],"Tints":[{"Field":"String","Tone":"String","Reason":"String","Value":0,"Reference":0,"BranchValue":0}]}},"FeesByService":[{"LineId":"00000000000000000000000000000000","Name":"String","Completed":0,"AvgServiceSec":0,"BranchAvgServiceSec":0,"FeesEarned":0,"FeeCurrent":0,"FeeMin":0,"FeeMax":0,"FeePerMinute":0,"BranchFeePerMinute":0,"FeeChanges":[{"LocationId":"00000000000000000000000000000000","OnDate":"0001-01-01T00:00:00.0000000","FromFee":0,"ToFee":0}]}],"ByHour":[{"LocalHour":0,"Served":0,"FeesEarned":0,"CostToStaff":0}],"Workers":[{"EmployeeId":"00000000000000000000000000000000","BranchId":"00000000000000000000000000000000","BranchName":"String","Name":"String","Served":0,"AvgServiceSec":0,"Utilization":0}],"MultiZone":false,"MultiState":false,"RecordingSinceUtc":"0001-01-01T00:00:00.0000000","SessionsSinceUtc":"0001-01-01T00:00:00.0000000","Alerts":[{"Level":"String","View":"String","Code":"String","StationId":"00000000000000000000000000000000","EmployeeId":"00000000000000000000000000000000","BranchId":"00000000000000000000000000000000","LineId":"00000000000000000000000000000000","Name":"String","OtherLineId":"00000000000000000000000000000000","OtherName":"String","StationIds":["00000000000000000000000000000000"],"Values":{"String":0}}],"CanSeeStaff":false,"CanSeeFinancial":false,"CanSeePay":false}}