| Requires any of the roles: | Admin, TeamAdmin | Required permission: | Sales.Total |
| POST | /sales/refreshments/overview |
|---|
import 'package:servicestack/servicestack.dart';
class RefreshmentsKpis implements IConvertible
{
double? revenue;
double? refunded;
int? units;
int? orders;
double? aov;
double? unitsPerOrder;
int? attendance;
double? perCap;
RefreshmentsKpis({this.revenue,this.refunded,this.units,this.orders,this.aov,this.unitsPerOrder,this.attendance,this.perCap});
RefreshmentsKpis.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
revenue = JsonConverters.toDouble(json['revenue']);
refunded = JsonConverters.toDouble(json['refunded']);
units = json['units'];
orders = json['orders'];
aov = JsonConverters.toDouble(json['aov']);
unitsPerOrder = JsonConverters.toDouble(json['unitsPerOrder']);
attendance = json['attendance'];
perCap = JsonConverters.toDouble(json['perCap']);
return this;
}
Map<String, dynamic> toJson() => {
'revenue': revenue,
'refunded': refunded,
'units': units,
'orders': orders,
'aov': aov,
'unitsPerOrder': unitsPerOrder,
'attendance': attendance,
'perCap': perCap
};
getTypeName() => "RefreshmentsKpis";
TypeContext? context = _ctx;
}
class KpiDelta implements IConvertible
{
double? abs;
double? pct;
String? dir;
KpiDelta({this.abs,this.pct,this.dir});
KpiDelta.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
abs = JsonConverters.toDouble(json['abs']);
pct = JsonConverters.toDouble(json['pct']);
dir = json['dir'];
return this;
}
Map<String, dynamic> toJson() => {
'abs': abs,
'pct': pct,
'dir': dir
};
getTypeName() => "KpiDelta";
TypeContext? context = _ctx;
}
class RefreshmentsDeltas implements IConvertible
{
KpiDelta? revenue;
KpiDelta? refunded;
KpiDelta? units;
KpiDelta? orders;
KpiDelta? aov;
KpiDelta? perCap;
RefreshmentsDeltas({this.revenue,this.refunded,this.units,this.orders,this.aov,this.perCap});
RefreshmentsDeltas.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
revenue = JsonConverters.fromJson(json['revenue'],'KpiDelta',context!);
refunded = JsonConverters.fromJson(json['refunded'],'KpiDelta',context!);
units = JsonConverters.fromJson(json['units'],'KpiDelta',context!);
orders = JsonConverters.fromJson(json['orders'],'KpiDelta',context!);
aov = JsonConverters.fromJson(json['aov'],'KpiDelta',context!);
perCap = JsonConverters.fromJson(json['perCap'],'KpiDelta',context!);
return this;
}
Map<String, dynamic> toJson() => {
'revenue': JsonConverters.toJson(revenue,'KpiDelta',context!),
'refunded': JsonConverters.toJson(refunded,'KpiDelta',context!),
'units': JsonConverters.toJson(units,'KpiDelta',context!),
'orders': JsonConverters.toJson(orders,'KpiDelta',context!),
'aov': JsonConverters.toJson(aov,'KpiDelta',context!),
'perCap': JsonConverters.toJson(perCap,'KpiDelta',context!)
};
getTypeName() => "RefreshmentsDeltas";
TypeContext? context = _ctx;
}
class SalesTrendBucket implements IConvertible
{
DateTime? bucket;
double? revenue;
int? tickets;
SalesTrendBucket({this.bucket,this.revenue,this.tickets});
SalesTrendBucket.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
bucket = JsonConverters.fromJson(json['bucket'],'DateTime',context!);
revenue = JsonConverters.toDouble(json['revenue']);
tickets = json['tickets'];
return this;
}
Map<String, dynamic> toJson() => {
'bucket': JsonConverters.toJson(bucket,'DateTime',context!),
'revenue': revenue,
'tickets': tickets
};
getTypeName() => "SalesTrendBucket";
TypeContext? context = _ctx;
}
class RefreshmentsProduct implements IConvertible
{
int? ticketTypeId;
String? name;
int? units;
double? revenue;
int? orders;
DateTime? lastSoldAt;
RefreshmentsProduct({this.ticketTypeId,this.name,this.units,this.revenue,this.orders,this.lastSoldAt});
RefreshmentsProduct.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ticketTypeId = json['ticketTypeId'];
name = json['name'];
units = json['units'];
revenue = JsonConverters.toDouble(json['revenue']);
orders = json['orders'];
lastSoldAt = JsonConverters.fromJson(json['lastSoldAt'],'DateTime',context!);
return this;
}
Map<String, dynamic> toJson() => {
'ticketTypeId': ticketTypeId,
'name': name,
'units': units,
'revenue': revenue,
'orders': orders,
'lastSoldAt': JsonConverters.toJson(lastSoldAt,'DateTime',context!)
};
getTypeName() => "RefreshmentsProduct";
TypeContext? context = _ctx;
}
class RefreshmentsEventRow implements IConvertible
{
int? eventId;
String? eventName;
DateTime? eventDate;
double? revenue;
int? units;
int? orders;
int? attendance;
double? perCap;
RefreshmentsEventRow({this.eventId,this.eventName,this.eventDate,this.revenue,this.units,this.orders,this.attendance,this.perCap});
RefreshmentsEventRow.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
eventId = json['eventId'];
eventName = json['eventName'];
eventDate = JsonConverters.fromJson(json['eventDate'],'DateTime',context!);
revenue = JsonConverters.toDouble(json['revenue']);
units = json['units'];
orders = json['orders'];
attendance = json['attendance'];
perCap = JsonConverters.toDouble(json['perCap']);
return this;
}
Map<String, dynamic> toJson() => {
'eventId': eventId,
'eventName': eventName,
'eventDate': JsonConverters.toJson(eventDate,'DateTime',context!),
'revenue': revenue,
'units': units,
'orders': orders,
'attendance': attendance,
'perCap': perCap
};
getTypeName() => "RefreshmentsEventRow";
TypeContext? context = _ctx;
}
class SalesHourBucket implements IConvertible
{
int? hour;
double? revenue;
int? orders;
int? tickets;
SalesHourBucket({this.hour,this.revenue,this.orders,this.tickets});
SalesHourBucket.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
hour = json['hour'];
revenue = JsonConverters.toDouble(json['revenue']);
orders = json['orders'];
tickets = json['tickets'];
return this;
}
Map<String, dynamic> toJson() => {
'hour': hour,
'revenue': revenue,
'orders': orders,
'tickets': tickets
};
getTypeName() => "SalesHourBucket";
TypeContext? context = _ctx;
}
class SalesDowBucket implements IConvertible
{
int? dow;
double? revenue;
int? orders;
int? tickets;
SalesDowBucket({this.dow,this.revenue,this.orders,this.tickets});
SalesDowBucket.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
dow = json['dow'];
revenue = JsonConverters.toDouble(json['revenue']);
orders = json['orders'];
tickets = json['tickets'];
return this;
}
Map<String, dynamic> toJson() => {
'dow': dow,
'revenue': revenue,
'orders': orders,
'tickets': tickets
};
getTypeName() => "SalesDowBucket";
TypeContext? context = _ctx;
}
class RefreshmentsPaymentMethodRow implements IConvertible
{
String? paymentMethodId;
double? revenue;
int? units;
int? orders;
RefreshmentsPaymentMethodRow({this.paymentMethodId,this.revenue,this.units,this.orders});
RefreshmentsPaymentMethodRow.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
paymentMethodId = json['paymentMethodId'];
revenue = JsonConverters.toDouble(json['revenue']);
units = json['units'];
orders = json['orders'];
return this;
}
Map<String, dynamic> toJson() => {
'paymentMethodId': paymentMethodId,
'revenue': revenue,
'units': units,
'orders': orders
};
getTypeName() => "RefreshmentsPaymentMethodRow";
TypeContext? context = _ctx;
}
class RefreshmentsRecentOrder implements IConvertible
{
int? ticketId;
DateTime? createdAt;
String? eventName;
double? amount;
int? units;
String? paymentMethodId;
RefreshmentsRecentOrder({this.ticketId,this.createdAt,this.eventName,this.amount,this.units,this.paymentMethodId});
RefreshmentsRecentOrder.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ticketId = json['ticketId'];
createdAt = JsonConverters.fromJson(json['createdAt'],'DateTime',context!);
eventName = json['eventName'];
amount = JsonConverters.toDouble(json['amount']);
units = json['units'];
paymentMethodId = json['paymentMethodId'];
return this;
}
Map<String, dynamic> toJson() => {
'ticketId': ticketId,
'createdAt': JsonConverters.toJson(createdAt,'DateTime',context!),
'eventName': eventName,
'amount': amount,
'units': units,
'paymentMethodId': paymentMethodId
};
getTypeName() => "RefreshmentsRecentOrder";
TypeContext? context = _ctx;
}
class RefreshmentsOverviewResult implements IConvertible
{
RefreshmentsKpis? current;
RefreshmentsKpis? previous;
RefreshmentsDeltas? delta;
List<SalesTrendBucket>? trend;
List<SalesTrendBucket>? previousTrend;
List<RefreshmentsProduct>? products;
List<RefreshmentsEventRow>? events;
List<SalesHourBucket>? byHourOfDay;
List<SalesDowBucket>? byDayOfWeek;
List<RefreshmentsPaymentMethodRow>? byPaymentMethod;
List<RefreshmentsRecentOrder>? recentOrders;
bool? hasAnyDataEver;
String? bucket;
DateTime? freshnessUtc;
int? statusCode;
String? message;
RefreshmentsOverviewResult({this.current,this.previous,this.delta,this.trend,this.previousTrend,this.products,this.events,this.byHourOfDay,this.byDayOfWeek,this.byPaymentMethod,this.recentOrders,this.hasAnyDataEver,this.bucket,this.freshnessUtc,this.statusCode,this.message});
RefreshmentsOverviewResult.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
current = JsonConverters.fromJson(json['current'],'RefreshmentsKpis',context!);
previous = JsonConverters.fromJson(json['previous'],'RefreshmentsKpis',context!);
delta = JsonConverters.fromJson(json['delta'],'RefreshmentsDeltas',context!);
trend = JsonConverters.fromJson(json['trend'],'List<SalesTrendBucket>',context!);
previousTrend = JsonConverters.fromJson(json['previousTrend'],'List<SalesTrendBucket>',context!);
products = JsonConverters.fromJson(json['products'],'List<RefreshmentsProduct>',context!);
events = JsonConverters.fromJson(json['events'],'List<RefreshmentsEventRow>',context!);
byHourOfDay = JsonConverters.fromJson(json['byHourOfDay'],'List<SalesHourBucket>',context!);
byDayOfWeek = JsonConverters.fromJson(json['byDayOfWeek'],'List<SalesDowBucket>',context!);
byPaymentMethod = JsonConverters.fromJson(json['byPaymentMethod'],'List<RefreshmentsPaymentMethodRow>',context!);
recentOrders = JsonConverters.fromJson(json['recentOrders'],'List<RefreshmentsRecentOrder>',context!);
hasAnyDataEver = json['hasAnyDataEver'];
bucket = json['bucket'];
freshnessUtc = JsonConverters.fromJson(json['freshnessUtc'],'DateTime',context!);
statusCode = json['statusCode'];
message = json['message'];
return this;
}
Map<String, dynamic> toJson() => {
'current': JsonConverters.toJson(current,'RefreshmentsKpis',context!),
'previous': JsonConverters.toJson(previous,'RefreshmentsKpis',context!),
'delta': JsonConverters.toJson(delta,'RefreshmentsDeltas',context!),
'trend': JsonConverters.toJson(trend,'List<SalesTrendBucket>',context!),
'previousTrend': JsonConverters.toJson(previousTrend,'List<SalesTrendBucket>',context!),
'products': JsonConverters.toJson(products,'List<RefreshmentsProduct>',context!),
'events': JsonConverters.toJson(events,'List<RefreshmentsEventRow>',context!),
'byHourOfDay': JsonConverters.toJson(byHourOfDay,'List<SalesHourBucket>',context!),
'byDayOfWeek': JsonConverters.toJson(byDayOfWeek,'List<SalesDowBucket>',context!),
'byPaymentMethod': JsonConverters.toJson(byPaymentMethod,'List<RefreshmentsPaymentMethodRow>',context!),
'recentOrders': JsonConverters.toJson(recentOrders,'List<RefreshmentsRecentOrder>',context!),
'hasAnyDataEver': hasAnyDataEver,
'bucket': bucket,
'freshnessUtc': JsonConverters.toJson(freshnessUtc,'DateTime',context!),
'statusCode': statusCode,
'message': message
};
getTypeName() => "RefreshmentsOverviewResult";
TypeContext? context = _ctx;
}
class RefreshmentsOverviewRequest implements IConvertible
{
int? ownerId;
int? seriesId;
DateTime? fromUtc;
DateTime? toUtc;
DateTime? compareFromUtc;
DateTime? compareToUtc;
String? bucket;
int? topEventsLimit;
int? recentOrdersLimit;
RefreshmentsOverviewRequest({this.ownerId,this.seriesId,this.fromUtc,this.toUtc,this.compareFromUtc,this.compareToUtc,this.bucket,this.topEventsLimit,this.recentOrdersLimit});
RefreshmentsOverviewRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ownerId = json['ownerId'];
seriesId = json['seriesId'];
fromUtc = JsonConverters.fromJson(json['fromUtc'],'DateTime',context!);
toUtc = JsonConverters.fromJson(json['toUtc'],'DateTime',context!);
compareFromUtc = JsonConverters.fromJson(json['compareFromUtc'],'DateTime',context!);
compareToUtc = JsonConverters.fromJson(json['compareToUtc'],'DateTime',context!);
bucket = json['bucket'];
topEventsLimit = json['topEventsLimit'];
recentOrdersLimit = json['recentOrdersLimit'];
return this;
}
Map<String, dynamic> toJson() => {
'ownerId': ownerId,
'seriesId': seriesId,
'fromUtc': JsonConverters.toJson(fromUtc,'DateTime',context!),
'toUtc': JsonConverters.toJson(toUtc,'DateTime',context!),
'compareFromUtc': JsonConverters.toJson(compareFromUtc,'DateTime',context!),
'compareToUtc': JsonConverters.toJson(compareToUtc,'DateTime',context!),
'bucket': bucket,
'topEventsLimit': topEventsLimit,
'recentOrdersLimit': recentOrdersLimit
};
getTypeName() => "RefreshmentsOverviewRequest";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'stubbur_app.azurewebsites.net', types: <String, TypeInfo> {
'RefreshmentsKpis': TypeInfo(TypeOf.Class, create:() => RefreshmentsKpis()),
'KpiDelta': TypeInfo(TypeOf.Class, create:() => KpiDelta()),
'RefreshmentsDeltas': TypeInfo(TypeOf.Class, create:() => RefreshmentsDeltas()),
'SalesTrendBucket': TypeInfo(TypeOf.Class, create:() => SalesTrendBucket()),
'RefreshmentsProduct': TypeInfo(TypeOf.Class, create:() => RefreshmentsProduct()),
'RefreshmentsEventRow': TypeInfo(TypeOf.Class, create:() => RefreshmentsEventRow()),
'SalesHourBucket': TypeInfo(TypeOf.Class, create:() => SalesHourBucket()),
'SalesDowBucket': TypeInfo(TypeOf.Class, create:() => SalesDowBucket()),
'RefreshmentsPaymentMethodRow': TypeInfo(TypeOf.Class, create:() => RefreshmentsPaymentMethodRow()),
'RefreshmentsRecentOrder': TypeInfo(TypeOf.Class, create:() => RefreshmentsRecentOrder()),
'RefreshmentsOverviewResult': TypeInfo(TypeOf.Class, create:() => RefreshmentsOverviewResult()),
'List<SalesTrendBucket>': TypeInfo(TypeOf.Class, create:() => <SalesTrendBucket>[]),
'List<RefreshmentsProduct>': TypeInfo(TypeOf.Class, create:() => <RefreshmentsProduct>[]),
'List<RefreshmentsEventRow>': TypeInfo(TypeOf.Class, create:() => <RefreshmentsEventRow>[]),
'List<SalesHourBucket>': TypeInfo(TypeOf.Class, create:() => <SalesHourBucket>[]),
'List<SalesDowBucket>': TypeInfo(TypeOf.Class, create:() => <SalesDowBucket>[]),
'List<RefreshmentsPaymentMethodRow>': TypeInfo(TypeOf.Class, create:() => <RefreshmentsPaymentMethodRow>[]),
'List<RefreshmentsRecentOrder>': TypeInfo(TypeOf.Class, create:() => <RefreshmentsRecentOrder>[]),
'RefreshmentsOverviewRequest': TypeInfo(TypeOf.Class, create:() => RefreshmentsOverviewRequest()),
});
Dart RefreshmentsOverviewRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /sales/refreshments/overview HTTP/1.1
Host: stubbur-app.azurewebsites.net
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
ownerId: 0,
seriesId: 0,
fromUtc: 0001-01-01,
toUtc: 0001-01-01,
compareFromUtc: 0001-01-01,
compareToUtc: 0001-01-01,
bucket: String,
topEventsLimit: 0,
recentOrdersLimit: 0
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
current:
{
revenue: 0,
refunded: 0,
units: 0,
orders: 0,
aov: 0,
unitsPerOrder: 0,
attendance: 0,
perCap: 0
},
previous:
{
revenue: 0,
refunded: 0,
units: 0,
orders: 0,
aov: 0,
unitsPerOrder: 0,
attendance: 0,
perCap: 0
},
delta:
{
revenue:
{
abs: 0,
pct: 0,
dir: String
},
refunded:
{
abs: 0,
pct: 0,
dir: String
},
units:
{
abs: 0,
pct: 0,
dir: String
},
orders:
{
abs: 0,
pct: 0,
dir: String
},
aov:
{
abs: 0,
pct: 0,
dir: String
},
perCap:
{
abs: 0,
pct: 0,
dir: String
}
},
trend:
[
{
bucket: 0001-01-01,
revenue: 0,
tickets: 0
}
],
previousTrend:
[
{
bucket: 0001-01-01,
revenue: 0,
tickets: 0
}
],
products:
[
{
ticketTypeId: 0,
name: String,
units: 0,
revenue: 0,
orders: 0,
lastSoldAt: 0001-01-01
}
],
events:
[
{
eventId: 0,
eventName: String,
eventDate: 0001-01-01,
revenue: 0,
units: 0,
orders: 0,
attendance: 0,
perCap: 0
}
],
byHourOfDay:
[
{
hour: 0,
revenue: 0,
orders: 0,
tickets: 0
}
],
byDayOfWeek:
[
{
dow: 0,
revenue: 0,
orders: 0,
tickets: 0
}
],
byPaymentMethod:
[
{
paymentMethodId: String,
revenue: 0,
units: 0,
orders: 0
}
],
recentOrders:
[
{
ticketId: 0,
createdAt: 0001-01-01,
eventName: String,
amount: 0,
units: 0,
paymentMethodId: String
}
],
hasAnyDataEver: False,
bucket: String,
freshnessUtc: 0001-01-01,
statusCode: 0,
message: String
}