| POST,OPTIONS | /v1/dashboard/kpiv2/detail |
|---|
import 'package:servicestack/servicestack.dart';
class SvcNamedTime implements IConvertible
{
String? Id;
String? Name;
int? SignedSec;
int? Served;
SvcNamedTime({this.Id,this.Name,this.SignedSec,this.Served});
SvcNamedTime.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Id = json['Id'];
Name = json['Name'];
SignedSec = json['SignedSec'];
Served = json['Served'];
return this;
}
Map<String, dynamic> toJson() => {
'Id': Id,
'Name': Name,
'SignedSec': SignedSec,
'Served': Served
};
getTypeName() => "SvcNamedTime";
TypeContext? context = _ctx;
}
class SvcTint implements IConvertible
{
String? Field;
String? Tone;
String? Reason;
double? Value;
double? Reference;
double? BranchValue;
SvcTint({this.Field,this.Tone,this.Reason,this.Value,this.Reference,this.BranchValue});
SvcTint.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Field = json['Field'];
Tone = json['Tone'];
Reason = json['Reason'];
Value = JsonConverters.toDouble(json['Value']);
Reference = JsonConverters.toDouble(json['Reference']);
BranchValue = JsonConverters.toDouble(json['BranchValue']);
return this;
}
Map<String, dynamic> toJson() => {
'Field': Field,
'Tone': Tone,
'Reason': Reason,
'Value': Value,
'Reference': Reference,
'BranchValue': BranchValue
};
getTypeName() => "SvcTint";
TypeContext? context = _ctx;
}
class SvcMetrics implements IConvertible
{
int? Checkins;
int? Walkins;
int? Appts;
int? Served;
int? NoShows;
int? ApptNoShows;
int? CancelledAtWindow;
int? Abandoned;
int? Called;
int? CalledUp;
double? AbandonRate;
double? NoShowRate;
double? AvgServiceSec;
double? MedianServiceSec;
double? AvgWaitSec;
int? MaxWaitSec;
double? AvgWalkUpSec;
double? ExpectedServiceSec;
int? SignedSec;
int? ServingSec;
int? PausedSec;
int? IdleSec;
int? UnstaffedSec;
double? Utilization;
double? IdleShare;
double? PausedShare;
int? Sessions;
int? OpenDays;
double? FeesEarned;
double? AvgFee;
double? FeesPerStaffedHour;
double? ExpectedFeesPerStaffedHour;
double? LaborCost;
bool? LaborPartial;
List<String>? MissingCostEmployeeIds = [];
List<SvcNamedTime>? MissingCost = [];
bool? LaborLocked;
double? Contribution;
double? LostFees;
double? LostNoShowFees;
Map<String,int?>? Mix = {};
List<int>? HourlyServed = [];
List<double>? HourlyFees = [];
List<double>? HourlyCost = [];
List<SvcTint>? Tints = [];
SvcMetrics({this.Checkins,this.Walkins,this.Appts,this.Served,this.NoShows,this.ApptNoShows,this.CancelledAtWindow,this.Abandoned,this.Called,this.CalledUp,this.AbandonRate,this.NoShowRate,this.AvgServiceSec,this.MedianServiceSec,this.AvgWaitSec,this.MaxWaitSec,this.AvgWalkUpSec,this.ExpectedServiceSec,this.SignedSec,this.ServingSec,this.PausedSec,this.IdleSec,this.UnstaffedSec,this.Utilization,this.IdleShare,this.PausedShare,this.Sessions,this.OpenDays,this.FeesEarned,this.AvgFee,this.FeesPerStaffedHour,this.ExpectedFeesPerStaffedHour,this.LaborCost,this.LaborPartial,this.MissingCostEmployeeIds,this.MissingCost,this.LaborLocked,this.Contribution,this.LostFees,this.LostNoShowFees,this.Mix,this.HourlyServed,this.HourlyFees,this.HourlyCost,this.Tints});
SvcMetrics.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Checkins = json['Checkins'];
Walkins = json['Walkins'];
Appts = json['Appts'];
Served = json['Served'];
NoShows = json['NoShows'];
ApptNoShows = json['ApptNoShows'];
CancelledAtWindow = json['CancelledAtWindow'];
Abandoned = json['Abandoned'];
Called = json['Called'];
CalledUp = json['CalledUp'];
AbandonRate = JsonConverters.toDouble(json['AbandonRate']);
NoShowRate = JsonConverters.toDouble(json['NoShowRate']);
AvgServiceSec = JsonConverters.toDouble(json['AvgServiceSec']);
MedianServiceSec = JsonConverters.toDouble(json['MedianServiceSec']);
AvgWaitSec = JsonConverters.toDouble(json['AvgWaitSec']);
MaxWaitSec = json['MaxWaitSec'];
AvgWalkUpSec = JsonConverters.toDouble(json['AvgWalkUpSec']);
ExpectedServiceSec = JsonConverters.toDouble(json['ExpectedServiceSec']);
SignedSec = json['SignedSec'];
ServingSec = json['ServingSec'];
PausedSec = json['PausedSec'];
IdleSec = json['IdleSec'];
UnstaffedSec = json['UnstaffedSec'];
Utilization = JsonConverters.toDouble(json['Utilization']);
IdleShare = JsonConverters.toDouble(json['IdleShare']);
PausedShare = JsonConverters.toDouble(json['PausedShare']);
Sessions = json['Sessions'];
OpenDays = json['OpenDays'];
FeesEarned = JsonConverters.toDouble(json['FeesEarned']);
AvgFee = JsonConverters.toDouble(json['AvgFee']);
FeesPerStaffedHour = JsonConverters.toDouble(json['FeesPerStaffedHour']);
ExpectedFeesPerStaffedHour = JsonConverters.toDouble(json['ExpectedFeesPerStaffedHour']);
LaborCost = JsonConverters.toDouble(json['LaborCost']);
LaborPartial = json['LaborPartial'];
MissingCostEmployeeIds = JsonConverters.fromJson(json['MissingCostEmployeeIds'],'List<String>',context!);
MissingCost = JsonConverters.fromJson(json['MissingCost'],'List<SvcNamedTime>',context!);
LaborLocked = json['LaborLocked'];
Contribution = JsonConverters.toDouble(json['Contribution']);
LostFees = JsonConverters.toDouble(json['LostFees']);
LostNoShowFees = JsonConverters.toDouble(json['LostNoShowFees']);
Mix = JsonConverters.fromJson(json['Mix'],'Map<String,int?>',context!);
HourlyServed = JsonConverters.fromJson(json['HourlyServed'],'List<int>',context!);
HourlyFees = JsonConverters.fromJson(json['HourlyFees'],'List<double>',context!);
HourlyCost = JsonConverters.fromJson(json['HourlyCost'],'List<double>',context!);
Tints = JsonConverters.fromJson(json['Tints'],'List<SvcTint>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'Checkins': Checkins,
'Walkins': Walkins,
'Appts': Appts,
'Served': Served,
'NoShows': NoShows,
'ApptNoShows': ApptNoShows,
'CancelledAtWindow': CancelledAtWindow,
'Abandoned': Abandoned,
'Called': Called,
'CalledUp': CalledUp,
'AbandonRate': AbandonRate,
'NoShowRate': NoShowRate,
'AvgServiceSec': AvgServiceSec,
'MedianServiceSec': MedianServiceSec,
'AvgWaitSec': AvgWaitSec,
'MaxWaitSec': MaxWaitSec,
'AvgWalkUpSec': AvgWalkUpSec,
'ExpectedServiceSec': ExpectedServiceSec,
'SignedSec': SignedSec,
'ServingSec': ServingSec,
'PausedSec': PausedSec,
'IdleSec': IdleSec,
'UnstaffedSec': UnstaffedSec,
'Utilization': Utilization,
'IdleShare': IdleShare,
'PausedShare': PausedShare,
'Sessions': Sessions,
'OpenDays': OpenDays,
'FeesEarned': FeesEarned,
'AvgFee': AvgFee,
'FeesPerStaffedHour': FeesPerStaffedHour,
'ExpectedFeesPerStaffedHour': ExpectedFeesPerStaffedHour,
'LaborCost': LaborCost,
'LaborPartial': LaborPartial,
'MissingCostEmployeeIds': JsonConverters.toJson(MissingCostEmployeeIds,'List<String>',context!),
'MissingCost': JsonConverters.toJson(MissingCost,'List<SvcNamedTime>',context!),
'LaborLocked': LaborLocked,
'Contribution': Contribution,
'LostFees': LostFees,
'LostNoShowFees': LostNoShowFees,
'Mix': JsonConverters.toJson(Mix,'Map<String,int?>',context!),
'HourlyServed': JsonConverters.toJson(HourlyServed,'List<int>',context!),
'HourlyFees': JsonConverters.toJson(HourlyFees,'List<double>',context!),
'HourlyCost': JsonConverters.toJson(HourlyCost,'List<double>',context!),
'Tints': JsonConverters.toJson(Tints,'List<SvcTint>',context!)
};
getTypeName() => "SvcMetrics";
TypeContext? context = _ctx;
}
class SvcWindowRow implements IConvertible
{
String? StationId;
String? Name;
List<SvcNamedTime>? Clerks = [];
bool? NeverStaffed;
DateTime? LastStaffedUtc;
String? LastStaffedBy;
SvcMetrics? Metrics;
SvcWindowRow({this.StationId,this.Name,this.Clerks,this.NeverStaffed,this.LastStaffedUtc,this.LastStaffedBy,this.Metrics});
SvcWindowRow.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
StationId = json['StationId'];
Name = json['Name'];
Clerks = JsonConverters.fromJson(json['Clerks'],'List<SvcNamedTime>',context!);
NeverStaffed = json['NeverStaffed'];
LastStaffedUtc = JsonConverters.fromJson(json['LastStaffedUtc'],'DateTime',context!);
LastStaffedBy = json['LastStaffedBy'];
Metrics = JsonConverters.fromJson(json['Metrics'],'SvcMetrics',context!);
return this;
}
Map<String, dynamic> toJson() => {
'StationId': StationId,
'Name': Name,
'Clerks': JsonConverters.toJson(Clerks,'List<SvcNamedTime>',context!),
'NeverStaffed': NeverStaffed,
'LastStaffedUtc': JsonConverters.toJson(LastStaffedUtc,'DateTime',context!),
'LastStaffedBy': LastStaffedBy,
'Metrics': JsonConverters.toJson(Metrics,'SvcMetrics',context!)
};
getTypeName() => "SvcWindowRow";
TypeContext? context = _ctx;
}
class SvcClerkRow implements IConvertible
{
String? EmployeeId;
String? Name;
List<SvcNamedTime>? Windows = [];
double? LoadedRate;
bool? RateSet;
bool? RateLocked;
SvcMetrics? Metrics;
SvcClerkRow({this.EmployeeId,this.Name,this.Windows,this.LoadedRate,this.RateSet,this.RateLocked,this.Metrics});
SvcClerkRow.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
EmployeeId = json['EmployeeId'];
Name = json['Name'];
Windows = JsonConverters.fromJson(json['Windows'],'List<SvcNamedTime>',context!);
LoadedRate = JsonConverters.toDouble(json['LoadedRate']);
RateSet = json['RateSet'];
RateLocked = json['RateLocked'];
Metrics = JsonConverters.fromJson(json['Metrics'],'SvcMetrics',context!);
return this;
}
Map<String, dynamic> toJson() => {
'EmployeeId': EmployeeId,
'Name': Name,
'Windows': JsonConverters.toJson(Windows,'List<SvcNamedTime>',context!),
'LoadedRate': LoadedRate,
'RateSet': RateSet,
'RateLocked': RateLocked,
'Metrics': JsonConverters.toJson(Metrics,'SvcMetrics',context!)
};
getTypeName() => "SvcClerkRow";
TypeContext? context = _ctx;
}
class SvcAverage implements IConvertible
{
int? Count;
double? Served;
double? AvgServiceSec;
double? MedianServiceSec;
double? AvgWaitSec;
double? Utilization;
double? IdleSec;
double? PausedSec;
double? NoShows;
double? SignedSec;
double? FeesEarned;
double? FeesPerStaffedHour;
double? LaborCost;
double? Contribution;
double? LostNoShowFees;
SvcAverage({this.Count,this.Served,this.AvgServiceSec,this.MedianServiceSec,this.AvgWaitSec,this.Utilization,this.IdleSec,this.PausedSec,this.NoShows,this.SignedSec,this.FeesEarned,this.FeesPerStaffedHour,this.LaborCost,this.Contribution,this.LostNoShowFees});
SvcAverage.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Count = json['Count'];
Served = JsonConverters.toDouble(json['Served']);
AvgServiceSec = JsonConverters.toDouble(json['AvgServiceSec']);
MedianServiceSec = JsonConverters.toDouble(json['MedianServiceSec']);
AvgWaitSec = JsonConverters.toDouble(json['AvgWaitSec']);
Utilization = JsonConverters.toDouble(json['Utilization']);
IdleSec = JsonConverters.toDouble(json['IdleSec']);
PausedSec = JsonConverters.toDouble(json['PausedSec']);
NoShows = JsonConverters.toDouble(json['NoShows']);
SignedSec = JsonConverters.toDouble(json['SignedSec']);
FeesEarned = JsonConverters.toDouble(json['FeesEarned']);
FeesPerStaffedHour = JsonConverters.toDouble(json['FeesPerStaffedHour']);
LaborCost = JsonConverters.toDouble(json['LaborCost']);
Contribution = JsonConverters.toDouble(json['Contribution']);
LostNoShowFees = JsonConverters.toDouble(json['LostNoShowFees']);
return this;
}
Map<String, dynamic> toJson() => {
'Count': Count,
'Served': Served,
'AvgServiceSec': AvgServiceSec,
'MedianServiceSec': MedianServiceSec,
'AvgWaitSec': AvgWaitSec,
'Utilization': Utilization,
'IdleSec': IdleSec,
'PausedSec': PausedSec,
'NoShows': NoShows,
'SignedSec': SignedSec,
'FeesEarned': FeesEarned,
'FeesPerStaffedHour': FeesPerStaffedHour,
'LaborCost': LaborCost,
'Contribution': Contribution,
'LostNoShowFees': LostNoShowFees
};
getTypeName() => "SvcAverage";
TypeContext? context = _ctx;
}
class SvcSession implements IConvertible
{
String? SessionId;
String? StationId;
String? StationName;
String? EmployeeId;
String? EmployeeName;
DateTime? LocalIn;
DateTime? LocalOut;
bool? IsOpen;
String? EndReason;
int? PausedSec;
SvcSession({this.SessionId,this.StationId,this.StationName,this.EmployeeId,this.EmployeeName,this.LocalIn,this.LocalOut,this.IsOpen,this.EndReason,this.PausedSec});
SvcSession.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
SessionId = json['SessionId'];
StationId = json['StationId'];
StationName = json['StationName'];
EmployeeId = json['EmployeeId'];
EmployeeName = json['EmployeeName'];
LocalIn = JsonConverters.fromJson(json['LocalIn'],'DateTime',context!);
LocalOut = JsonConverters.fromJson(json['LocalOut'],'DateTime',context!);
IsOpen = json['IsOpen'];
EndReason = json['EndReason'];
PausedSec = json['PausedSec'];
return this;
}
Map<String, dynamic> toJson() => {
'SessionId': SessionId,
'StationId': StationId,
'StationName': StationName,
'EmployeeId': EmployeeId,
'EmployeeName': EmployeeName,
'LocalIn': JsonConverters.toJson(LocalIn,'DateTime',context!),
'LocalOut': JsonConverters.toJson(LocalOut,'DateTime',context!),
'IsOpen': IsOpen,
'EndReason': EndReason,
'PausedSec': PausedSec
};
getTypeName() => "SvcSession";
TypeContext? context = _ctx;
}
class SvcFeeChange implements IConvertible
{
String? LocationId;
DateTime? OnDate;
double? FromFee;
double? ToFee;
SvcFeeChange({this.LocationId,this.OnDate,this.FromFee,this.ToFee});
SvcFeeChange.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
LocationId = json['LocationId'];
OnDate = JsonConverters.fromJson(json['OnDate'],'DateTime',context!);
FromFee = JsonConverters.toDouble(json['FromFee']);
ToFee = JsonConverters.toDouble(json['ToFee']);
return this;
}
Map<String, dynamic> toJson() => {
'LocationId': LocationId,
'OnDate': JsonConverters.toJson(OnDate,'DateTime',context!),
'FromFee': FromFee,
'ToFee': ToFee
};
getTypeName() => "SvcFeeChange";
TypeContext? context = _ctx;
}
class SvcServiceRow implements IConvertible
{
String? LineId;
String? Name;
int? Completed;
double? AvgServiceSec;
double? BranchAvgServiceSec;
double? FeesEarned;
double? FeeCurrent;
double? FeeMin;
double? FeeMax;
double? FeePerMinute;
double? BranchFeePerMinute;
List<SvcFeeChange>? FeeChanges = [];
SvcServiceRow({this.LineId,this.Name,this.Completed,this.AvgServiceSec,this.BranchAvgServiceSec,this.FeesEarned,this.FeeCurrent,this.FeeMin,this.FeeMax,this.FeePerMinute,this.BranchFeePerMinute,this.FeeChanges});
SvcServiceRow.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
LineId = json['LineId'];
Name = json['Name'];
Completed = json['Completed'];
AvgServiceSec = JsonConverters.toDouble(json['AvgServiceSec']);
BranchAvgServiceSec = JsonConverters.toDouble(json['BranchAvgServiceSec']);
FeesEarned = JsonConverters.toDouble(json['FeesEarned']);
FeeCurrent = JsonConverters.toDouble(json['FeeCurrent']);
FeeMin = JsonConverters.toDouble(json['FeeMin']);
FeeMax = JsonConverters.toDouble(json['FeeMax']);
FeePerMinute = JsonConverters.toDouble(json['FeePerMinute']);
BranchFeePerMinute = JsonConverters.toDouble(json['BranchFeePerMinute']);
FeeChanges = JsonConverters.fromJson(json['FeeChanges'],'List<SvcFeeChange>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'LineId': LineId,
'Name': Name,
'Completed': Completed,
'AvgServiceSec': AvgServiceSec,
'BranchAvgServiceSec': BranchAvgServiceSec,
'FeesEarned': FeesEarned,
'FeeCurrent': FeeCurrent,
'FeeMin': FeeMin,
'FeeMax': FeeMax,
'FeePerMinute': FeePerMinute,
'BranchFeePerMinute': BranchFeePerMinute,
'FeeChanges': JsonConverters.toJson(FeeChanges,'List<SvcFeeChange>',context!)
};
getTypeName() => "SvcServiceRow";
TypeContext? context = _ctx;
}
class SvcDetail implements IConvertible
{
String? Kind;
SvcWindowRow? Window;
SvcClerkRow? Clerk;
SvcMetrics? BranchMetrics;
SvcAverage? PerRowAverage;
List<SvcSession>? Sessions = [];
List<SvcServiceRow>? Services = [];
bool? CanSeeStaff;
bool? CanSeeFinancial;
bool? CanSeePay;
SvcDetail({this.Kind,this.Window,this.Clerk,this.BranchMetrics,this.PerRowAverage,this.Sessions,this.Services,this.CanSeeStaff,this.CanSeeFinancial,this.CanSeePay});
SvcDetail.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Kind = json['Kind'];
Window = JsonConverters.fromJson(json['Window'],'SvcWindowRow',context!);
Clerk = JsonConverters.fromJson(json['Clerk'],'SvcClerkRow',context!);
BranchMetrics = JsonConverters.fromJson(json['BranchMetrics'],'SvcMetrics',context!);
PerRowAverage = JsonConverters.fromJson(json['PerRowAverage'],'SvcAverage',context!);
Sessions = JsonConverters.fromJson(json['Sessions'],'List<SvcSession>',context!);
Services = JsonConverters.fromJson(json['Services'],'List<SvcServiceRow>',context!);
CanSeeStaff = json['CanSeeStaff'];
CanSeeFinancial = json['CanSeeFinancial'];
CanSeePay = json['CanSeePay'];
return this;
}
Map<String, dynamic> toJson() => {
'Kind': Kind,
'Window': JsonConverters.toJson(Window,'SvcWindowRow',context!),
'Clerk': JsonConverters.toJson(Clerk,'SvcClerkRow',context!),
'BranchMetrics': JsonConverters.toJson(BranchMetrics,'SvcMetrics',context!),
'PerRowAverage': JsonConverters.toJson(PerRowAverage,'SvcAverage',context!),
'Sessions': JsonConverters.toJson(Sessions,'List<SvcSession>',context!),
'Services': JsonConverters.toJson(Services,'List<SvcServiceRow>',context!),
'CanSeeStaff': CanSeeStaff,
'CanSeeFinancial': CanSeeFinancial,
'CanSeePay': CanSeePay
};
getTypeName() => "SvcDetail";
TypeContext? context = _ctx;
}
class KpiV2DetailResponse implements IConvertible
{
ResponseStatus? ResponseStatus;
SvcDetail? Detail;
KpiV2DetailResponse({this.ResponseStatus,this.Detail});
KpiV2DetailResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
Detail = JsonConverters.fromJson(json['Detail'],'SvcDetail',context!);
return this;
}
Map<String, dynamic> toJson() => {
'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!),
'Detail': JsonConverters.toJson(Detail,'SvcDetail',context!)
};
getTypeName() => "KpiV2DetailResponse";
TypeContext? context = _ctx;
}
class KpiV2DetailRequest implements IConvertible
{
String? BranchId;
String? StationId;
String? EmployeeId;
DateTime? FromDate;
DateTime? ToDate;
KpiV2DetailRequest({this.BranchId,this.StationId,this.EmployeeId,this.FromDate,this.ToDate});
KpiV2DetailRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
BranchId = json['BranchId'];
StationId = json['StationId'];
EmployeeId = json['EmployeeId'];
FromDate = JsonConverters.fromJson(json['FromDate'],'DateTime',context!);
ToDate = JsonConverters.fromJson(json['ToDate'],'DateTime',context!);
return this;
}
Map<String, dynamic> toJson() => {
'BranchId': BranchId,
'StationId': StationId,
'EmployeeId': EmployeeId,
'FromDate': JsonConverters.toJson(FromDate,'DateTime',context!),
'ToDate': JsonConverters.toJson(ToDate,'DateTime',context!)
};
getTypeName() => "KpiV2DetailRequest";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: <String, TypeInfo> {
'SvcNamedTime': TypeInfo(TypeOf.Class, create:() => SvcNamedTime()),
'SvcTint': TypeInfo(TypeOf.Class, create:() => SvcTint()),
'SvcMetrics': TypeInfo(TypeOf.Class, create:() => SvcMetrics()),
'List<SvcNamedTime>': TypeInfo(TypeOf.Class, create:() => <SvcNamedTime>[]),
'Map<String,int?>': TypeInfo(TypeOf.Class, create:() => Map<String,int?>()),
'List<SvcTint>': TypeInfo(TypeOf.Class, create:() => <SvcTint>[]),
'SvcWindowRow': TypeInfo(TypeOf.Class, create:() => SvcWindowRow()),
'SvcClerkRow': TypeInfo(TypeOf.Class, create:() => SvcClerkRow()),
'SvcAverage': TypeInfo(TypeOf.Class, create:() => SvcAverage()),
'SvcSession': TypeInfo(TypeOf.Class, create:() => SvcSession()),
'SvcFeeChange': TypeInfo(TypeOf.Class, create:() => SvcFeeChange()),
'SvcServiceRow': TypeInfo(TypeOf.Class, create:() => SvcServiceRow()),
'List<SvcFeeChange>': TypeInfo(TypeOf.Class, create:() => <SvcFeeChange>[]),
'SvcDetail': TypeInfo(TypeOf.Class, create:() => SvcDetail()),
'List<SvcSession>': TypeInfo(TypeOf.Class, create:() => <SvcSession>[]),
'List<SvcServiceRow>': TypeInfo(TypeOf.Class, create:() => <SvcServiceRow>[]),
'KpiV2DetailResponse': TypeInfo(TypeOf.Class, create:() => KpiV2DetailResponse()),
'KpiV2DetailRequest': TypeInfo(TypeOf.Class, create:() => KpiV2DetailRequest()),
});
To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /v1/dashboard/kpiv2/detail HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length
{"BranchId":"00000000000000000000000000000000","StationId":"00000000000000000000000000000000","EmployeeId":"00000000000000000000000000000000","FromDate":"0001-01-01T00:00:00.0000000","ToDate":"0001-01-01T00:00:00.0000000"}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length
{"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"Detail":{"Kind":"String","Window":{"StationId":"00000000000000000000000000000000","Name":"String","Clerks":[{"Id":"00000000000000000000000000000000","Name":"String","SignedSec":0,"Served":0}],"NeverStaffed":false,"LastStaffedUtc":"0001-01-01T00:00:00.0000000","LastStaffedBy":"String","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}]}},"Clerk":{"EmployeeId":"00000000000000000000000000000000","Name":"String","Windows":[{"Id":"00000000000000000000000000000000","Name":"String","SignedSec":0,"Served":0}],"LoadedRate":0,"RateSet":false,"RateLocked":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}]}},"BranchMetrics":{"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}]},"PerRowAverage":{"Count":0,"Served":0,"AvgServiceSec":0,"MedianServiceSec":0,"AvgWaitSec":0,"Utilization":0,"IdleSec":0,"PausedSec":0,"NoShows":0,"SignedSec":0,"FeesEarned":0,"FeesPerStaffedHour":0,"LaborCost":0,"Contribution":0,"LostNoShowFees":0},"Sessions":[{"SessionId":"00000000000000000000000000000000","StationId":"00000000000000000000000000000000","StationName":"String","EmployeeId":"00000000000000000000000000000000","EmployeeName":"String","LocalIn":"0001-01-01T00:00:00.0000000","LocalOut":"0001-01-01T00:00:00.0000000","IsOpen":false,"EndReason":"String","PausedSec":0}],"Services":[{"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}]}],"CanSeeStaff":false,"CanSeeFinancial":false,"CanSeePay":false}}