/* Options: Date: 2025-05-04 23:32:14 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: CdrReport.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/reports/cdr") public class CdrReport : ReportRequest, IReturn { public typealias Return = ReportInfo public var timeZoneId:String? public var startDate:String? public var endDate:String? public var customerId:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case timeZoneId case startDate case endDate case customerId } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) timeZoneId = try container.decodeIfPresent(String.self, forKey: .timeZoneId) startDate = try container.decodeIfPresent(String.self, forKey: .startDate) endDate = try container.decodeIfPresent(String.self, forKey: .endDate) customerId = try container.decodeIfPresent(String.self, forKey: .customerId) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if timeZoneId != nil { try container.encode(timeZoneId, forKey: .timeZoneId) } if startDate != nil { try container.encode(startDate, forKey: .startDate) } if endDate != nil { try container.encode(endDate, forKey: .endDate) } if customerId != nil { try container.encode(customerId, forKey: .customerId) } } } 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 }