Eureka SDK Fetch Methods

Prev Next

All Eureka SDK methods for fetching items are accessible under Insider.eureka.fetch namespace:

Use the campaign/builder identifier from the eureka:sdk:campaign:ready event as campId.

Every time a user changes sorting, applies or removes filters (facets), or navigates to a different page (pagination), the relevant fetch method must be called again with the updated parameters to retrieve the new results.

Search Method

Use this method to fetch data for the search popup or the search listing page. Call this method again whenever the user changes the sorting, applies/removes filters, or navigates to a different page.

  • Method: Insider.eureka.fetch.search(campId, query, options)

Parameter

Type

Required

Description

campId

Number or String

Yes

Campaign/builder ID

query

String

Yes

Search text entered by the user

options

Object

No

Optional settings (see below)

  • Options

Field

Type

Description

pagination

Object

Pagination settings

pagination.from

Number

Starting index of results. Minimum: 0. Default: 0

pagination.size

Number

Number of results to return. Minimum: 1. Default: 10

sorting

String

Sorting method (e.g. 'Relevancy', 'PriceAsc', 'PriceDesc', 'NewestFirst')

facets

Array

Filter conditions. Each facet must have field (string) and values (array). Example: [{ field: 'brand_en', values: ['BrandA', 'BrandB'] }]

Example:

Insider.eureka.fetch.search(999999, 'queryA', {
    pagination: { from: 0, size: 10 },
    sorting: 'Relevancy',
    facets: [{ field: 'price_en', values: ['500', '2000'] }]
}).then(function (response) {
    // Use response.data.items to display search results
}).catch(function (error) {
    // Handle error
});

Product Listing

Use this method to fetch data for category listing pages, brand listing pages, or all products. Call this method again whenever the user changes the sorting, applies/removes filters, or navigates to a different page.

  • Method: Insider.eureka.fetch.productListing(campId, collectionType, listingPageName, options)

Parameter

Type

Required

Description

campId

Number or String

Yes

Campaign/builder ID

collectionType

String

Yes

One of: 'Category', 'Brand', 'AllProducts'

listingPageName

String

Yes (except AllProducts)

Category or brand hierarchy using ~ as a separator. Example: 'categoryA~categoryB'. Can be empty for AllProducts.

options

Object

No

Optional settings (see below)

  • Options:

Field

Type

Description

pagination

Object

Pagination settings

pagination.from

Number

Starting index of results. Minimum: 0. Default: 0

pagination.size

Number

Number of results to return. Minimum: 1. Default: 25

sorting

String

Sorting method (e.g. 'Relevancy', 'PriceAsc')

facets

Array

Filter conditions. Example: [{ field: 'color_en', values: ['Red', 'Blue'] }]

Example - Category listing:

Insider.eureka.fetch.productListing(470, 'Category', 'categoryA~categoryB', {
    pagination: { from: 0, size: 25 },
    sorting: 'Relevancy'
}).then(function (response) {
    // Use response to display category listing page
});

Example - Brand listing:

Insider.eureka.fetch.productListing(470, 'Brand', 'BrandName', {}).then(function (response) {
    // Use response to display brand listing page
});

Example - All products:

Insider.eureka.fetch.productListing(470, 'AllProducts', '', {}).then(function (response) {
    // Use response to display listing page
});

The listingPageName parameter uses tilde (~) as a hierarchy separator. For example: 'categoryA~categoryB~categoryC'.

Suggestion

Use this method to fetch search suggestions (autocomplete) as the user types.

  • Method: Insider.eureka.fetch.suggestion(campId, query)

Parameter

Type

Required

Description

campId

Number or String

Yes

Campaign/builder ID

query

String

Yes

Partial or complete search text entered by the user

Example:

Insider.eureka.fetch.suggestion(999999, 'queryA').then(function (response) {
    // Display suggestion list from response
});

Popular Search

Use this method to fetch trending/popular search terms.

  • Method: Insider.eureka.fetch.popularSearch(campId)

Parameter

Type

Required

Description

campId

Number or String

Yes

Campaign/builder ID

Example:

Insider.eureka.fetch.popularSearch(999999).then(function (response) {
    // Display popular search terms from response
});

Recent Search

Use this method to fetch the current user's recent search history.

  • Method: Insider.eureka.fetch.recentSearch(campId)

Parameter

Type

Required

Description

campId

Number or String

Yes

Campaign/builder ID

Example:

Insider.eureka.fetch.recentSearch(999999).then(function (response) {
    // Display recent searches from response
});

Clear Recent Search

Use this method to clear the user's recent search history. You can clear a specific search or all searches.

  • Method: Insider.eureka.fetch.clearRecentSearch(campId, queryId)

Parameter

Type

Required

Description

campId

Number or String

Yes

Campaign/builder ID

queryId

Number or String

No

ID of a specific search to clear. If omitted, all recent searches are cleared.

Example - Clear all recent searches:

Insider.eureka.fetch.clearRecentSearch(999999).then(function () {
    // All recent searches cleared
});

Example - Clear a specific search:

Insider.eureka.fetch.clearRecentSearch(999999, 'queryId-123').then(function () {
    // Specific search cleared
});

Validations

Each fetch method validates its parameters before making the request. If validation fails, the method immediately returns Promise.reject().

Method

Fails when

fetch.search / fetch.suggestion

campId is not a number or string, or query is not a non-empty string

fetch.productListing

campId is invalid; collectionType is not 'Category', 'Brand', or 'AllProducts'; for Category or Brand, listingPageName is not a non-empty string

fetch.popularSearch / fetch.recentSearch

campId is not a number or string

fetch.clearRecentSearch

campId is invalid; if provided, queryId is not a number or string

Always handle errors using .catch() to prevent unhandled promise rejections.

Insider.eureka.fetch.search(999999, 'queryA')
    .then(function (response) { /* success */ })
    .catch(function (error) { /* handle error */ });