/* Options: Date: 2025-12-06 06:28:04 SwiftVersion: 6.0 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.dev.dynamics.trendsic.com //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: CampaignRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/v1/Campaign", "GET,POST,PUT,DELETE,OPTIONS") // @Route("/v1/Campaign/{CampaignId}", "GET,POST,PUT,DELETE,OPTIONS") public class CampaignRequest : IReturn, Codable { public typealias Return = CampaignResponse public var campaignId:Int? public var campaign:[Campaign] = [] required public init(){} } public class CampaignResponse : Codable { public var responseStatus:ResponseStatus? public var campaign:[CampaignExtended] = [] required public init(){} } public class Campaign : Codable { public var campaignId:Int? public var campaignTypeId:Int? public var campaignName:String? public var agentID:Int? public var subject:String? public var template:String? public var dateCreated:Date? public var dateDeleted:Date? public var frequency:String? public var startDate:Date? @TimeSpan public var timeOfDay:TimeInterval? public var lastRunAtUtc:Date? public var nextRunAtUtc:Date? public var timeZoneId:String? public var dayOfWeek:DayOfWeek? public var dayOfMonth:UInt8? public var isActive:Bool? public var createdUtc:Date? public var updatedUtc:Date? public var channels:DeliveryChannel? required public init(){} } public class CampaignExtended : Campaign { public var campaignType:String? public var agentName:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case campaignType case agentName } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) campaignType = try container.decodeIfPresent(String.self, forKey: .campaignType) agentName = try container.decodeIfPresent(String.self, forKey: .agentName) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if campaignType != nil { try container.encode(campaignType, forKey: .campaignType) } if agentName != nil { try container.encode(agentName, forKey: .agentName) } } } // @Flags() public enum DeliveryChannel : Int, Codable { case None = 0 case Email = 1 case Sms = 2 }