/* Options: Date: 2025-05-05 17:47:16 SwiftVersion: 6.0 Version: 8.61 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://prod-api-agency-orch-mb-dhc.rapp-customers.co.uk //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: CreateOrderRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/v1/order", "POST") public class CreateOrderRequest : CreateOrderBase, IReturn, IGet { public typealias Return = CreateOrderResponse required public init(){ super.init() } required public init(from decoder: Decoder) throws { try super.init(from: decoder) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) } } public class CreateOrderResponse : Codable { public var guid:String? public var reference:String? public var responseStatus:ResponseStatus? public var backOrderReference:String? required public init(){} } public enum Source : Int, Codable { case OnlineShowroom = 1 case OneAdmin = 2 } public class Customer : SalesforceCustomer { public var profileId:String? public var preferences:Preferences? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case profileId case preferences } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) profileId = try container.decodeIfPresent(String.self, forKey: .profileId) preferences = try container.decodeIfPresent(Preferences.self, forKey: .preferences) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if profileId != nil { try container.encode(profileId, forKey: .profileId) } if preferences != nil { try container.encode(preferences, forKey: .preferences) } } } public class OutrightPurchase : Codable { public var isOutrightPurchase:Bool? public var reference:String? public var discountRate:Double? public var bm7NST:String? public var isBackOrder:Bool? public var isCOPConverter:Bool? required public init(){} } public class Vehicle : Codable { public var vin:String? required public init(){} } public class FinanceCriteria : Codable { public var key:String? public var name:String? public var type:String? public var isDefault:Bool? public var term:Term? public var deposit:Deposit? public var mileage:Mileage? public var advanceRentals:AdvanceRentals? public var isPersonalised:Bool? public var regularPayment:String? public var partExchange:String? public var settlement:String? public var customerType:String? public var vehicleType:VehicleType? required public init(){} } public enum MotabilityType : Int, Codable { case PIP = 1 case WPMS = 2 case UNASSIGNED = 3 } public class CreateOrderBase : Codable { public var source:Source? public var gssnId:String? public var additionalInformation:String? public var cash:Bool? public var finance:Bool? public var customer:Customer? public var vehicle:Vehicle? public var financeCriteria:FinanceCriteria? public var backOrderGuid:String? public var tagUrl:String? public var outrightPurchase:OutrightPurchase? public var motability:Bool? public var motabilityPricingId:Int? public var financeApplicationReference:String? public var specialist:Bool? public var gasId:String? public var personalisedItemOfferIds:[Int]? public var suggestedVin:String? public var nonOptimumReason:String? public var motabilityType:MotabilityType? public var estimatedHandoverDate:String? required public init(){} } public class Address : Codable { public var property:String? public var street:String? public var town:String? public var county:String? public var locality:String? public var postcode:String? required public init(){} } public class Preferences : Codable { public var optinEmail:Bool? public var optinPost:Bool? public var optinSMS:Bool? public var optinTelephone:Bool? required public init(){} } public enum CustomerMode : Int, Codable { case Private = 1 case Business = 2 case Motability = 3 } public class SalesforceCustomer : ICustomer, Codable { public var customerId:String? public var isCiam:Bool? public var companyName:String? public var title:String? public var firstname:String? public var surname:String? public var emailAddress:String? public var telephone:String? public var address:Address? public var mode:CustomerMode? required public init(){} } public protocol ICustomer { var address:Address? { get set } var companyName:String? { get set } var customerId:String? { get set } var emailAddress:String? { get set } var firstname:String? { get set } var isCiam:Bool? { get set } var mode:CustomerMode? { get set } var surname:String? { get set } var telephone:String? { get set } var title:String? { get set } } public class Term : Codable { public var options:[Option] = [] required public init(){} } public class Deposit : Codable { public var `default`:String? required public init(){} } public class Mileage : Codable { public var options:[Option] = [] required public init(){} } public class AdvanceRentals : Codable { public var options:[Option] = [] required public init(){} } public enum VehicleType : String, Codable { case UNASSIGNED case NEW case USED } public class Option : Codable { public var isDefault:Bool? public var value:Int? required public init(){} }