import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';
// @DataContract
class RequestSummary implements IConvertible
{
// @DataMember(Order=1)
String? name;
// @DataMember(Order=2)
int? totalRequests;
// @DataMember(Order=3)
int? totalRequestLength;
// @DataMember(Order=4)
int? minRequestLength;
// @DataMember(Order=5)
int? maxRequestLength;
// @DataMember(Order=6)
double? totalDuration;
// @DataMember(Order=7)
double? minDuration;
// @DataMember(Order=8)
double? maxDuration;
// @DataMember(Order=9)
Map<int,int?>? status;
// @DataMember(Order=10)
Map<String,int?>? durations;
// @DataMember(Order=11)
Map<String,int?>? apis;
// @DataMember(Order=12)
Map<String,int?>? users;
// @DataMember(Order=13)
Map<String,int?>? ips;
// @DataMember(Order=14)
Map<String,int?>? apiKeys;
RequestSummary({this.name,this.totalRequests,this.totalRequestLength,this.minRequestLength,this.maxRequestLength,this.totalDuration,this.minDuration,this.maxDuration,this.status,this.durations,this.apis,this.users,this.ips,this.apiKeys});
RequestSummary.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
name = json['name'];
totalRequests = json['totalRequests'];
totalRequestLength = json['totalRequestLength'];
minRequestLength = json['minRequestLength'];
maxRequestLength = json['maxRequestLength'];
totalDuration = JsonConverters.toDouble(json['totalDuration']);
minDuration = JsonConverters.toDouble(json['minDuration']);
maxDuration = JsonConverters.toDouble(json['maxDuration']);
status = JsonConverters.fromJson(json['status'],'Map<int,int?>',context!);
durations = JsonConverters.fromJson(json['durations'],'Map<String,int?>',context!);
apis = JsonConverters.fromJson(json['apis'],'Map<String,int?>',context!);
users = JsonConverters.fromJson(json['users'],'Map<String,int?>',context!);
ips = JsonConverters.fromJson(json['ips'],'Map<String,int?>',context!);
apiKeys = JsonConverters.fromJson(json['apiKeys'],'Map<String,int?>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'name': name,
'totalRequests': totalRequests,
'totalRequestLength': totalRequestLength,
'minRequestLength': minRequestLength,
'maxRequestLength': maxRequestLength,
'totalDuration': totalDuration,
'minDuration': minDuration,
'maxDuration': maxDuration,
'status': JsonConverters.toJson(status,'Map<int,int?>',context!),
'durations': JsonConverters.toJson(durations,'Map<String,int?>',context!),
'apis': JsonConverters.toJson(apis,'Map<String,int?>',context!),
'users': JsonConverters.toJson(users,'Map<String,int?>',context!),
'ips': JsonConverters.toJson(ips,'Map<String,int?>',context!),
'apiKeys': JsonConverters.toJson(apiKeys,'Map<String,int?>',context!)
};
getTypeName() => "RequestSummary";
TypeContext? context = _ctx;
}
// @DataContract
class AnalyticsReports implements IConvertible
{
// @DataMember(Order=1)
int? id;
// @DataMember(Order=2)
DateTime? created;
// @DataMember(Order=3)
double? version;
// @DataMember(Order=4)
Map<String,RequestSummary?>? apis;
// @DataMember(Order=5)
Map<String,RequestSummary?>? users;
// @DataMember(Order=6)
Map<String,RequestSummary?>? tags;
// @DataMember(Order=7)
Map<String,RequestSummary?>? status;
// @DataMember(Order=8)
Map<String,RequestSummary?>? days;
// @DataMember(Order=9)
Map<String,RequestSummary?>? apiKeys;
// @DataMember(Order=10)
Map<String,RequestSummary?>? ips;
// @DataMember(Order=11)
Map<String,RequestSummary?>? browsers;
// @DataMember(Order=12)
Map<String,RequestSummary?>? devices;
// @DataMember(Order=13)
Map<String,RequestSummary?>? bots;
// @DataMember(Order=14)
Map<String,int?>? durations;
AnalyticsReports({this.id,this.created,this.version,this.apis,this.users,this.tags,this.status,this.days,this.apiKeys,this.ips,this.browsers,this.devices,this.bots,this.durations});
AnalyticsReports.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
id = json['id'];
created = JsonConverters.fromJson(json['created'],'DateTime',context!);
version = JsonConverters.toDouble(json['version']);
apis = JsonConverters.fromJson(json['apis'],'Map<String,RequestSummary?>',context!);
users = JsonConverters.fromJson(json['users'],'Map<String,RequestSummary?>',context!);
tags = JsonConverters.fromJson(json['tags'],'Map<String,RequestSummary?>',context!);
status = JsonConverters.fromJson(json['status'],'Map<String,RequestSummary?>',context!);
days = JsonConverters.fromJson(json['days'],'Map<String,RequestSummary?>',context!);
apiKeys = JsonConverters.fromJson(json['apiKeys'],'Map<String,RequestSummary?>',context!);
ips = JsonConverters.fromJson(json['ips'],'Map<String,RequestSummary?>',context!);
browsers = JsonConverters.fromJson(json['browsers'],'Map<String,RequestSummary?>',context!);
devices = JsonConverters.fromJson(json['devices'],'Map<String,RequestSummary?>',context!);
bots = JsonConverters.fromJson(json['bots'],'Map<String,RequestSummary?>',context!);
durations = JsonConverters.fromJson(json['durations'],'Map<String,int?>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'id': id,
'created': JsonConverters.toJson(created,'DateTime',context!),
'version': version,
'apis': JsonConverters.toJson(apis,'Map<String,RequestSummary?>',context!),
'users': JsonConverters.toJson(users,'Map<String,RequestSummary?>',context!),
'tags': JsonConverters.toJson(tags,'Map<String,RequestSummary?>',context!),
'status': JsonConverters.toJson(status,'Map<String,RequestSummary?>',context!),
'days': JsonConverters.toJson(days,'Map<String,RequestSummary?>',context!),
'apiKeys': JsonConverters.toJson(apiKeys,'Map<String,RequestSummary?>',context!),
'ips': JsonConverters.toJson(ips,'Map<String,RequestSummary?>',context!),
'browsers': JsonConverters.toJson(browsers,'Map<String,RequestSummary?>',context!),
'devices': JsonConverters.toJson(devices,'Map<String,RequestSummary?>',context!),
'bots': JsonConverters.toJson(bots,'Map<String,RequestSummary?>',context!),
'durations': JsonConverters.toJson(durations,'Map<String,int?>',context!)
};
getTypeName() => "AnalyticsReports";
TypeContext? context = _ctx;
}
// @DataContract
class GetAnalyticsReportsResponse implements IConvertible
{
// @DataMember(Order=1)
AnalyticsReports? result;
// @DataMember(Order=2)
ResponseStatus? responseStatus;
GetAnalyticsReportsResponse({this.result,this.responseStatus});
GetAnalyticsReportsResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
result = JsonConverters.fromJson(json['result'],'AnalyticsReports',context!);
responseStatus = JsonConverters.fromJson(json['responseStatus'],'ResponseStatus',context!);
return this;
}
Map<String, dynamic> toJson() => {
'result': JsonConverters.toJson(result,'AnalyticsReports',context!),
'responseStatus': JsonConverters.toJson(responseStatus,'ResponseStatus',context!)
};
getTypeName() => "GetAnalyticsReportsResponse";
TypeContext? context = _ctx;
}
// @DataContract
class GetAnalyticsReports implements IGet, IConvertible
{
// @DataMember(Order=1)
DateTime? month;
// @DataMember(Order=2)
String? filter;
// @DataMember(Order=3)
String? value;
// @DataMember(Order=4)
bool? force;
GetAnalyticsReports({this.month,this.filter,this.value,this.force});
GetAnalyticsReports.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
month = JsonConverters.fromJson(json['month'],'DateTime',context!);
filter = json['filter'];
value = json['value'];
force = json['force'];
return this;
}
Map<String, dynamic> toJson() => {
'month': JsonConverters.toJson(month,'DateTime',context!),
'filter': filter,
'value': value,
'force': force
};
getTypeName() => "GetAnalyticsReports";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'blazordiffusion.com', types: <String, TypeInfo> {
'RequestSummary': TypeInfo(TypeOf.Class, create:() => RequestSummary()),
'Map<int,int?>': TypeInfo(TypeOf.Class, create:() => Map<int,int?>()),
'Map<String,int?>': TypeInfo(TypeOf.Class, create:() => Map<String,int?>()),
'AnalyticsReports': TypeInfo(TypeOf.Class, create:() => AnalyticsReports()),
'Map<String,RequestSummary?>': TypeInfo(TypeOf.Class, create:() => Map<String,RequestSummary?>()),
'GetAnalyticsReportsResponse': TypeInfo(TypeOf.Class, create:() => GetAnalyticsReportsResponse()),
'GetAnalyticsReports': TypeInfo(TypeOf.Class, create:() => GetAnalyticsReports()),
});
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 /csv/reply/GetAnalyticsReports HTTP/1.1
Host: blazordiffusion.com
Accept: text/csv
Content-Type: text/csv
Content-Length: length
{"month":"0001-01-01T00:00:00","filter":"String","value":"String","force":false}
HTTP/1.1 200 OK Content-Type: text/csv Content-Length: length {"result":{"id":0,"created":"0001-01-01T00:00:00","version":0,"apis":{"String":{"name":"String","totalRequests":0,"totalRequestLength":0,"minRequestLength":0,"maxRequestLength":0,"totalDuration":0,"minDuration":0,"maxDuration":0,"status":{"0":0},"durations":{"String":0},"apis":{"String":0},"users":{"String":0},"ips":{"String":0},"apiKeys":{"String":0}}},"users":{"String":{"name":"String","totalRequests":0,"totalRequestLength":0,"minRequestLength":0,"maxRequestLength":0,"totalDuration":0,"minDuration":0,"maxDuration":0,"status":{"0":0},"durations":{"String":0},"apis":{"String":0},"users":{"String":0},"ips":{"String":0},"apiKeys":{"String":0}}},"tags":{"String":{"name":"String","totalRequests":0,"totalRequestLength":0,"minRequestLength":0,"maxRequestLength":0,"totalDuration":0,"minDuration":0,"maxDuration":0,"status":{"0":0},"durations":{"String":0},"apis":{"String":0},"users":{"String":0},"ips":{"String":0},"apiKeys":{"String":0}}},"status":{"String":{"name":"String","totalRequests":0,"totalRequestLength":0,"minRequestLength":0,"maxRequestLength":0,"totalDuration":0,"minDuration":0,"maxDuration":0,"status":{"0":0},"durations":{"String":0},"apis":{"String":0},"users":{"String":0},"ips":{"String":0},"apiKeys":{"String":0}}},"days":{"String":{"name":"String","totalRequests":0,"totalRequestLength":0,"minRequestLength":0,"maxRequestLength":0,"totalDuration":0,"minDuration":0,"maxDuration":0,"status":{"0":0},"durations":{"String":0},"apis":{"String":0},"users":{"String":0},"ips":{"String":0},"apiKeys":{"String":0}}},"apiKeys":{"String":{"name":"String","totalRequests":0,"totalRequestLength":0,"minRequestLength":0,"maxRequestLength":0,"totalDuration":0,"minDuration":0,"maxDuration":0,"status":{"0":0},"durations":{"String":0},"apis":{"String":0},"users":{"String":0},"ips":{"String":0},"apiKeys":{"String":0}}},"ips":{"String":{"name":"String","totalRequests":0,"totalRequestLength":0,"minRequestLength":0,"maxRequestLength":0,"totalDuration":0,"minDuration":0,"maxDuration":0,"status":{"0":0},"durations":{"String":0},"apis":{"String":0},"users":{"String":0},"ips":{"String":0},"apiKeys":{"String":0}}},"browsers":{"String":{"name":"String","totalRequests":0,"totalRequestLength":0,"minRequestLength":0,"maxRequestLength":0,"totalDuration":0,"minDuration":0,"maxDuration":0,"status":{"0":0},"durations":{"String":0},"apis":{"String":0},"users":{"String":0},"ips":{"String":0},"apiKeys":{"String":0}}},"devices":{"String":{"name":"String","totalRequests":0,"totalRequestLength":0,"minRequestLength":0,"maxRequestLength":0,"totalDuration":0,"minDuration":0,"maxDuration":0,"status":{"0":0},"durations":{"String":0},"apis":{"String":0},"users":{"String":0},"ips":{"String":0},"apiKeys":{"String":0}}},"bots":{"String":{"name":"String","totalRequests":0,"totalRequestLength":0,"minRequestLength":0,"maxRequestLength":0,"totalDuration":0,"minDuration":0,"maxDuration":0,"status":{"0":0},"durations":{"String":0},"apis":{"String":0},"users":{"String":0},"ips":{"String":0},"apiKeys":{"String":0}}},"durations":{"String":0}},"responseStatus":{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}}