/* Options: Date: 2025-07-07 11:37:13 SwiftVersion: 5.0 Version: 8.22 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://dev-api-booster.richemont.com //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: UpdateCustomer.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/customer/{boosterCustomerId}", "PUT") public class UpdateCustomer : Customer { /** * Booster customer Id */ // @ApiMember(Description="Booster customer Id") public var boosterCustomerId:Int required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case boosterCustomerId } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) boosterCustomerId = try container.decodeIfPresent(Int.self, forKey: .boosterCustomerId) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if boosterCustomerId != nil { try container.encode(boosterCustomerId, forKey: .boosterCustomerId) } } } public class Email : Codable { /** * Email */ // @ApiMember(Description="Email", IsRequired=true) public var email:String /** * Main email */ // @ApiMember(Description="Main email", IsRequired=true) public var isMainEmail:Bool required public init(){} } public class Phone : Codable { /** * Phone e.g. cn: 13888889999, jp: 352858088, kr: 023123456 */ // @ApiMember(Description="Phone e.g. cn: 13888889999, jp: 352858088, kr: 023123456", IsRequired=true) public var phone:String /** * Prefix Country Id e.g. it, fr, az */ // @ApiMember(Description="Prefix Country Id e.g. it, fr, az", IsRequired=true) public var countryPrefix:String /** * Phone type e.g. 'Home', 'Mobile', 'Work', 'Other', 'Secondary Address' */ // @ApiMember(Description="Phone type e.g. 'Home', 'Mobile', 'Work', 'Other', 'Secondary Address'") public var phoneType:String /** * Main Phone */ // @ApiMember(Description="Main Phone", IsRequired=true) public var isMainPhone:Bool required public init(){} } public class Address : Codable { /** * Address type e.g. Home, Office, Shipping */ // @ApiMember(Description="Address type e.g. Home, Office, Shipping", IsRequired=true) public var addressType:String /** * Country Id e.g. it, cn, az, gb, de */ // @ApiMember(Description="Country Id e.g. it, cn, az, gb, de", IsRequired=true) public var countryId:String /** * House Number */ // @ApiMember(Description="House Number") public var houseNumber:String /** * Region/State */ // @ApiMember(Description="Region/State") public var stateId:String /** * City Name */ // @ApiMember(Description="City Name") public var city:String /** * Postal Code */ // @ApiMember(Description="Postal Code") public var zipCode:String /** * Street Name and Number */ // @ApiMember(Description="Street Name and Number") public var street:String /** * Street 2 */ // @ApiMember(Description="Street 2") public var street2:String /** * Street 3 */ // @ApiMember(Description="Street 3") public var street3:String /** * Street 4 */ // @ApiMember(Description="Street 4") public var street4:String /** * Street 5 */ // @ApiMember(Description="Street 5") public var street5:String /** * Main Address */ // @ApiMember(Description="Main Address", IsRequired=true) public var isMainAddress:Bool /** * Post Office Box */ // @ApiMember(Description="Post Office Box") public var poBox:String /** * Additional Information */ // @ApiMember(Description="Additional Information") public var additionalInformation:String required public init(){} } public class Event : Codable { /** * Event type e.g. 'Birthday', 'Wedding', 'Anniversary', 'Barmitza', 'Other' */ // @ApiMember(Description="Event type e.g. 'Birthday', 'Wedding', 'Anniversary', 'Barmitza', 'Other'", IsRequired=true) public var eventType:String /** * Event date e.g. '2021-01-20' */ // @ApiMember(Description="Event date e.g. '2021-01-20'", IsRequired=true) public var eventDate:Date /** * Event notes */ // @ApiMember(Description="Event notes") public var eventNotes:String /** * Event other name */ // @ApiMember(Description="Event other name") public var eventOtherName:String required public init(){} } public class Interest : Codable { /** * Interest description */ // @ApiMember(Description="Interest description", IsRequired=true) public var interest:String /** * SAP Interest ID, e.g. 'CA-1' */ // @ApiMember(Description="SAP Interest ID, e.g. 'CA-1'", IsRequired=true) public var sapInterestId:String /** * Interest description translation */ // @ApiMember(Description="Interest description translation") public var translation:String required public init(){} } public class Hobby : Codable { /** * Hobby description */ // @ApiMember(Description="Hobby description", IsRequired=true) public var hobby:String /** * SAP Hobby ID, e.g. 'ART' */ // @ApiMember(Description="SAP Hobby ID, e.g. 'ART'", IsRequired=true) public var sapHobbyId:String /** * Hobby description translation */ // @ApiMember(Description="Hobby description translation") public var translation:String required public init(){} } public class ProductCollection : Codable { /** * Product Collection description */ // @ApiMember(Description="Product Collection description", IsRequired=true) public var productCollection:String /** * SAP ProductCollection ID, e.g. 'CA-1' */ // @ApiMember(Description="SAP ProductCollection ID, e.g. 'CA-1'", IsRequired=true) public var sapProductCollectionId:String /** * Product Collection description translation */ // @ApiMember(Description="Product Collection description translation", IsRequired=true) public var translation:String required public init(){} } public class Customer : Codable { /** * Title e.g. 'Mr & Mrs', 'Mr.', 'Mrs.', 'Sama', 'Captain' - Mandatory only when customer type is 'PRIVATE' */ // @ApiMember(Description="Title e.g. 'Mr & Mrs', 'Mr.', 'Mrs.', 'Sama', 'Captain' - Mandatory only when customer type is 'PRIVATE'") public var title:String /** * First Name */ // @ApiMember(Description="First Name") public var firstName:String /** * Last Name - Mandatory only when customer type is 'PRIVATE' */ // @ApiMember(Description="Last Name - Mandatory only when customer type is 'PRIVATE'") public var lastName:String /** * First Name Not Latin */ // @ApiMember(Description="First Name Not Latin") public var firstNameNotLatin:String /** * Last Name Not Latin */ // @ApiMember(Description="Last Name Not Latin") public var lastNameNotLatin:String /** * Middle Name */ // @ApiMember(Description="Middle Name") public var middleName:String /** * Name Suffix */ // @ApiMember(Description="Name Suffix") public var nameSuffix:String /** * Can be Contacted by Maison e.g. true or false */ // @ApiMember(Description="Can be Contacted by Maison e.g. true or false", IsRequired=true) public var canBeContactedByMaison:Bool /** * Customer Type e.g. 'PRIVATE' or 'COMPANY' */ // @ApiMember(Description="Customer Type e.g. 'PRIVATE' or 'COMPANY'", IsRequired=true) public var clientType:String /** * Company Name - Mandatory only when customer type is 'COMPANY' */ // @ApiMember(Description="Company Name - Mandatory only when customer type is 'COMPANY'") public var companyName:String /** * Language Id e.g. ita, chi, aze, eng, ger - Mandatory only when customer type is 'PRIVATE' */ // @ApiMember(Description="Language Id e.g. ita, chi, aze, eng, ger - Mandatory only when customer type is 'PRIVATE'") public var languageId:String /** * Gender e.g. M, F - Mandatory only when customer type is 'PRIVATE' */ // @ApiMember(Description="Gender e.g. M, F - Mandatory only when customer type is 'PRIVATE'") public var gender:String /** * Country Id e.g. it, cn, az, gb, de */ // @ApiMember(Description="Country Id e.g. it, cn, az, gb, de", IsRequired=true) public var countryId:String /** * Birth Date e.g. '2020-12-30' */ // @ApiMember(Description="Birth Date e.g. '2020-12-30'") public var birthDate:Date? /** * Customer reference */ // @ApiMember(Description="Customer reference") public var customerReference:String /** * POS Code e.g. ES100:102048 */ // @ApiMember(Description="POS Code e.g. ES100:102048", IsRequired=true) public var posCode:String /** * Brand e.g. CAR, MTB */ // @ApiMember(Description="Brand e.g. CAR, MTB", IsRequired=true) public var brand:String /** * Wedding Date, e.g. '2020-01-18' */ // @ApiMember(Description="Wedding Date, e.g. '2020-01-18'") public var weddingDate:Date? /** * Preferred Contact Method e.g. 'Fax', 'Tel', 'EMail', 'Mail', 'Survey' */ // @ApiMember(Description="Preferred Contact Method e.g. 'Fax', 'Tel', 'EMail', 'Mail', 'Survey'") public var preferredContactMethod:String /** * Provide 'true' if you want to be contacted by email. Leave empty or 'false' if you do not. */ // @ApiMember(Description="Provide 'true' if you want to be contacted by email. Leave empty or 'false' if you do not.") public var contactByEmailFlag:Bool /** * Provide 'true' if you want to be contacted by mail. Leave empty or 'false' if you do not. */ // @ApiMember(Description="Provide 'true' if you want to be contacted by mail. Leave empty or 'false' if you do not.") public var contactByMailFlag:Bool /** * Provide 'true' if you want to be contacted by phone. Leave empty or 'false' if you do not. */ // @ApiMember(Description="Provide 'true' if you want to be contacted by phone. Leave empty or 'false' if you do not.") public var contactByPhoneFlag:Bool /** * Provide 'true' if you want to be contacted by SMS. Leave empty or 'false' if you do not. */ // @ApiMember(Description="Provide 'true' if you want to be contacted by SMS. Leave empty or 'false' if you do not.") public var contactBySMSFlag:Bool /** * Provide 'true' if you want to be contacted by social media. Leave empty or 'false' if you do not. */ // @ApiMember(Description="Provide 'true' if you want to be contacted by social media. Leave empty or 'false' if you do not.") public var contactBySocialMediaFlag:Bool /** * Sale Representative Email e.g. rauf.aliyev@richemont.com */ // @ApiMember(Description="Sale Representative Email e.g. rauf.aliyev@richemont.com") public var saleRepresentativeEmail:String /** * Consent for allowing Cross Border Data Transfer */ // @ApiMember(Description="Consent for allowing Cross Border Data Transfer") public var allowStoreDataAbroad:Bool? /** * Consent for allowing Cross Border Data Transfer For TimeVallée */ // @ApiMember(Description="Consent for allowing Cross Border Data Transfer For TimeVallée") public var tvAllowStoreDataAbroad:Bool? /** * Customer emails */ // @ApiMember(Description="Customer emails") public var emails:[Email] = [] /** * Customer phones */ // @ApiMember(Description="Customer phones") public var phones:[Phone] = [] /** * Customer addresses */ // @ApiMember(Description="Customer addresses") public var addresses:[Address] = [] /** * Customer events */ // @ApiMember(Description="Customer events") public var events:[Event] = [] /** * Customer interests */ // @ApiMember(Description="Customer interests") public var interests:[Interest] = [] /** * Customer hobbies */ // @ApiMember(Description="Customer hobbies") public var hobbies:[Hobby] = [] /** * Customer product collections */ // @ApiMember(Description="Customer product collections") public var productCollections:[ProductCollection] = [] /** * Provide 'true' if you allow data sharing consent. Leave empty or 'false' if you do not. */ // @ApiMember(Description="Provide 'true' if you allow data sharing consent. Leave empty or 'false' if you do not.") public var dataSharingConsent:Bool? /** * Notes */ // @ApiMember(Description="Notes") public var notes:String /** * Reference Sale Representative Email */ // @ApiMember(Description="Reference Sale Representative Email") public var referenceSaleRepresentativeEmail:String /** * Registration Date */ // @ApiMember(Description="Registration Date") public var registrationDate:Date? required public init(){} } public class Address : Codable { /** * Country ID */ // @ApiMember(Description="Country ID") public var countryId:String /** * State ID */ // @ApiMember(Description="State ID") public var stateId:String /** * City Name */ // @ApiMember(Description="City Name") public var city:String /** * Street Name and Number */ // @ApiMember(Description="Street Name and Number") public var street:String /** * Postal Code */ // @ApiMember(Description="Postal Code") public var zipCode:String required public init(){} }