Requires any of the roles: | SystemAdministrator, Manager, Customer |
All Verbs | /reports/call-center-detail |
---|
import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';
abstract class ReportRequest implements IPost
{
/**
* The account ID this report should be run for
*/
// @ApiMember(Description="The account ID this report should be run for")
String? accountId;
/**
* The email address to notify after the report is run
*/
// @ApiMember(Description="The email address to notify after the report is run")
String? emailAddressToNotify;
/**
* The webhook to call after the report is complete with the data from the report
*/
// @ApiMember(Description="The webhook to call after the report is complete with the data from the report")
String? webhookUrl;
ReportRequest({this.accountId,this.emailAddressToNotify,this.webhookUrl});
ReportRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
accountId = json['accountId'];
emailAddressToNotify = json['emailAddressToNotify'];
webhookUrl = json['webhookUrl'];
return this;
}
Map<String, dynamic> toJson() => {
'accountId': accountId,
'emailAddressToNotify': emailAddressToNotify,
'webhookUrl': webhookUrl
};
getTypeName() => "ReportRequest";
TypeContext? context = _ctx;
}
enum ReportStatuses
{
Queued,
Running,
Completed,
Error,
}
class ReportInfo implements IConvertible
{
String? id;
String? name;
ReportStatuses? status;
String? statusMessage;
String? dateCreated;
String? dateUpdated;
String? downloadLink;
String? jobId;
String? emailAddressToNotify;
String? server;
ReportInfo({this.id,this.name,this.status,this.statusMessage,this.dateCreated,this.dateUpdated,this.downloadLink,this.jobId,this.emailAddressToNotify,this.server});
ReportInfo.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
status = JsonConverters.fromJson(json['status'],'ReportStatuses',context!);
statusMessage = json['statusMessage'];
dateCreated = json['dateCreated'];
dateUpdated = json['dateUpdated'];
downloadLink = json['downloadLink'];
jobId = json['jobId'];
emailAddressToNotify = json['emailAddressToNotify'];
server = json['server'];
return this;
}
Map<String, dynamic> toJson() => {
'id': id,
'name': name,
'status': JsonConverters.toJson(status,'ReportStatuses',context!),
'statusMessage': statusMessage,
'dateCreated': dateCreated,
'dateUpdated': dateUpdated,
'downloadLink': downloadLink,
'jobId': jobId,
'emailAddressToNotify': emailAddressToNotify,
'server': server
};
getTypeName() => "ReportInfo";
TypeContext? context = _ctx;
}
class CallCenterDetailReport extends ReportRequest implements IConvertible
{
String? startDate;
String? endDate;
String? timeZoneId;
String? customerId;
CallCenterDetailReport({this.startDate,this.endDate,this.timeZoneId,this.customerId});
CallCenterDetailReport.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
super.fromMap(json);
startDate = json['startDate'];
endDate = json['endDate'];
timeZoneId = json['timeZoneId'];
customerId = json['customerId'];
return this;
}
Map<String, dynamic> toJson() => super.toJson()..addAll({
'startDate': startDate,
'endDate': endDate,
'timeZoneId': timeZoneId,
'customerId': customerId
});
getTypeName() => "CallCenterDetailReport";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'team.evovoice.io', types: <String, TypeInfo> {
'ReportRequest': TypeInfo(TypeOf.AbstractClass),
'ReportStatuses': TypeInfo(TypeOf.Enum, enumValues:ReportStatuses.values),
'ReportInfo': TypeInfo(TypeOf.Class, create:() => ReportInfo()),
'CallCenterDetailReport': TypeInfo(TypeOf.Class, create:() => CallCenterDetailReport()),
});
Dart CallCenterDetailReport 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 /reports/call-center-detail HTTP/1.1
Host: team.evovoice.io
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
startDate: String,
endDate: String,
timeZoneId: String,
customerId: String,
accountId: String,
emailAddressToNotify: String,
webhookUrl: String
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { id: String, name: String, status: Queued, statusMessage: String, dateCreated: String, dateUpdated: String, downloadLink: String, jobId: String, emailAddressToNotify: String, server: String }