// @DataContract
export class RequestSummary
{
// @DataMember(Order=1)
public name: string;
// @DataMember(Order=2)
public totalRequests: number;
// @DataMember(Order=3)
public totalRequestLength: number;
// @DataMember(Order=4)
public minRequestLength: number;
// @DataMember(Order=5)
public maxRequestLength: number;
// @DataMember(Order=6)
public totalDuration: number;
// @DataMember(Order=7)
public minDuration: number;
// @DataMember(Order=8)
public maxDuration: number;
// @DataMember(Order=9)
public status: { [index:number]: number; };
// @DataMember(Order=10)
public durations: { [index:string]: number; };
// @DataMember(Order=11)
public apis: { [index:string]: number; };
// @DataMember(Order=12)
public users: { [index:string]: number; };
// @DataMember(Order=13)
public ips: { [index:string]: number; };
// @DataMember(Order=14)
public apiKeys: { [index:string]: number; };
public constructor(init?: Partial<RequestSummary>) { (Object as any).assign(this, init); }
}
// @DataContract
export class AnalyticsReports
{
// @DataMember(Order=1)
public id: number;
// @DataMember(Order=2)
public created: string;
// @DataMember(Order=3)
public version: number;
// @DataMember(Order=4)
public apis: { [index:string]: RequestSummary; };
// @DataMember(Order=5)
public users: { [index:string]: RequestSummary; };
// @DataMember(Order=6)
public tags: { [index:string]: RequestSummary; };
// @DataMember(Order=7)
public status: { [index:string]: RequestSummary; };
// @DataMember(Order=8)
public days: { [index:string]: RequestSummary; };
// @DataMember(Order=9)
public apiKeys: { [index:string]: RequestSummary; };
// @DataMember(Order=10)
public ips: { [index:string]: RequestSummary; };
// @DataMember(Order=11)
public browsers: { [index:string]: RequestSummary; };
// @DataMember(Order=12)
public devices: { [index:string]: RequestSummary; };
// @DataMember(Order=13)
public bots: { [index:string]: RequestSummary; };
// @DataMember(Order=14)
public durations: { [index:string]: number; };
public constructor(init?: Partial<AnalyticsReports>) { (Object as any).assign(this, init); }
}
// @DataContract
export class GetAnalyticsReportsResponse
{
// @DataMember(Order=1)
public result: AnalyticsReports;
// @DataMember(Order=2)
public responseStatus: ResponseStatus;
public constructor(init?: Partial<GetAnalyticsReportsResponse>) { (Object as any).assign(this, init); }
}
// @DataContract
export class GetAnalyticsReports implements IGet
{
// @DataMember(Order=1)
public month?: string;
// @DataMember(Order=2)
public filter: string;
// @DataMember(Order=3)
public value: string;
// @DataMember(Order=4)
public force?: boolean;
public constructor(init?: Partial<GetAnalyticsReports>) { (Object as any).assign(this, init); }
}
TypeScript GetAnalyticsReports 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 /jsv/reply/GetAnalyticsReports HTTP/1.1
Host: test.servicestack.net
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
month: 0001-01-01,
filter: String,
value: String,
force: False
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
result:
{
id: 0,
created: 0001-01-01,
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
}
}
}