/* Options: Date: 2026-05-19 10:46:04 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: ExportCustomer.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/customer/{brand}/export", "POST") public class ExportCustomer : SearchCustomer, IReturn { public typealias Return = ExportCustomerResponse /** * Export Request ID of the API Consumers */ // @ApiMember(Description="Export Request ID of the API Consumers", IsRequired=true) public var downloadRequestId:String required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case downloadRequestId } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) downloadRequestId = try container.decodeIfPresent(String.self, forKey: .downloadRequestId) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if downloadRequestId != nil { try container.encode(downloadRequestId, forKey: .downloadRequestId) } } } public class ExportCustomerResponse : Codable { /** * Unique Identifier of the Export Request created */ // @ApiMember(Description="Unique Identifier of the Export Request created", IsRequired=true) public var asyncTaskId:String required public init(){} } public class GetCustomerInterest : 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 required public init(){} } public class GetCustomerHobby : Codable { /** * Hobby description */ // @ApiMember(Description="Hobby description") public var hobby:String /** * SAP Hobby ID, e.g. 'ART' */ // @ApiMember(Description="SAP Hobby ID, e.g. 'ART'") public var sapHobbyId:String required public init(){} } public class GetCustomerProductCollection : 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 required public init(){} } public class ProductCategory : Codable { /** * Brand Category ID */ // @ApiMember(Description="Brand Category ID") public var brandCategoryId:String /** * Grand Category ID */ // @ApiMember(Description="Grand Category ID", IsRequired=true) public var grandCategoryId:String /** * Master Category ID */ // @ApiMember(Description="Master Category ID") public var masterCategoryId:String /** * Category ID */ // @ApiMember(Description="Category ID") public var categoryId:String /** * Sub Category ID */ // @ApiMember(Description="Sub Category ID") public var subCategoryId:String required public init(){} } public class SearchCustomer : Codable { /** * Brand */ // @ApiMember(Description="Brand", IsRequired=true) public var brand:String /** * POS Legacy */ // @ApiMember(Description="POS Legacy", IsRequired=true) public var posCodes:[String] = [] /** * Search key could be: 'Name', 'Email', 'Phone' without prefix, 'BoosterCustomerId' OR 'SapCRMId' */ // @ApiMember(Description="Search key could be: 'Name', 'Email', 'Phone' without prefix, 'BoosterCustomerId' OR 'SapCRMId'") public var searchKey:String /** * Search by phone number - exact match */ // @ApiMember(Description="Search by phone number - exact match") public var phoneNumber:String /** * Search by email address - exact match */ // @ApiMember(Description="Search by email address - exact match") public var email:String /** * Values can be 'it', 'en' etc. */ // @ApiMember(Description="Values can be 'it', 'en' etc.") public var locationCountryIds:[String] = [] /** * Client Spending From e.g. '100' */ // @ApiMember(Description="Client Spending From e.g. '100'") public var clientSpendingFrom:Double? /** * Client Spending To e.g. '50000' */ // @ApiMember(Description="Client Spending To e.g. '50000'") public var clientSpendingTo:Double? /** * Customer Creation Date From e.g. '2022-01-01' */ // @ApiMember(Description="Customer Creation Date From e.g. '2022-01-01'") public var creationDateFrom:Date? /** * Customer Creation Date To e.g. '2023-11-01' */ // @ApiMember(Description="Customer Creation Date To e.g. '2023-11-01'") public var creationDateTo:Date? /** * Transaction Date From e.g. '2022-01-01' */ // @ApiMember(Description="Transaction Date From e.g. '2022-01-01'") public var transactionDateFrom:Date? /** * Transaction Date To e.g. '2023-11-01' */ // @ApiMember(Description="Transaction Date To e.g. '2023-11-01'") public var transactionDateTo:Date? /** * Values can be 'true' or 'false' */ // @ApiMember(Description="Values can be 'true' or 'false'") public var canBeContactedByMaison:Bool? /** * Values can be 1 for 'January', 2 for 'February', 3 for 'March', 4 for 'April', 5 for 'May', 6 for 'June', 7 for 'July', 8 for 'August', 9 for 'September', 10 for 'October', 11 for 'November', 12 for 'December' */ // @ApiMember(Description="Values can be 1 for 'January', 2 for 'February', 3 for 'March', 4 for 'April', 5 for 'May', 6 for 'June', 7 for 'July', 8 for 'August', 9 for 'September', 10 for 'October', 11 for 'November', 12 for 'December'") public var birthdateMonths:[Int] = [] /** * Customer interest filter */ // @ApiMember(Description="Customer interest filter") public var interests:[GetCustomerInterest] = [] /** * Customer hobby filter */ // @ApiMember(Description="Customer hobby filter") public var hobbies:[GetCustomerHobby] = [] /** * Customer product collection filter */ // @ApiMember(Description="Customer product collection filter") public var productCollections:[GetCustomerProductCollection] = [] /** * Customer Status e.g. 'Prospect', 'Client' */ // @ApiMember(Description="Customer Status e.g. 'Prospect', 'Client'") public var customerStatus:[String] = [] /** * List of BoosterCustomerIds, e.g. 1234567,1231231,12323423 */ // @ApiMember(Description="List of BoosterCustomerIds, e.g. 1234567,1231231,12323423") public var boosterCustomerIds:[Int] = [] /** * Values can be 'true' or 'false' */ // @ApiMember(Description="Values can be 'true' or 'false'") public var hasSapCrmError:Bool? /** * Product Categories */ // @ApiMember(Description="Product Categories") public var productCategories:[ProductCategory] = [] /** * Sale Reprentative Emails */ // @ApiMember(Description="Sale Reprentative Emails") public var saleRepresentativeEmails:[String] = [] required public init(){} } public class ProductCategory : Codable { /** * Brand Category ID */ // @ApiMember(Description="Brand Category ID") public var brandCategoryId:String /** * Grand Category ID */ // @ApiMember(Description="Grand Category ID") public var grandCategoryId:String /** * Master Category ID */ // @ApiMember(Description="Master Category ID") public var masterCategoryId:String /** * Category ID */ // @ApiMember(Description="Category ID") public var categoryId:String /** * Sub Category ID */ // @ApiMember(Description="Sub Category ID") public var subCategoryId:String required public init(){} }