/* Options: Date: 2025-05-04 23:49:30 Version: 8.71 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://team.evovoice.io //GlobalNamespace: //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: CustomMetricReport.* //ExcludeTypes: //DefaultImports: package:servicestack/servicestack.dart,dart:typed_data */ 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 json) { fromMap(json); } fromMap(Map json) { accountId = json['accountId']; emailAddressToNotify = json['emailAddressToNotify']; webhookUrl = json['webhookUrl']; return this; } Map 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 json) { fromMap(json); } fromMap(Map 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 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; } // @Route("/reports/metric") class CustomMetricReport extends ReportRequest implements IReturn, IConvertible, IPost { String? startDate; String? endDate; String? metricName; String? timeZoneId; CustomMetricReport({this.startDate,this.endDate,this.metricName,this.timeZoneId}); CustomMetricReport.fromJson(Map json) { fromMap(json); } fromMap(Map json) { super.fromMap(json); startDate = json['startDate']; endDate = json['endDate']; metricName = json['metricName']; timeZoneId = json['timeZoneId']; return this; } Map toJson() => super.toJson()..addAll({ 'startDate': startDate, 'endDate': endDate, 'metricName': metricName, 'timeZoneId': timeZoneId }); createResponse() => ReportInfo(); getResponseTypeName() => "ReportInfo"; getTypeName() => "CustomMetricReport"; TypeContext? context = _ctx; } TypeContext _ctx = TypeContext(library: 'team.evovoice.io', types: { 'ReportRequest': TypeInfo(TypeOf.AbstractClass), 'ReportStatuses': TypeInfo(TypeOf.Enum, enumValues:ReportStatuses.values), 'ReportInfo': TypeInfo(TypeOf.Class, create:() => ReportInfo()), 'CustomMetricReport': TypeInfo(TypeOf.Class, create:() => CustomMetricReport()), });