Richemont.Booster2.PublicApi

<back to all web services

GetCustomerPaginated

Requires Authentication
The following routes are available for this service:
GET/customer/{brand}/slimGet customers listGet slim list of customers paginated and sorted
namespace Richemont.Booster2.PublicApi.Common.ServiceModel

open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    [<AllowNullLiteral>]
    type GetCustomerPaginatedElement() = 
        ///<summary>
        ///Booster Customer Id
        ///</summary>
        [<ApiMember(Description="Booster Customer Id", IsRequired=true)>]
        member val boosterCustomerId:Int32 = new Int32() with get,set

        ///<summary>
        ///First name
        ///</summary>
        [<ApiMember(Description="First name", IsRequired=true)>]
        member val firstName:String = null with get,set

        ///<summary>
        ///Middle name
        ///</summary>
        [<ApiMember(Description="Middle name", IsRequired=true)>]
        member val middleName:String = null with get,set

        ///<summary>
        ///Last name
        ///</summary>
        [<ApiMember(Description="Last name", IsRequired=true)>]
        member val lastName:String = null with get,set

        ///<summary>
        ///First name Not Latin
        ///</summary>
        [<ApiMember(Description="First name Not Latin", IsRequired=true)>]
        member val firstNameNotLatin:String = null with get,set

        ///<summary>
        ///Last name Not Latin
        ///</summary>
        [<ApiMember(Description="Last name Not Latin", IsRequired=true)>]
        member val lastNameNotLatin:String = null with get,set

        ///<summary>
        ///Customer phone
        ///</summary>
        [<ApiMember(Description="Customer phone", IsRequired=true)>]
        member val phone:String = null with get,set

        ///<summary>
        ///Phone Country Prefix
        ///</summary>
        [<ApiMember(Description="Phone Country Prefix", IsRequired=true)>]
        member val countryPrefix:String = null with get,set

        ///<summary>
        ///Customer email
        ///</summary>
        [<ApiMember(Description="Customer email", IsRequired=true)>]
        member val email:String = null with get,set

        ///<summary>
        ///Data Sharing Consent
        ///</summary>
        [<ApiMember(Description="Data Sharing Consent", IsRequired=true)>]
        member val dataSharingConsent:Nullable<Boolean> = new Nullable<Boolean>() with get,set

        ///<summary>
        ///Sellout Transaction Count
        ///</summary>
        [<ApiMember(Description="Sellout Transaction Count", IsRequired=true)>]
        member val selloutTransactionCount:Int32 = new Int32() with get,set

        ///<summary>
        ///Elevate Customer ID
        ///</summary>
        [<ApiMember(Description="Elevate Customer ID")>]
        member val elevateCustomerId:String = null with get,set

        ///<summary>
        ///Elevate Consent Status
        ///</summary>
        [<ApiMember(Description="Elevate Consent Status")>]
        member val elevateConsentStatus:String = null with get,set

        ///<summary>
        ///Customer Country Id
        ///</summary>
        [<ApiMember(Description="Customer Country Id")>]
        member val countryId:String = null with get,set

        ///<summary>
        ///Registration date
        ///</summary>
        [<ApiMember(Description="Registration date")>]
        member val registrationDate:Nullable<DateTime> = new Nullable<DateTime>() with get,set

        ///<summary>
        ///Sap Crm Error Message
        ///</summary>
        [<ApiMember(Description="Sap Crm Error Message")>]
        member val sapCrmErrorMessage:String = null with get,set

    [<AllowNullLiteral>]
    type GetCustomerPaginatedResponse() = 
        ///<summary>
        ///Total Pages
        ///</summary>
        [<ApiMember(Description="Total Pages", IsRequired=true)>]
        member val totalPages:Int32 = new Int32() with get,set

        ///<summary>
        ///Total Results
        ///</summary>
        [<ApiMember(Description="Total Results", IsRequired=true)>]
        member val totalResults:Int32 = new Int32() with get,set

        ///<summary>
        ///Index of the result set returned
        ///</summary>
        [<ApiMember(Description="Index of the result set returned", IsRequired=true)>]
        member val page:Int32 = new Int32() with get,set

        ///<summary>
        ///Size of the result set returned
        ///</summary>
        [<ApiMember(Description="Size of the result set returned", IsRequired=true)>]
        member val items:Int32 = new Int32() with get,set

        ///<summary>
        ///List of customers
        ///</summary>
        [<ApiMember(Description="List of customers", IsRequired=true)>]
        member val elements:IEnumerable<GetCustomerPaginatedElement> = null with get,set

    [<AllowNullLiteral>]
    type GetCustomerInterest() = 
        ///<summary>
        ///Interest description
        ///</summary>
        [<ApiMember(Description="Interest description", IsRequired=true)>]
        member val interest:String = null with get,set

        ///<summary>
        ///SAP Interest ID, e.g. 'CA-1'
        ///</summary>
        [<ApiMember(Description="SAP Interest ID, e.g. 'CA-1'", IsRequired=true)>]
        member val sapInterestId:String = null with get,set

    [<AllowNullLiteral>]
    type GetCustomerHobby() = 
        ///<summary>
        ///Hobby description
        ///</summary>
        [<ApiMember(Description="Hobby description")>]
        member val hobby:String = null with get,set

        ///<summary>
        ///SAP Hobby ID, e.g. 'ART'
        ///</summary>
        [<ApiMember(Description="SAP Hobby ID, e.g. 'ART'")>]
        member val sapHobbyId:String = null with get,set

    [<AllowNullLiteral>]
    type GetCustomerProductCollection() = 
        ///<summary>
        ///Product Collection description
        ///</summary>
        [<ApiMember(Description="Product Collection description", IsRequired=true)>]
        member val productCollection:String = null with get,set

        ///<summary>
        ///SAP ProductCollection ID, e.g. 'CA-1'
        ///</summary>
        [<ApiMember(Description="SAP ProductCollection ID, e.g. 'CA-1'", IsRequired=true)>]
        member val sapProductCollectionId:String = null with get,set

    [<AllowNullLiteral>]
    type ProductCategory() = 
        ///<summary>
        ///Brand Category ID
        ///</summary>
        [<ApiMember(Description="Brand Category ID")>]
        member val brandCategoryId:String = null with get,set

        ///<summary>
        ///Grand Category ID
        ///</summary>
        [<ApiMember(Description="Grand Category ID", IsRequired=true)>]
        member val grandCategoryId:String = null with get,set

        ///<summary>
        ///Master Category ID
        ///</summary>
        [<ApiMember(Description="Master Category ID")>]
        member val masterCategoryId:String = null with get,set

        ///<summary>
        ///Category ID
        ///</summary>
        [<ApiMember(Description="Category ID")>]
        member val categoryId:String = null with get,set

        ///<summary>
        ///Sub Category ID
        ///</summary>
        [<ApiMember(Description="Sub Category ID")>]
        member val subCategoryId:String = null with get,set

    [<AllowNullLiteral>]
    type SearchCustomer() = 
        ///<summary>
        ///Brand
        ///</summary>
        [<ApiMember(Description="Brand", IsRequired=true)>]
        member val brand:String = null with get,set

        ///<summary>
        ///POS Legacy
        ///</summary>
        [<ApiMember(Description="POS Legacy", IsRequired=true)>]
        member val posCodes:ResizeArray<String> = new ResizeArray<String>() with get,set

        ///<summary>
        ///Search key could be: 'Name', 'Email', 'Phone' without prefix, 'BoosterCustomerId' OR 'SapCRMId'
        ///</summary>
        [<ApiMember(Description="Search key could be: 'Name', 'Email', 'Phone' without prefix, 'BoosterCustomerId' OR 'SapCRMId'")>]
        member val searchKey:String = null with get,set

        ///<summary>
        ///Search by phone number - exact match
        ///</summary>
        [<ApiMember(Description="Search by phone number - exact match")>]
        member val phoneNumber:String = null with get,set

        ///<summary>
        ///Search by email address - exact match
        ///</summary>
        [<ApiMember(Description="Search by email address - exact match")>]
        member val email:String = null with get,set

        ///<summary>
        ///Values can be 'it', 'en' etc.
        ///</summary>
        [<ApiMember(Description="Values can be 'it', 'en' etc.")>]
        member val locationCountryIds:ResizeArray<String> = new ResizeArray<String>() with get,set

        ///<summary>
        ///Client Spending From e.g. '100'
        ///</summary>
        [<ApiMember(Description="Client Spending From e.g. '100'")>]
        member val clientSpendingFrom:Nullable<Double> = new Nullable<Double>() with get,set

        ///<summary>
        ///Client Spending To e.g. '50000'
        ///</summary>
        [<ApiMember(Description="Client Spending To e.g. '50000'")>]
        member val clientSpendingTo:Nullable<Double> = new Nullable<Double>() with get,set

        ///<summary>
        ///Customer Creation Date From e.g. '2022-01-01'
        ///</summary>
        [<ApiMember(Description="Customer Creation Date From e.g. '2022-01-01'")>]
        member val creationDateFrom:Nullable<DateTime> = new Nullable<DateTime>() with get,set

        ///<summary>
        ///Customer Creation Date To e.g. '2023-11-01'
        ///</summary>
        [<ApiMember(Description="Customer Creation Date To e.g. '2023-11-01'")>]
        member val creationDateTo:Nullable<DateTime> = new Nullable<DateTime>() with get,set

        ///<summary>
        ///Transaction Date From e.g. '2022-01-01'
        ///</summary>
        [<ApiMember(Description="Transaction Date From e.g. '2022-01-01'")>]
        member val transactionDateFrom:Nullable<DateTime> = new Nullable<DateTime>() with get,set

        ///<summary>
        ///Transaction Date To e.g. '2023-11-01'
        ///</summary>
        [<ApiMember(Description="Transaction Date To e.g. '2023-11-01'")>]
        member val transactionDateTo:Nullable<DateTime> = new Nullable<DateTime>() with get,set

        ///<summary>
        ///Values can be 'true' or 'false'
        ///</summary>
        [<ApiMember(Description="Values can be 'true' or 'false'")>]
        member val canBeContactedByMaison:Nullable<Boolean> = new Nullable<Boolean>() with get,set

        ///<summary>
        ///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'
        ///</summary>
        [<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'")>]
        member val birthdateMonths:ResizeArray<Int32> = new ResizeArray<Int32>() with get,set

        ///<summary>
        ///Customer interest filter
        ///</summary>
        [<ApiMember(Description="Customer interest filter")>]
        member val interests:ResizeArray<GetCustomerInterest> = new ResizeArray<GetCustomerInterest>() with get,set

        ///<summary>
        ///Customer hobby filter
        ///</summary>
        [<ApiMember(Description="Customer hobby filter")>]
        member val hobbies:ResizeArray<GetCustomerHobby> = new ResizeArray<GetCustomerHobby>() with get,set

        ///<summary>
        ///Customer product collection filter
        ///</summary>
        [<ApiMember(Description="Customer product collection filter")>]
        member val productCollections:ResizeArray<GetCustomerProductCollection> = new ResizeArray<GetCustomerProductCollection>() with get,set

        ///<summary>
        ///Customer Status e.g. 'Prospect', 'Client'
        ///</summary>
        [<ApiMember(Description="Customer Status e.g. 'Prospect', 'Client'")>]
        member val customerStatus:ResizeArray<String> = new ResizeArray<String>() with get,set

        ///<summary>
        ///List of BoosterCustomerIds, e.g. 1234567,1231231,12323423
        ///</summary>
        [<ApiMember(Description="List of BoosterCustomerIds, e.g. 1234567,1231231,12323423")>]
        member val boosterCustomerIds:ResizeArray<Int32> = new ResizeArray<Int32>() with get,set

        ///<summary>
        ///Values can be 'true' or 'false'
        ///</summary>
        [<ApiMember(Description="Values can be 'true' or 'false'")>]
        member val hasSapCrmError:Nullable<Boolean> = new Nullable<Boolean>() with get,set

        ///<summary>
        ///Product Categories
        ///</summary>
        [<ApiMember(Description="Product Categories")>]
        member val productCategories:ResizeArray<ProductCategory> = new ResizeArray<ProductCategory>() with get,set

        ///<summary>
        ///Sale Reprentative Emails
        ///</summary>
        [<ApiMember(Description="Sale Reprentative Emails")>]
        member val saleRepresentativeEmails:ResizeArray<String> = new ResizeArray<String>() with get,set

    [<AllowNullLiteral>]
    type GetCustomerPaginated() = 
        inherit SearchCustomer()
        ///<summary>
        ///Index of the result set returned
        ///</summary>
        [<ApiMember(Description="Index of the result set returned")>]
        member val page:Int32 = new Int32() with get,set

        ///<summary>
        ///Size of the result set returned
        ///</summary>
        [<ApiMember(Description="Size of the result set returned")>]
        member val items:Int32 = new Int32() with get,set

        ///<summary>
        ///Omit precise record count - save on performance
        ///</summary>
        [<ApiMember(Description="Omit precise record count - save on performance")>]
        member val noCount:Boolean = new Boolean() with get,set

        ///<summary>
        ///Values can be 'NameDESC', 'NameASC', 'RegASC', 'RegDESC'
        ///</summary>
        [<ApiMember(Description="Values can be 'NameDESC', 'NameASC', 'RegASC', 'RegDESC'")>]
        member val sortBy:String = null with get,set

F# GetCustomerPaginated DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /customer/{brand}/slim HTTP/1.1 
Host: dev-api-booster.richemont.com 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	totalPages: 0,
	totalResults: 0,
	page: 0,
	items: 0
}