Search Models
Facets
type FacetType =
| 'checkbox'
| 'color'
| 'date-range'
| 'link'
| 'numeric-range'
| 'range-slider'
| 'recent-searches'
| 'related-searches'
| 'search'
| 'size'
| 'tabs'
| 'unsupported';
interface FacetValueColor {
name: string;
hex?: string;
imageUrl?: string;
}
interface FacetValue {
title: string;
imageUrl?: string;
value?: string;
color?: FacetValueColor;
count?: number;
level?: number;
selected?: boolean;
excluded?: boolean;
children?: Array<FacetValue>;
}
interface FacetRange<T> {
type: string;
min: T;
max: T;
start: T;
end: T;
}
interface DateFacetRange extends FacetRange<Date> {
type: 'date';
}
interface NumericFacetRange extends FacetRange<number> {
type: 'numeric';
}
interface Facet {
id: number;
type: FacetType;
title: string;
values?: Array<FacetValue>;
field: string;
collapsible: boolean;
collapsed?: boolean;
range?: DateFacetRange | NumericFacetRange;
searchable?: boolean;
searchWithin?: string;
tooltip?: string;
truncateThreshold?: number;
visible: boolean;
}
Pagination
interface PaginationOption {
title: string;
pageSize: number;
selected: boolean;
default: boolean;
}
interface Pagination {
page: number;
pageSize: number;
totalPages: number;
totalResults: number;
maxPageLinks?: number;
displayFirstLink: boolean;
displayLastLink: boolean;
options: Array<PaginationOption>;
}
Redirects
interface Redirect {
url: string;
target?: string;
}
Selected Facets
interface SelectedFacetValue {
title: string;
value: string;
excluded: boolean;
}
interface SelectedFacet {
field: string;
title: string;
values: Array<SelectedFacetValue>;
}
Search Results Items
type SearchResultsItemType = 'content' | 'product';
interface SearchResultsItem {
attributes?: {
[key: string]: Array<string>;
};
description?: string;
id: string;
imageUrl?: string;
pinned: boolean;
price?: number;
salePrice?: number;
score: number;
title: string;
type: SearchResultsItemType;
url: string;
visible: boolean;
}
Sorting
interface SortingOption {
title: string;
value: string;
default: boolean;
selected: boolean;
}
interface Sorting {
value?: string;
options: Array<SortingOption>;
}
Search Response
interface SearchResponse {
contentZones?: ContentZones;
facets?: Array<Facet>;
modifiedQuery?: string;
pagination?: Pagination;
query?: string;
querySuggestions?: Array<string>;
redirect?: Redirect;
results?: Array<SearchResultsItem>;
selectedFacets?: Array<SelectedFacet>;
sorting?: Sorting;
success: boolean;
trackingId: string;
}
For more information on Content Zones, see Content Models.
Search Request
type SelectedFacets = {
[key: string]: Array<string> | undefined;
};
interface SearchRequest {
disableSpellcheck?: boolean;
facets?: SelectedFacets;
newRequest: boolean;
pageSize?: number;
page?: number;
query?: string;
searchWithin?: string;
sort?: string;
}
, multiple selections available,