/* Options: Date: 2026-05-19 10:47:14 Version: 8.22 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://dev-api-booster.richemont.com //GlobalNamespace: //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: GetCustomerPaginated.* //ExcludeTypes: //DefaultImports: package:servicestack/servicestack.dart */ import 'package:servicestack/servicestack.dart'; class GetCustomerInterest implements IConvertible { /** * Interest description */ // @ApiMember(Description="Interest description", IsRequired=true) String? interest; /** * SAP Interest ID, e.g. 'CA-1' */ // @ApiMember(Description="SAP Interest ID, e.g. 'CA-1'", IsRequired=true) String? sapInterestId; GetCustomerInterest({this.interest,this.sapInterestId}); GetCustomerInterest.fromJson(Map json) { fromMap(json); } fromMap(Map json) { interest = json['interest']; sapInterestId = json['sapInterestId']; return this; } Map toJson() => { 'interest': interest, 'sapInterestId': sapInterestId }; getTypeName() => "GetCustomerInterest"; TypeContext? context = _ctx; } class GetCustomerHobby implements IConvertible { /** * Hobby description */ // @ApiMember(Description="Hobby description") String? hobby; /** * SAP Hobby ID, e.g. 'ART' */ // @ApiMember(Description="SAP Hobby ID, e.g. 'ART'") String? sapHobbyId; GetCustomerHobby({this.hobby,this.sapHobbyId}); GetCustomerHobby.fromJson(Map json) { fromMap(json); } fromMap(Map json) { hobby = json['hobby']; sapHobbyId = json['sapHobbyId']; return this; } Map toJson() => { 'hobby': hobby, 'sapHobbyId': sapHobbyId }; getTypeName() => "GetCustomerHobby"; TypeContext? context = _ctx; } class GetCustomerProductCollection implements IConvertible { /** * Product Collection description */ // @ApiMember(Description="Product Collection description", IsRequired=true) String? productCollection; /** * SAP ProductCollection ID, e.g. 'CA-1' */ // @ApiMember(Description="SAP ProductCollection ID, e.g. 'CA-1'", IsRequired=true) String? sapProductCollectionId; GetCustomerProductCollection({this.productCollection,this.sapProductCollectionId}); GetCustomerProductCollection.fromJson(Map json) { fromMap(json); } fromMap(Map json) { productCollection = json['productCollection']; sapProductCollectionId = json['sapProductCollectionId']; return this; } Map toJson() => { 'productCollection': productCollection, 'sapProductCollectionId': sapProductCollectionId }; getTypeName() => "GetCustomerProductCollection"; TypeContext? context = _ctx; } class ProductCategory implements IConvertible { /** * Brand Category ID */ // @ApiMember(Description="Brand Category ID") String? brandCategoryId; /** * Grand Category ID */ // @ApiMember(Description="Grand Category ID", IsRequired=true) String? grandCategoryId; /** * Master Category ID */ // @ApiMember(Description="Master Category ID") String? masterCategoryId; /** * Category ID */ // @ApiMember(Description="Category ID") String? categoryId; /** * Sub Category ID */ // @ApiMember(Description="Sub Category ID") String? subCategoryId; ProductCategory({this.brandCategoryId,this.grandCategoryId,this.masterCategoryId,this.categoryId,this.subCategoryId}); ProductCategory.fromJson(Map json) { fromMap(json); } fromMap(Map json) { brandCategoryId = json['brandCategoryId']; grandCategoryId = json['grandCategoryId']; masterCategoryId = json['masterCategoryId']; categoryId = json['categoryId']; subCategoryId = json['subCategoryId']; return this; } Map toJson() => { 'brandCategoryId': brandCategoryId, 'grandCategoryId': grandCategoryId, 'masterCategoryId': masterCategoryId, 'categoryId': categoryId, 'subCategoryId': subCategoryId }; getTypeName() => "ProductCategory"; TypeContext? context = _ctx; } class SearchCustomer implements IConvertible { /** * Brand */ // @ApiMember(Description="Brand", IsRequired=true) String? brand; /** * POS Legacy */ // @ApiMember(Description="POS Legacy", IsRequired=true) List? posCodes; /** * 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'") String? searchKey; /** * Search by phone number - exact match */ // @ApiMember(Description="Search by phone number - exact match") String? phoneNumber; /** * Search by email address - exact match */ // @ApiMember(Description="Search by email address - exact match") String? email; /** * Values can be 'it', 'en' etc. */ // @ApiMember(Description="Values can be 'it', 'en' etc.") List? locationCountryIds; /** * Client Spending From e.g. '100' */ // @ApiMember(Description="Client Spending From e.g. '100'") double? clientSpendingFrom; /** * Client Spending To e.g. '50000' */ // @ApiMember(Description="Client Spending To e.g. '50000'") double? clientSpendingTo; /** * Customer Creation Date From e.g. '2022-01-01' */ // @ApiMember(Description="Customer Creation Date From e.g. '2022-01-01'") DateTime? creationDateFrom; /** * Customer Creation Date To e.g. '2023-11-01' */ // @ApiMember(Description="Customer Creation Date To e.g. '2023-11-01'") DateTime? creationDateTo; /** * Transaction Date From e.g. '2022-01-01' */ // @ApiMember(Description="Transaction Date From e.g. '2022-01-01'") DateTime? transactionDateFrom; /** * Transaction Date To e.g. '2023-11-01' */ // @ApiMember(Description="Transaction Date To e.g. '2023-11-01'") DateTime? transactionDateTo; /** * Values can be 'true' or 'false' */ // @ApiMember(Description="Values can be 'true' or 'false'") bool? canBeContactedByMaison; /** * 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'") List? birthdateMonths; /** * Customer interest filter */ // @ApiMember(Description="Customer interest filter") List? interests; /** * Customer hobby filter */ // @ApiMember(Description="Customer hobby filter") List? hobbies; /** * Customer product collection filter */ // @ApiMember(Description="Customer product collection filter") List? productCollections; /** * Customer Status e.g. 'Prospect', 'Client' */ // @ApiMember(Description="Customer Status e.g. 'Prospect', 'Client'") List? customerStatus; /** * List of BoosterCustomerIds, e.g. 1234567,1231231,12323423 */ // @ApiMember(Description="List of BoosterCustomerIds, e.g. 1234567,1231231,12323423") List? boosterCustomerIds; /** * Values can be 'true' or 'false' */ // @ApiMember(Description="Values can be 'true' or 'false'") bool? hasSapCrmError; /** * Product Categories */ // @ApiMember(Description="Product Categories") List? productCategories; /** * Sale Reprentative Emails */ // @ApiMember(Description="Sale Reprentative Emails") List? saleRepresentativeEmails; SearchCustomer({this.brand,this.posCodes,this.searchKey,this.phoneNumber,this.email,this.locationCountryIds,this.clientSpendingFrom,this.clientSpendingTo,this.creationDateFrom,this.creationDateTo,this.transactionDateFrom,this.transactionDateTo,this.canBeContactedByMaison,this.birthdateMonths,this.interests,this.hobbies,this.productCollections,this.customerStatus,this.boosterCustomerIds,this.hasSapCrmError,this.productCategories,this.saleRepresentativeEmails}); SearchCustomer.fromJson(Map json) { fromMap(json); } fromMap(Map json) { brand = json['brand']; posCodes = JsonConverters.fromJson(json['posCodes'],'List',context!); searchKey = json['searchKey']; phoneNumber = json['phoneNumber']; email = json['email']; locationCountryIds = JsonConverters.fromJson(json['locationCountryIds'],'List',context!); clientSpendingFrom = JsonConverters.toDouble(json['clientSpendingFrom']); clientSpendingTo = JsonConverters.toDouble(json['clientSpendingTo']); creationDateFrom = JsonConverters.fromJson(json['creationDateFrom'],'DateTime',context!); creationDateTo = JsonConverters.fromJson(json['creationDateTo'],'DateTime',context!); transactionDateFrom = JsonConverters.fromJson(json['transactionDateFrom'],'DateTime',context!); transactionDateTo = JsonConverters.fromJson(json['transactionDateTo'],'DateTime',context!); canBeContactedByMaison = json['canBeContactedByMaison']; birthdateMonths = JsonConverters.fromJson(json['birthdateMonths'],'List',context!); interests = JsonConverters.fromJson(json['interests'],'List',context!); hobbies = JsonConverters.fromJson(json['hobbies'],'List',context!); productCollections = JsonConverters.fromJson(json['productCollections'],'List',context!); customerStatus = JsonConverters.fromJson(json['customerStatus'],'List',context!); boosterCustomerIds = JsonConverters.fromJson(json['boosterCustomerIds'],'List',context!); hasSapCrmError = json['hasSapCrmError']; productCategories = JsonConverters.fromJson(json['productCategories'],'List',context!); saleRepresentativeEmails = JsonConverters.fromJson(json['saleRepresentativeEmails'],'List',context!); return this; } Map toJson() => { 'brand': brand, 'posCodes': JsonConverters.toJson(posCodes,'List',context!), 'searchKey': searchKey, 'phoneNumber': phoneNumber, 'email': email, 'locationCountryIds': JsonConverters.toJson(locationCountryIds,'List',context!), 'clientSpendingFrom': clientSpendingFrom, 'clientSpendingTo': clientSpendingTo, 'creationDateFrom': JsonConverters.toJson(creationDateFrom,'DateTime',context!), 'creationDateTo': JsonConverters.toJson(creationDateTo,'DateTime',context!), 'transactionDateFrom': JsonConverters.toJson(transactionDateFrom,'DateTime',context!), 'transactionDateTo': JsonConverters.toJson(transactionDateTo,'DateTime',context!), 'canBeContactedByMaison': canBeContactedByMaison, 'birthdateMonths': JsonConverters.toJson(birthdateMonths,'List',context!), 'interests': JsonConverters.toJson(interests,'List',context!), 'hobbies': JsonConverters.toJson(hobbies,'List',context!), 'productCollections': JsonConverters.toJson(productCollections,'List',context!), 'customerStatus': JsonConverters.toJson(customerStatus,'List',context!), 'boosterCustomerIds': JsonConverters.toJson(boosterCustomerIds,'List',context!), 'hasSapCrmError': hasSapCrmError, 'productCategories': JsonConverters.toJson(productCategories,'List',context!), 'saleRepresentativeEmails': JsonConverters.toJson(saleRepresentativeEmails,'List',context!) }; getTypeName() => "SearchCustomer"; TypeContext? context = _ctx; } abstract class IPagedRequest { int? page; int? items; bool? noCount; String? sortBy; } class ProductCategory implements IConvertible { /** * Brand Category ID */ // @ApiMember(Description="Brand Category ID") String? brandCategoryId; /** * Grand Category ID */ // @ApiMember(Description="Grand Category ID") String? grandCategoryId; /** * Master Category ID */ // @ApiMember(Description="Master Category ID") String? masterCategoryId; /** * Category ID */ // @ApiMember(Description="Category ID") String? categoryId; /** * Sub Category ID */ // @ApiMember(Description="Sub Category ID") String? subCategoryId; ProductCategory({this.brandCategoryId,this.grandCategoryId,this.masterCategoryId,this.categoryId,this.subCategoryId}); ProductCategory.fromJson(Map json) { fromMap(json); } fromMap(Map json) { brandCategoryId = json['brandCategoryId']; grandCategoryId = json['grandCategoryId']; masterCategoryId = json['masterCategoryId']; categoryId = json['categoryId']; subCategoryId = json['subCategoryId']; return this; } Map toJson() => { 'brandCategoryId': brandCategoryId, 'grandCategoryId': grandCategoryId, 'masterCategoryId': masterCategoryId, 'categoryId': categoryId, 'subCategoryId': subCategoryId }; getTypeName() => "ProductCategory"; TypeContext? context = _ctx; } class GetCustomerPaginatedElement implements IConvertible { /** * Booster Customer Id */ // @ApiMember(Description="Booster Customer Id", IsRequired=true) int? boosterCustomerId; /** * First name */ // @ApiMember(Description="First name", IsRequired=true) String? firstName; /** * Middle name */ // @ApiMember(Description="Middle name", IsRequired=true) String? middleName; /** * Last name */ // @ApiMember(Description="Last name", IsRequired=true) String? lastName; /** * First name Not Latin */ // @ApiMember(Description="First name Not Latin", IsRequired=true) String? firstNameNotLatin; /** * Last name Not Latin */ // @ApiMember(Description="Last name Not Latin", IsRequired=true) String? lastNameNotLatin; /** * Customer phone */ // @ApiMember(Description="Customer phone", IsRequired=true) String? phone; /** * Phone Country Prefix */ // @ApiMember(Description="Phone Country Prefix", IsRequired=true) String? countryPrefix; /** * Customer email */ // @ApiMember(Description="Customer email", IsRequired=true) String? email; /** * Data Sharing Consent */ // @ApiMember(Description="Data Sharing Consent", IsRequired=true) bool? dataSharingConsent; /** * Sellout Transaction Count */ // @ApiMember(Description="Sellout Transaction Count", IsRequired=true) int? selloutTransactionCount; /** * Elevate Customer ID */ // @ApiMember(Description="Elevate Customer ID") String? elevateCustomerId; /** * Elevate Consent Status */ // @ApiMember(Description="Elevate Consent Status") String? elevateConsentStatus; /** * Customer Country Id */ // @ApiMember(Description="Customer Country Id") String? countryId; /** * Registration date */ // @ApiMember(Description="Registration date") DateTime? registrationDate; /** * Sap Crm Error Message */ // @ApiMember(Description="Sap Crm Error Message") String? sapCrmErrorMessage; GetCustomerPaginatedElement({this.boosterCustomerId,this.firstName,this.middleName,this.lastName,this.firstNameNotLatin,this.lastNameNotLatin,this.phone,this.countryPrefix,this.email,this.dataSharingConsent,this.selloutTransactionCount,this.elevateCustomerId,this.elevateConsentStatus,this.countryId,this.registrationDate,this.sapCrmErrorMessage}); GetCustomerPaginatedElement.fromJson(Map json) { fromMap(json); } fromMap(Map json) { boosterCustomerId = json['boosterCustomerId']; firstName = json['firstName']; middleName = json['middleName']; lastName = json['lastName']; firstNameNotLatin = json['firstNameNotLatin']; lastNameNotLatin = json['lastNameNotLatin']; phone = json['phone']; countryPrefix = json['countryPrefix']; email = json['email']; dataSharingConsent = json['dataSharingConsent']; selloutTransactionCount = json['selloutTransactionCount']; elevateCustomerId = json['elevateCustomerId']; elevateConsentStatus = json['elevateConsentStatus']; countryId = json['countryId']; registrationDate = JsonConverters.fromJson(json['registrationDate'],'DateTime',context!); sapCrmErrorMessage = json['sapCrmErrorMessage']; return this; } Map toJson() => { 'boosterCustomerId': boosterCustomerId, 'firstName': firstName, 'middleName': middleName, 'lastName': lastName, 'firstNameNotLatin': firstNameNotLatin, 'lastNameNotLatin': lastNameNotLatin, 'phone': phone, 'countryPrefix': countryPrefix, 'email': email, 'dataSharingConsent': dataSharingConsent, 'selloutTransactionCount': selloutTransactionCount, 'elevateCustomerId': elevateCustomerId, 'elevateConsentStatus': elevateConsentStatus, 'countryId': countryId, 'registrationDate': JsonConverters.toJson(registrationDate,'DateTime',context!), 'sapCrmErrorMessage': sapCrmErrorMessage }; getTypeName() => "GetCustomerPaginatedElement"; TypeContext? context = _ctx; } class GetCustomerPaginatedResponse implements IConvertible { /** * Total Pages */ // @ApiMember(Description="Total Pages", IsRequired=true) int? totalPages; /** * Total Results */ // @ApiMember(Description="Total Results", IsRequired=true) int? totalResults; /** * Index of the result set returned */ // @ApiMember(Description="Index of the result set returned", IsRequired=true) int? page; /** * Size of the result set returned */ // @ApiMember(Description="Size of the result set returned", IsRequired=true) int? items; /** * List of customers */ // @ApiMember(Description="List of customers", IsRequired=true) List? elements; GetCustomerPaginatedResponse({this.totalPages,this.totalResults,this.page,this.items,this.elements}); GetCustomerPaginatedResponse.fromJson(Map json) { fromMap(json); } fromMap(Map json) { totalPages = json['totalPages']; totalResults = json['totalResults']; page = json['page']; items = json['items']; elements = JsonConverters.fromJson(json['elements'],'List',context!); return this; } Map toJson() => { 'totalPages': totalPages, 'totalResults': totalResults, 'page': page, 'items': items, 'elements': JsonConverters.toJson(elements,'List',context!) }; getTypeName() => "GetCustomerPaginatedResponse"; TypeContext? context = _ctx; } // @Route("/customer/{brand}/slim", "GET") class GetCustomerPaginated extends SearchCustomer implements IReturn, IPagedRequest, IConvertible, IGet { /** * Index of the result set returned */ // @ApiMember(Description="Index of the result set returned") int? page; /** * Size of the result set returned */ // @ApiMember(Description="Size of the result set returned") int? items; /** * Omit precise record count - save on performance */ // @ApiMember(Description="Omit precise record count - save on performance") bool? noCount; /** * Values can be 'NameDESC', 'NameASC', 'RegASC', 'RegDESC' */ // @ApiMember(Description="Values can be 'NameDESC', 'NameASC', 'RegASC', 'RegDESC'") String? sortBy; GetCustomerPaginated({this.page,this.items,this.noCount,this.sortBy}); GetCustomerPaginated.fromJson(Map json) { fromMap(json); } fromMap(Map json) { super.fromMap(json); page = json['page']; items = json['items']; noCount = json['noCount']; sortBy = json['sortBy']; return this; } Map toJson() => super.toJson()..addAll({ 'page': page, 'items': items, 'noCount': noCount, 'sortBy': sortBy }); createResponse() => GetCustomerPaginatedResponse(); getResponseTypeName() => "GetCustomerPaginatedResponse"; getTypeName() => "GetCustomerPaginated"; TypeContext? context = _ctx; } TypeContext _ctx = TypeContext(library: 'dev_api_booster.richemont.com', types: { 'GetCustomerInterest': TypeInfo(TypeOf.Class, create:() => GetCustomerInterest()), 'GetCustomerHobby': TypeInfo(TypeOf.Class, create:() => GetCustomerHobby()), 'GetCustomerProductCollection': TypeInfo(TypeOf.Class, create:() => GetCustomerProductCollection()), 'ProductCategory': TypeInfo(TypeOf.Class, create:() => ProductCategory()), 'SearchCustomer': TypeInfo(TypeOf.Class, create:() => SearchCustomer()), 'List': TypeInfo(TypeOf.Class, create:() => []), 'List': TypeInfo(TypeOf.Class, create:() => []), 'List': TypeInfo(TypeOf.Class, create:() => []), 'List': TypeInfo(TypeOf.Class, create:() => []), 'IPagedRequest': TypeInfo(TypeOf.Interface), 'GetCustomerPaginatedElement': TypeInfo(TypeOf.Class, create:() => GetCustomerPaginatedElement()), 'GetCustomerPaginatedResponse': TypeInfo(TypeOf.Class, create:() => GetCustomerPaginatedResponse()), 'List': TypeInfo(TypeOf.Class, create:() => []), 'GetCustomerPaginated': TypeInfo(TypeOf.Class, create:() => GetCustomerPaginated()), });