/* Options: Date: 2025-05-04 22:36:25 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: EndpointsReport.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * This report returns all of the endpoints broken down by type per tab */ // @Route("/reports/endpoints", "GET") // @Api(Description="This report returns all of the endpoints broken down by type per tab") public class EndpointsReport : ReportRequest, IReturn { public typealias Return = ReportInfo /** * The types of endpoints to return */ // @ApiMember(Description="The types of endpoints to return") public var types:[EndpointTypes]? /** * Filter by specific customer */ // @ApiMember(Description="Filter by specific customer") public var customerId:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case types case customerId } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) types = try container.decodeIfPresent([EndpointTypes].self, forKey: .types) ?? [] 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 types != nil { try container.encode(types, forKey: .types) } 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 enum EndpointTypes : String, Codable { case PhoneNumber case User case FaxNumber case EmailAddress case Unused_1 case Unused_2 case Unused_3 case Unused_4 case Unused_5 case Team case Assistant } 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 }