/* Options: Date: 2025-05-05 00:42:57 SwiftVersion: 6.0 Version: 8.71 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://team.evovoice.io //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: CustomMetricReport.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/reports/metric") public class CustomMetricReport : ReportRequest, IReturn { public typealias Return = ReportInfo public var startDate:String? public var endDate:String? public var metricName:String? public var timeZoneId:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case startDate case endDate case metricName case timeZoneId } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) startDate = try container.decodeIfPresent(String.self, forKey: .startDate) endDate = try container.decodeIfPresent(String.self, forKey: .endDate) metricName = try container.decodeIfPresent(String.self, forKey: .metricName) timeZoneId = try container.decodeIfPresent(String.self, forKey: .timeZoneId) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if startDate != nil { try container.encode(startDate, forKey: .startDate) } if endDate != nil { try container.encode(endDate, forKey: .endDate) } if metricName != nil { try container.encode(metricName, forKey: .metricName) } if timeZoneId != nil { try container.encode(timeZoneId, forKey: .timeZoneId) } } } public class ReportInfo : Codable { public var id:String? public var name:String? public var status:ReportStatuses? public var statusMessage:String? public var dateCreated:String? public var dateUpdated:String? public var downloadLink:String? public var jobId:String? public var emailAddressToNotify:String? public var server:String? required public init(){} } public class ReportRequest : IPost, Codable { /** * The account ID this report should be run for */ // @ApiMember(Description="The account ID this report should be run for") public var accountId:String? /** * The email address to notify after the report is run */ // @ApiMember(Description="The email address to notify after the report is run") public var emailAddressToNotify:String? /** * 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") public var webhookUrl:String? required public init(){} } public enum ReportStatuses : String, Codable { case Queued case Running case Completed case Error }