DefinitelyTyped/types/algoliasearch/index.d.ts
2019-04-04 19:17:19 -03:00

1889 lines
67 KiB
TypeScript

// Type definitions for algoliasearch-client-js 3.30.1
// Project: https://github.com/algolia/algoliasearch-client-js
// Definitions by: Baptiste Coquelle <https://github.com/cbaptiste>
// Haroen Viaene <https://github.com/haroenv>
// Aurélien Hervé <https://github.com/aherve>
// Samuel Vaillant <https://github.com/samouss>
// Kai Eichinger <https://github.com/keichinger>
// Nery Ortez <https://github.com/neryortez>
// Antoine Rousseau <https://github.com/antoinerousseau>
// Luca Pasquale <https://github.com/lucapasquale>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
declare namespace algoliasearch {
/**
* Interface for the algolia client object
*/
interface Client {
/**
* Initialization of the index
* https://github.com/algolia/algoliasearch-client-js#init-index---initindex
*/
initIndex(indexName: string): Index;
/**
* Query on multiple index
* https://github.com/algolia/algoliasearch-client-js#multiple-queries---multiplequeries
*/
search<T=any>(
queries: {
indexName: string;
query: string;
params: QueryParameters;
}[],
cb: (err: Error, res: MultiResponse<T>) => void
): void;
/**
* Query on multiple index
* https://github.com/algolia/algoliasearch-client-js#multiple-queries---multiplequeries
*/
search<T=any>(
queries: {
indexName: string;
query: string;
params: QueryParameters;
}[]
): Promise<MultiResponse<T>>;
/**
* Query for facet values of a specific facet
*/
searchForFacetValues(
queries: [{ indexName: string; params: SearchForFacetValues.Parameters }]
): Promise<SearchForFacetValues.Response[]>;
/**
* clear browser cache
* https://github.com/algolia/algoliasearch-client-js#cache
*/
clearCache(): void;
/**
* kill alive connections
* https://github.com/algolia/algoliasearch-client-js#keep-alive
*/
destroy(): void;
/**
* Add a header to be sent with all upcoming requests
*/
setExtraHeader(name: string, value: string): void;
/**
* Get the value of an extra header
*/
getExtraHeader(name: string): string;
/**
* Remove an extra header for all upcoming requests
*/
unsetExtraHeader(name: string): void;
/**
* List all your indices along with their associated information (number of entries, disk size, etc.)
* https://github.com/algolia/algoliasearch-client-js#list-indices---listindexes
*/
listIndexes(cb: (err: Error, res: any) => void): void;
/**
* List all your indices along with their associated information (number of entries, disk size, etc.)
* https://github.com/algolia/algoliasearch-client-js#list-indices---listindexes
*/
listIndexes(): Promise<any>;
/**
* Delete a specific index
* https://github.com/algolia/algoliasearch-client-js#delete-index---deleteindex
*/
deleteIndex(name: string, cb: (err: Error, res: Task) => void): void;
/**
* Delete a specific index
* https://github.com/algolia/algoliasearch-client-js#delete-index---deleteindex
*/
deleteIndex(name: string): Promise<Task>;
/**
* Copy an index from a specific index to a new one
* https://github.com/algolia/algoliasearch-client-js#copy-index---copyindex
*/
copyIndex(
from: string,
to: string,
cb: (err: Error, res: Task) => void
): void;
/**
* Copy settings of an index from a specific index to a new one
* https://github.com/algolia/algoliasearch-client-js#copy-index---copyindex
*/
copyIndex(
from: string,
to: string,
scope: ('settings' | 'synonyms' | 'rules')[],
cb: (err: Error, res: Task) => void
): void;
/**
* Copy settings of an index from a specific index to a new one
* https://github.com/algolia/algoliasearch-client-js#copy-index---copyindex
*/
copyIndex(
from: string,
to: string,
scope?: ('settings' | 'synonyms' | 'rules')[]
): Promise<Task>;
/**
* Move index to a new one (and will overwrite the original one)
* https://github.com/algolia/algoliasearch-client-js#move-index---moveindex
*/
moveIndex(
from: string,
to: string,
cb: (err: Error, res: Task) => void
): void;
/**
* Move index to a new one (and will overwrite the original one)
* https://github.com/algolia/algoliasearch-client-js#move-index---moveindex
*/
moveIndex(from: string, to: string): Promise<Task>;
/**
* Generate a public API key
* https://github.com/algolia/algoliasearch-client-js#generate-key---generatesecuredapikey
*/
generateSecuredApiKey(key: string, filters: SecuredApiOptions): string;
/**
* Perform multiple operations with one API call to reduce latency
* https://github.com/algolia/algoliasearch-client-js#custom-batch---batch
*/
batch(action: Action[], cb: (err: Error, res: Task) => void): void;
/**
* Perform multiple operations with one API call to reduce latency
* https://github.com/algolia/algoliasearch-client-js#custom-batch---batch
*/
batch(action: Action[]): Promise<Task>;
/**
* Lists global API Keys
* https://github.com/algolia/algoliasearch-client-js#backup--export-an-index---browse
*/
listApiKeys(cb: (err: Error, res: any) => void): void;
/**
* Lists global API Keys
* https://github.com/algolia/algoliasearch-client-js#backup--export-an-index---browse
*/
listApiKeys(): Promise<any>;
/**
* Add global API Keys
* https://github.com/algolia/algoliasearch-client-js#add-user-key---addapikey
*/
addApiKey(scopes: string[], cb: (err: Error, res: Task) => void): void;
/**
* Add global API Key
* https://github.com/algolia/algoliasearch-client-js#add-user-key---addapikey
*/
addApiKey(
scopes: string[],
options: ApiKeyOptions,
cb: (err: Error, res: Task) => void
): void;
/**
* Add global API Keys
* https://github.com/algolia/algoliasearch-client-js#add-user-key---addapikey
*/
addApiKey(scopes: string[], options?: ApiKeyOptions): Promise<Task>;
/**
* Update global API key
* https://github.com/algolia/algoliasearch-client-js#update-user-key---updateapikey
*/
updateApiKey(
key: string,
scopes: string[],
cb: (err: Error, res: Task) => void
): void;
/**
* Update global API key
* https://github.com/algolia/algoliasearch-client-js#update-user-key---updateapikey
*/
updateApiKey(
key: string,
scopes: string[],
options: ApiKeyOptions,
cb: (err: Error, res: Task) => void
): void;
/**
* Update global API key
* https://github.com/algolia/algoliasearch-client-js#update-user-key---updateapikey
*/
updateApiKey(
key: string,
scopes: string[],
options?: ApiKeyOptions
): Promise<Task>;
/**
* Gets the rights of a global key
* https://github.com/algolia/algoliasearch-client-js#update-user-key---updateapikey
*/
getApiKey(key: string, cb: (err: Error, res: any) => void): void;
/**
* Gets the rights of a global key
* https://github.com/algolia/algoliasearch-client-js#update-user-key---updateapikey
*/
getApiKey(key: string): Promise<any>;
/**
* Deletes a global key
* https://github.com/algolia/algoliasearch-client-js#delete-user-key---deleteapikey
*/
deleteApiKey(key: string, cb: (err: Error, res: Task) => void): void;
/**
* Deletes a global key
* https://github.com/algolia/algoliasearch-client-js#delete-user-key---deleteapikey
*/
deleteApiKey(key: string): Promise<Task>;
/**
* Get 1000 last events
* https://github.com/algolia/algoliasearch-client-js#get-logs---getlogs
*/
getLogs(
options: LogsOptions,
cb: (err: Error, res: { logs: Log[] }) => void
): void;
/**
* Get 1000 last events
* https://github.com/algolia/algoliasearch-client-js#get-logs---getlogs
*/
getLogs(options: LogsOptions): Promise<{ logs: Log[] }>;
}
/**
* Interface for the index algolia object
*/
interface Index {
indexName: string;
/**
* Gets a specific object
* https://github.com/algolia/algoliasearch-client-js#find-by-ids---getobjects
*/
getObject(objectID: string, cb: (err: Error, res: {}) => void): void;
/**
* Gets specific attributes from an object
* https://github.com/algolia/algoliasearch-client-js#find-by-ids---getobjects
*/
getObject(
objectID: string,
attributes: string[],
cb: (err: Error, res: {}) => void
): void;
/**
* Gets a list of objects
* https://github.com/algolia/algoliasearch-client-js#find-by-ids---getobjects
*/
getObjects(
objectIDs: string[],
cb: (err: Error, res: { results: {}[] }) => void
): void;
/**
* Add a specific object
* https://github.com/algolia/algoliasearch-client-js#add-objects---addobjects
*/
addObject(object: {}, cb: (err: Error, res: Task) => void): void;
/**
* Add a list of objects
* https://github.com/algolia/algoliasearch-client-js#add-objects---addobjects
*/
addObject(
object: {},
objectID: string,
cb: (err: Error, res: Task) => void
): void;
/**
* Add list of objects
* https://github.com/algolia/algoliasearch-client-js#add-objects---addobjects
*/
addObjects(objects: {}[], cb: (err: Error, res: Task) => void): void;
/**
* Add or replace a specific object
* https://github.com/algolia/algoliasearch-client-js#update-objects---saveobjects
*/
saveObject(object: {}, cb: (err: Error, res: Task) => void): void;
/**
* Add or replace several objects
* https://github.com/algolia/algoliasearch-client-js#update-objects---saveobjects
*/
saveObjects(objects: object[], cb: (err: Error, res: Task) => void): void;
/**
* Update parameters of a specific object
* https://github.com/algolia/algoliasearch-client-js#update-objects---saveobjects
*/
partialUpdateObject(object: {}, cb: (err: Error, res: Task) => void): void;
partialUpdateObject(object: {}, createIfNotExists: boolean, cb: (err: Error, res: Task) => void): void;
/**
* Update parameters of a list of objects
* https://github.com/algolia/algoliasearch-client-js#update-objects---saveobjects
*/
partialUpdateObjects(objects: {}[], cb: (err: Error, res: Task) => void): void;
partialUpdateObjects(objects: {}[], createIfNotExists: boolean, cb: (err: Error, res: Task) => void): void;
/**
* Delete a specific object
* https://github.com/algolia/algoliasearch-client-js#delete-objects---deleteobjects
*/
deleteObject(objectID: string, cb: (err: Error, res: Task) => void): void;
/**
* Delete a list of objects
* https://github.com/algolia/algoliasearch-client-js#delete-objects---deleteobjects
*/
deleteObjects(
objectIDs: string[],
cb: (err: Error, res: Task) => void
): void;
/**
* Delete objects that matches the query
* https://github.com/algolia/algoliasearch-client-js#delete-by-query---deletebyquery
*/
deleteByQuery(query: string, cb: (err: Error, res: any) => void): void;
/**
* Delete objects that matches the query
* https://github.com/algolia/algoliasearch-client-js#delete-by-query---deletebyquery
*/
deleteByQuery(
query: string,
params: {},
cb: (err: Error, res: any) => void
): void;
/**
* Delete objects that matches the query
* https://github.com/algolia/algoliasearch-client-js#delete-by-query---deleteby
*/
deleteBy(params: {}, cb: (err: Error, res: Task) => void): void;
/**
* Wait for an indexing task to be compete
* https://github.com/algolia/algoliasearch-client-js#wait-for-operations---waittask
*/
waitTask(taskID: number, cb: (err: Error, res: TaskStatus) => void): void;
/**
* Get an index settings
* https://github.com/algolia/algoliasearch-client-js#get-settings---getsettings
*/
getSettings(cb: (err: Error, res: IndexSettings) => void): void;
/**
* Set an index settings
* https://github.com/algolia/algoliasearch-client-js#set-settings---setsettings
*/
setSettings(
settings: IndexSettings,
cb: (err: Error, res: Task) => void
): void;
/**
* Set an index settings
* https://github.com/algolia/algoliasearch-client-js#set-settings---setsettings
*/
setSettings(
settings: IndexSettings,
extra: { forwardToReplicas: boolean },
cb: (err: Error, res: Task) => void
): void;
/**
* Clear cache of an index
* https://github.com/algolia/algoliasearch-client-js#cache
*/
clearCache(): void;
/**
* Clear an index content
* https://github.com/algolia/algoliasearch-client-js#clear-index---clearindex
*/
clearIndex(cb: (err: Error, res: Task) => void): void;
/**
* Save a synonym object
* https://github.com/algolia/algoliasearch-client-js#save-synonym---savesynonym
*/
saveSynonym(
synonym: Synonym,
options: SynonymOption,
cb: (err: Error, res: Task) => void
): void;
/**
* Save a synonym object
*/
batchSynonyms(
synonyms: Synonym[],
options: SynonymOption,
cb: (err: Error, res: Task) => void
): void;
/**
* Delete a specific synonym
* https://github.com/algolia/algoliasearch-client-js#batch-synonyms---batchsynonyms
*/
deleteSynonym(
identifier: string,
options: SynonymOption,
cb: (err: Error, res: Task) => void
): void;
/**
* Clear all synonyms of an index
* https://github.com/algolia/algoliasearch-client-js#clear-all-synonyms---clearsynonyms
*/
clearSynonyms(
options: SynonymOption,
cb: (err: Error, res: Task) => void
): void;
/**
* Get a specific synonym
* https://github.com/algolia/algoliasearch-client-js#get-synonym---getsynonym
*/
getSynonym(
identifier: string,
cb: (err: Error, res: Synonym) => void
): void;
/**
* Search a synonyms
* https://github.com/algolia/algoliasearch-client-js#search-synonyms---searchsynonyms
*/
searchSynonyms(
options: SearchSynonymOptions,
cb: (err: Error, res: any) => void
): void;
/**
* Save a rule object
* https://github.com/algolia/algoliasearch-client-js#save-rule---saverule
*/
saveRule(
rule: Rule,
options: RuleOption,
cb: (err: Error, res: Task) => void
): void;
/**
* Save a rule object
*/
batchRules(
rules: Rule[],
options: RuleOption,
cb: (err: Error, res: Task) => void
): void;
/**
* Delete a specific rule
* https://github.com/algolia/algoliasearch-client-js#batch-rules---batchrules
*/
deleteRule(
identifier: string,
options: RuleOption,
cb: (err: Error, res: Task) => void
): void;
/**
* Clear all rules of an index
* https://github.com/algolia/algoliasearch-client-js#clear-all-rules---clearrules
*/
clearRules(options: RuleOption, cb: (err: Error, res: Task) => void): void;
/**
* Get a specific rule
* https://github.com/algolia/algoliasearch-client-js#get-rule---getrule
*/
getRule(identifier: string, cb: (err: Error, res: Rule) => void): void;
/**
* Search a rules
* https://github.com/algolia/algoliasearch-client-js#search-rules---searchrules
*/
searchRules(
options: SearchRuleOptions,
cb: (err: Error, res: any) => void
): void;
/**
* List index user keys
* https://github.com/algolia/algoliasearch-client-js#list-api-keys---listapikeys
*/
listApiKeys(cb: (err: Error, res: any) => void): void;
/**
* Add key for this index
* https://github.com/algolia/algoliasearch-client-js#add-user-key---addapikey
*/
addApiKey(scopes: string[], cb: (err: Error, res: Task) => void): void;
/**
* Add key for this index
* https://github.com/algolia/algoliasearch-client-js#add-user-key---addapikey
*/
addApiKey(
scopes: string[],
options: ApiKeyOptions,
cb: (err: Error, res: Task) => void
): void;
/**
* Update a key for this index
* https://github.com/algolia/algoliasearch-client-js#update-user-key---updateapikey
*/
updateApiKey(
key: string,
scopes: string[],
cb: (err: Error, res: Task) => void
): void;
/**
* Update a key for this index
* https://github.com/algolia/algoliasearch-client-js#update-user-key---updateapikey
*/
updateApiKey(
key: string,
scopes: string[],
options: ApiKeyOptions,
cb: (err: Error, res: Task) => void
): void;
/**
* Gets the rights of an index specific key
* https://github.com/algolia/algoliasearch-client-js#get-key-permissions---getapikeyacl
*/
getApiKey(key: string, cb: (err: Error, res: any) => void): void;
/**
* Deletes an index specific key
* https://github.com/algolia/algoliasearch-client-js#delete-user-key---deleteapikey
*/
deleteApiKey(key: string, cb: (err: Error, res: Task) => void): void;
/**
* Gets specific attributes from an object
* https://github.com/algolia/algoliasearch-client-js#find-by-ids---getobjects
*/
getObject(objectID: string, attributes?: string[]): Promise<{}>;
/**
* Gets a list of objects
* https://github.com/algolia/algoliasearch-client-js#find-by-ids---getobjects
*/
getObjects(objectIDs: string[]): Promise<{ results: {}[] }>;
/**
* Add a list of objects
* https://github.com/algolia/algoliasearch-client-js#add-objects---addobjects
*/
addObject(object: {}, objectID?: string): Promise<Task>;
/**
* Add list of objects
* https://github.com/algolia/algoliasearch-client-js#add-objects---addobjects
*/
addObjects(objects: {}[]): Promise<Task>;
/**
* Add or replace a specific object
* https://github.com/algolia/algoliasearch-client-js#update-objects---saveobjects
*/
saveObject(object: {}): Promise<Task>;
/**
* Add or replace several objects
* https://github.com/algolia/algoliasearch-client-js#update-objects---saveobjects
*/
saveObjects(objects: object[]): Promise<Task>;
/**
* Update parameters of a specific object
* https://github.com/algolia/algoliasearch-client-js#update-objects---saveobjects
*/
partialUpdateObject(object: {}): Promise<Task>;
partialUpdateObject(object: {}, createIfNotExists: boolean): Promise<Task>;
/**
* Update parameters of a list of objects
* https://github.com/algolia/algoliasearch-client-js#update-objects---saveobjects
*/
partialUpdateObjects(objects: {}[]): Promise<Task>;
partialUpdateObjects(objects: {}[], createIfNotExists?: boolean): Promise<Task>;
/**
* Delete a specific object
* https://github.com/algolia/algoliasearch-client-js#delete-objects---deleteobjects
*/
deleteObject(objectID: string): Promise<Task>;
/**
* Delete a list of objects
* https://github.com/algolia/algoliasearch-client-js#delete-objects---deleteobjects
*/
deleteObjects(objectIDs: string[]): Promise<Task>;
/**
* Delete objects that matches the query
* https://github.com/algolia/algoliasearch-client-js#delete-by-query---deletebyquery
*/
deleteByQuery(query: string, params?: {}): Promise<any>;
/**
* Delete objects that matches the query
* https://www.algolia.com/doc/api-reference/api-methods/delete-by-query/
*/
deleteBy(params: {}): Promise<Task>;
/**
* Wait for an indexing task to be compete
* https://github.com/algolia/algoliasearch-client-js#wait-for-operations---waittask
*/
waitTask(taskID: number): Promise<TaskStatus>;
/**
* Get an index settings
* https://github.com/algolia/algoliasearch-client-js#get-settings---getsettings
*/
getSettings(): Promise<IndexSettings>;
/**
* Set an index settings
* https://github.com/algolia/algoliasearch-client-js#set-settings---setsettings
*/
setSettings(settings: IndexSettings, extra?: { forwardToReplicas: boolean }): Promise<Task>;
/**
* Search in an index
* https://github.com/algolia/algoliasearch-client-js#search-in-an-index---search
*/
search<T=any>(params: QueryParameters): Promise<Response<T>>;
/**
* Search in an index
* https://github.com/algolia/algoliasearch-client-js#search-in-an-index---search
*/
search<T=any>(
params: QueryParameters,
cb: (err: Error, res: Response<T>) => void
): void;
/**
* Search in an index
* https://www.algolia.com/doc/api-reference/api-methods/search-for-facet-values/
*/
searchForFacetValues(
options: SearchForFacetValues.Parameters
): Promise<SearchForFacetValues.Response>;
/**
* Search in an index
* https://www.algolia.com/doc/api-reference/api-methods/search-for-facet-values/
*/
searchForFacetValues(
options: SearchForFacetValues.Parameters,
cb: (err: Error, res: SearchForFacetValues.Response) => void
): void;
/**
* Browse an index
* https://github.com/algolia/algoliasearch-client-js#backup--export-an-index---browse
*/
browse(query: string, parameters: BrowseParameters, cb: (err: Error, res: BrowseResponse) => void): void;
/**
* Browse an index
* https://github.com/algolia/algoliasearch-client-js#backup--export-an-index---browse
*/
browse(query: string, cb: (err: Error, res: BrowseResponse) => void): void;
/**
* Browse an index
* https://github.com/algolia/algoliasearch-client-js#backup--export-an-index---browse
*/
browse(query: string, parameters?: BrowseParameters): Promise<BrowseResponse>;
/**
* Browse an index from a cursor
* https://github.com/algolia/algoliasearch-client-js#backup--export-an-index---browse
*/
browseFrom(
cursor: string,
cb: (err: Error, res: BrowseResponse) => void
): void;
/**
* Browse an index from a cursor
* https://github.com/algolia/algoliasearch-client-js#backup--export-an-index---browse
*/
browseFrom(cursor: string): Promise<BrowseResponse>;
/**
* Browse an entire index
* https://github.com/algolia/algoliasearch-client-js#backup--export-an-index---browse
*/
browseAll(query?: string, parameters?: BrowseParameters): Browser;
/**
* Clear an index content
* https://github.com/algolia/algoliasearch-client-js#clear-index---clearindex
*/
clearIndex(): Promise<Task>;
/**
* Save a synonym object
* https://github.com/algolia/algoliasearch-client-js#save-synonym---savesynonym
*/
saveSynonym(synonym: Synonym, options: SynonymOption): Promise<Task>;
/**
* Save a synonym object
*/
batchSynonyms(synonyms: Synonym[], options: SynonymOption): Promise<Task>;
/**
* Delete a specific synonym
* https://github.com/algolia/algoliasearch-client-js#batch-synonyms---batchsynonyms
*/
deleteSynonym(objectID: string, options: SynonymOption): Promise<Task>;
/**
* Clear all synonyms of an index
* https://github.com/algolia/algoliasearch-client-js#clear-all-synonyms---clearsynonyms
*/
clearSynonyms(options: SynonymOption): Promise<Task>;
/**
* Get a specific synonym
* https://github.com/algolia/algoliasearch-client-js#get-synonym---getsynonym
*/
getSynonym(objectID: string): Promise<Synonym>;
/**
* Search a synonyms
* https://github.com/algolia/algoliasearch-client-js#search-synonyms---searchsynonyms
*/
searchSynonyms(options: SearchSynonymOptions): Promise<any>;
/**
* Save a rule object
* https://github.com/algolia/algoliasearch-client-js#save-rule---saverule
*/
saveRule(rule: Rule, options: RuleOption): Promise<Task>;
/**
* Save a rule object
*/
batchRules(rules: Rule[], options: RuleOption): Promise<Task>;
/**
* Delete a specific rule
* https://github.com/algolia/algoliasearch-client-js#batch-rules---batchrules
*/
deleteRule(identifier: string, options: RuleOption): Promise<Task>;
/**
* Clear all query rules of an index
* https://github.com/algolia/algoliasearch-client-js#clear-all-rules---clearrules
*/
clearRules(options: RuleOption): Promise<Task>;
/**
* Get a specific query rule
* https://github.com/algolia/algoliasearch-client-js#get-rule---getrule
*/
getRule(identifier: string): Promise<Rule>;
/**
* Search for query rules
* https://github.com/algolia/algoliasearch-client-js#search-rules---searchrules
*/
searchRules(options: SearchRuleOptions): Promise<any>;
/**
* List index user keys
* https://github.com/algolia/algoliasearch-client-js#list-api-keys---listapikeys
*/
listApiKeys(): Promise<any>;
/**
* Add key for this index
* https://github.com/algolia/algoliasearch-client-js#add-user-key---addapikey
*/
addApiKey(scopes: string[], options?: ApiKeyOptions): Promise<Task>;
/**
* Update a key for this index
* https://github.com/algolia/algoliasearch-client-js#update-user-key---updateapikey
*/
updateApiKey(key: string, scopes: string[]): Promise<Task>;
/**
* Update a key for this index
* https://github.com/algolia/algoliasearch-client-js#update-user-key---updateapikey
*/
updateApiKey(
key: string,
scopes: string[],
options: ApiKeyOptions
): Promise<Task>;
/**
* Gets the rights of an index specific key
* https://github.com/algolia/algoliasearch-client-js#get-key-permissions---getapikeyacl
*/
getApiKey(key: string): Promise<any>;
/**
* Deletes an index specific key
* https://github.com/algolia/algoliasearch-client-js#delete-user-key---deleteapikey
*/
deleteApiKey(key: string): Promise<Task>;
}
/**
* Interface describing available options when initializing a client
*/
interface ClientOptions {
/**
* Timeout for requests to our servers, in milliseconds
* default: 15s (node), 2s (browser)
* https://github.com/algolia/algoliasearch-client-js#client-options
*/
timeout?: number;
/**
* Protocol to use when communicating with algolia
* default: current protocol(browser), https(node)
* https://github.com/algolia/algoliasearch-client-js#client-options
*/
protocol?: string;
/**
* (node only) httpAgent instance to use when communicating with servers.
* https://github.com/algolia/algoliasearch-client-js#client-options
*/
httpAgent?: any;
/**
* read: array of read hosts to use to call servers, computed automatically
* write: array of read hosts to use to call servers, computed automatically
* https://github.com/algolia/algoliasearch-client-js#client-options
*/
hosts?: { read?: string[]; write?: string[] };
/**
* enable the experimental feature: caching requests instead of responses
* see https://github.com/algolia/algoliasearch-client-javascript/pull/694
*/
_useRequestCache?: boolean
}
/**
* Interface describing options available for gettings the logs
*/
interface LogsOptions {
/**
* Specify the first entry to retrieve (0-based, 0 is the most recent log entry).
* default: 0
* https://github.com/algolia/algoliasearch-client-js#get-logs---getlogs
*/
offset?: number;
/**
* Specify the maximum number of entries to retrieve starting at the offset.
* default: 10
* maximum: 1000
* https://github.com/algolia/algoliasearch-client-js#get-logs---getlogs
*/
length?: number;
/**
* @deprecated
* Retrieve only logs with an HTTP code different than 200 or 201
* https://github.com/algolia/algoliasearch-client-js#get-logs---getlogs
*/
onlyErrors?: boolean;
/**
* Specify the type of logs to retrieve
* 'query' Retrieve only the queries
* 'build' Retrieve only the build operations
* 'error' Retrieve only the errors (same as onlyErrors parameters)
* https://github.com/algolia/algoliasearch-client-js#get-logs---getlogs
*/
type?: string;
/**
* The index to request logs from
*/
indexName?: string;
}
/**
* Describe the action object used for batch operation
*/
interface Action {
/**
* Type of the batch action
* https://github.com/algolia/algoliasearch-client-js#custom-batch---batch
*/
action:
| 'addObject'
| 'updateObject'
| 'partialUpdateObject'
| 'partialUpdateObjectNoCreate'
| 'deleteObject'
| 'delete'
| 'clear';
/**
* Name of the index where the bact will be performed
* https://github.com/algolia/algoliasearch-client-js#custom-batch---batch
*/
indexName: string;
/**
* Object
* https://github.com/algolia/algoliasearch-client-js#custom-batch---batch
*/
body: {};
}
/**
* Describes the option used when creating user key
*/
interface ApiKeyOptions {
/**
* Add a validity period. The key will be valid for a specific period of time (in seconds).
* https://github.com/algolia/algoliasearch-client-js#add-user-key---addapikey
*/
validity?: number;
/**
* Specify the maximum number of API calls allowed from an IP address per hour
* https://github.com/algolia/algoliasearch-client-js#add-user-key---addapikey
*/
maxQueriesPerIPPerHour?: number;
/**
* Specify the maximum number of hits this API key can retrieve in one call
* https://github.com/algolia/algoliasearch-client-js#add-user-key---addapikey
*/
maxHitsPerQuery?: boolean;
/**
* Specify the list of targeted indices
* https://github.com/algolia/algoliasearch-client-js#add-user-key---addapikey
*/
indexes?: string[];
/**
* Specify the list of referers
* https://github.com/algolia/algoliasearch-client-js#add-user-key---addapikey
*/
referers?: string[];
/**
* Specify the list of query parameters
* https://github.com/algolia/algoliasearch-client-js#add-user-key---addapikey
*/
queryParameters?: QueryParameters;
/**
* Specify a description to describe where the key is used.
* https://github.com/algolia/algoliasearch-client-js#add-user-key---addapikey
*/
description?: string;
}
/**
* Describes option used when making operation on synonyms
*/
interface SynonymOption {
/**
* You can forward all settings updates to the replicas of an index
* https://github.com/algolia/algoliasearch-client-js#replica-settings
*/
forwardToReplicas?: boolean;
/**
* Replace all existing synonyms on the index with the content of the batch
* https://github.com/algolia/algoliasearch-client-js#batch-synonyms---batchsynonyms
*/
replaceExistingSynonyms?: boolean;
}
/**
* Describes options used when searching for synonyms
*/
interface SearchSynonymOptions {
/**
* The actual search query to find synonyms
* https://github.com/algolia/algoliasearch-client-js#search-synonyms---searchsynonyms
*/
query?: string;
/**
* The page to fetch when browsing through several pages of results
* default: 0
* https://github.com/algolia/algoliasearch-client-js#search-synonyms---searchsynonyms
*/
page?: number;
/**
* Restrict the search to a specific type of synonym
* Use an empty string to search all types (default behavior)
* https://github.com/algolia/algoliasearch-client-js#search-synonyms---searchsynonyms
*/
type?: string;
/**
* Number of hits per page
* default: 100
* https://github.com/algolia/algoliasearch-client-js#search-synonyms---searchsynonyms
*/
hitsPerPage?: number;
}
/**
* Describes option used when making operation on query rules
*/
interface RuleOption {
/**
* You can forward all settings updates to the replicas of an index
* https://github.com/algolia/algoliasearch-client-js#replica-settings
*/
forwardToReplicas?: boolean;
/**
* Replace all existing query rules on the index with the content of the batch
*/
clearExistingRules?: boolean;
}
/**
* Describes options used when searching for query rules
*/
interface SearchRuleOptions {
/**
* The actual search query to find synonyms
*/
query?: string;
/**
* When specified, restricts matches to rules with a specific anchoring type.
* When omitted, all anchoring types may match.
*/
anchoring?: string;
/**
* When specified, restricts matches to contextual rules with a specific context (exact match).
* When omitted, any generic or contextual rule (with any context) may match.
*/
context?: string;
/**
* Requested page (zero-based)
* default: 0
*/
page?: number;
/**
* Number of hits per page
* default: 20
*/
hitsPerPage?: number;
}
interface BrowseResponse {
cursor?: string;
hits: {}[];
params: string;
query: string;
processingTimeMS: number;
}
type BrowseParameters = Omit<
QueryParameters,
| "typoTolerance"
| "distinct"
| "facets"
| "getRankingInfo"
| "attributesToHighlight"
| "attributesToSnippet"
>
interface Browser {
on(type: "error", cb: (err: Error) => void): void
on(type: "end", cb: () => void): void
on(type: "stop", cb: () => void): void
on(type: "result", cb: (content: BrowseResponse) => void): void
stop(): void
}
/**
* Describes a synonym object
*/
interface Synonym {
/**
* ObjectID of the synonym
* https://github.com/algolia/algoliasearch-client-js#save-synonym---savesynonym
*/
objectID: string;
/**
* Type of synonym
* https://github.com/algolia/algoliasearch-client-js#save-synonym---savesynonym
*/
type: 'synonym' | 'oneWaySynonym';
/**
* Values used for the synonym
* https://github.com/algolia/algoliasearch-client-js#save-synonym---savesynonym
*/
synonyms: string[];
}
/**
* Describes a query rule object
*/
interface Rule {
/**
* ObjectID of the synonym
* https://github.com/algolia/algoliasearch-client-js#save-synonym---savesynonym
*/
objectID: string;
/**
* Condition of the rule
*/
condition: {
/**
* Query pattern
* syntax: https://www.algolia.com/doc/rest-api/query-rules/?language=php#query-pattern-syntax
*/
pattern: string;
/**
* Whether the pattern must match the beginning or the end of the query string, or both, or none.
*/
anchoring: 'is' | 'startsWith' | 'endsWith' | 'contains';
/**
* Rule context (format: [A-Za-z0-9_-]+).
* When specified, the rule is contextual and applies only when the same context is specified
* at query time (using the ruleContexts parameter).
* When absent, the rule is generic and always applies
* (provided that its other conditions are met, of course).
*/
context?: string;
};
/**
* Consequence of the rule. At least one of the following must be used:
*/
consequence: {
params?: {
/**
* When a string, it replaces the entire query string.
* When an object, describes incremental edits to be made to the query string.
*/
query?:
| string
| {
/**
* Tokens (literals or placeholders) from the query pattern
* that should be removed from the query string.
*/
remove: string[];
};
/**
* Names of facets to which automatic filtering must be applied;
* they must match the facet name of a facet value placeholder in the query pattern.
*/
automaticFacetFilters?: string[];
/**
* Same as automaticFacetFilters, but for optionalFacetFilters.
* The same syntax as query parameters can be used to specify a score: facetName<score=1>.
*/
automaticOptionalFacetFilters?: string[];
};
/**
* Objects to promote as hits. Each object must contain the following fields
*/
promote?: {
/**
* Unique identifier of the object to promote
*/
objectID: string;
/**
* Promoted rank for the object (zero-based)
*/
position: number;
}[];
/**
* Custom JSON object that will be appended to the userData array in the response.
* This object is not interpreted by the API. It is limited to 1kB of minified JSON.
*/
userData?: {};
};
/**
* This field is intended for rule management purposes,
* in particular to ease searching for rules and presenting them to human readers.
* It is not interpreted by the API.
*/
description?: string;
}
/**
* Describes the options used when generating new api keys
*/
interface SecuredApiOptions {
/**
* Filter the query with numeric, facet or/and tag filters
* default: ""
* https://github.com/algolia/algoliasearch-client-js#filters-1
*/
filters?: string;
/**
* Defines the expiration date of the API key
* https://github.com/algolia/algoliasearch-client-js#valid-until
*/
validUntil?: number;
/**
* Restricts the key to a list of index names allowed for the secured API key
* https://github.com/algolia/algoliasearch-client-js#index-restriction
*/
restrictIndices?: string;
/**
* Allows you to restrict a single user to performing a maximum of N API calls per hour
* https://github.com/algolia/algoliasearch-client-js#user-rate-limiting
*/
userToken?: string;
}
interface QueryParameters {
/**
* Query string used to perform the search
* default: ''
* https://www.algolia.com/doc/api-reference/api-parameters/query/
*/
query?: string;
/**
* Filter the query with numeric, facet or/and tag filters
* default: ""
* https://www.algolia.com/doc/api-reference/api-parameters/filters/
*/
filters?: string;
/**
* A string that contains the list of attributes you want to retrieve in order to minimize the size of the JSON answer.
* default: *
* https://www.algolia.com/doc/api-reference/api-parameters/attributesToRetrieve/
*/
attributesToRetrieve?: string[];
/**
* List of attributes you want to use for textual search
* default: attributeToIndex
* https://www.algolia.com/doc/api-reference/api-parameters/restrictSearchableAttributes/
*/
restrictSearchableAttributes?: string[];
/**
* You can use facets to retrieve only a part of your attributes declared in attributesForFaceting attributes
* default: []
* https://www.algolia.com/doc/api-reference/api-parameters/facets/
*/
facets?: string[];
/**
* Force faceting to be applied after de-duplication (via the Distinct setting).
* When using the distinct setting in combination with faceting, facet counts may be higher than expected.
* This is because the engine, by default, computes faceting before applying de-duplication (distinct).
* When facetingAfterDistinct is set to true, the engine calculates faceting after the de-duplication has been applied.
* default ""
* https://www.algolia.com/doc/api-reference/api-parameters/facetingAfterDistinct/
*/
facetingAfterDistinct?: boolean;
/**
* Limit the number of facet values returned for each facet.
* default: 100
* https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/
*/
maxValuesPerFacet?: number;
/**
* Default list of attributes to highlight. If set to null, all indexed attributes are highlighted.
* default: null
* https://www.algolia.com/doc/api-reference/api-parameters/attributesToHighlight/
*/
attributesToHighlight?: string[];
/**
* Default list of attributes to snippet alongside the number of words to return
* default: null
* https://www.algolia.com/doc/api-reference/api-parameters/attributesToSnippet/
*/
attributesToSnippet?: string[];
/**
* Specify the string that is inserted before the highlighted parts in the query result
* default: <em>
* https://www.algolia.com/doc/api-reference/api-parameters/highlightPreTag/
*/
highlightPreTag?: string;
/**
* Specify the string that is inserted after the highlighted parts in the query result
* default: </em>
* https://www.algolia.com/doc/api-reference/api-parameters/highlightPostTag/
*/
highlightPostTag?: string;
/**
* String used as an ellipsis indicator when a snippet is truncated.
* default: …
* https://www.algolia.com/doc/api-reference/api-parameters/snippetEllipsisText/
*/
snippetEllipsisText?: string;
/**
* If set to true, restrict arrays in highlights and snippets to items that matched the query at least partially else return all array items in highlights and snippets
* default: false
* https://www.algolia.com/doc/api-reference/api-parameters/restrictHighlightAndSnippetArrays/
*/
restrictHighlightAndSnippetArrays?: boolean;
/**
* Pagination parameter used to select the number of hits per page
* default: 20
* https://www.algolia.com/doc/api-reference/api-parameters/hitsPerPage/
*/
hitsPerPage?: number;
/**
* Pagination parameter used to select the page to retrieve.
* default: 0
* https://www.algolia.com/doc/api-reference/api-parameters/page/
*/
page?: number;
/**
* Offset of the first hit to return
* default: null
* https://www.algolia.com/doc/api-reference/api-parameters/offset/
*/
offset?: number;
/**
* Number of hits to return.
* default: null
* https://www.algolia.com/doc/api-reference/api-parameters/length/
*/
length?: number;
/**
* The minimum number of characters needed to accept one typo.
* default: 4
* https://www.algolia.com/doc/api-reference/api-parameters/minWordSizefor1Typo/
*/
minWordSizefor1Typo?: number;
/**
* The minimum number of characters needed to accept two typo.
* fault: 8
* https://www.algolia.com/doc/api-reference/api-parameters/minWordSizefor2Typos/
*/
minWordSizefor2Typos?: number;
/**
* This option allows you to control the number of typos allowed in the result set:
* default: true
* 'true' The typo tolerance is enabled and all matching hits are retrieved
* 'false' The typo tolerance is disabled. All results with typos will be hidden.
* 'min' Only keep results with the minimum number of typos
* 'strict' Hits matching with 2 typos are not retrieved if there are some matching without typos.
* https://www.algolia.com/doc/api-reference/api-parameters/typoTolerance/
*/
typoTolerance?: boolean;
/**
* If set to false, disables typo tolerance on numeric tokens (numbers).
* default:
* https://www.algolia.com/doc/api-reference/api-parameters/allowTyposOnNumericTokens/
*/
allowTyposOnNumericTokens?: boolean;
/**
* If set to true, plural won't be considered as a typo
* default: false
* https://www.algolia.com/doc/api-reference/api-parameters/ignorePlurals/
*/
ignorePlurals?: boolean;
/**
* List of attributes on which you want to disable typo tolerance
* default: []
* https://www.algolia.com/doc/api-reference/api-parameters/disableTypoToleranceOnAttributes/
*/
disableTypoToleranceOnAttributes?: string[];
/**
* Search for entries around a given location
* default: ""
* https://www.algolia.com/doc/api-reference/api-parameters/aroundLatLng/
*/
aroundLatLng?: string;
/**
* Search for entries around a given latitude/longitude automatically computed from user IP address.
* default: ""
* https://www.algolia.com/doc/api-reference/api-parameters/aroundLatLngViaIP/
*/
aroundLatLngViaIP?: boolean;
/**
* Control the radius associated with a geo search. Defined in meters.
* default: null
* You can specify aroundRadius=all if you want to compute the geo distance without filtering in a geo area
* https://www.algolia.com/doc/api-reference/api-parameters/aroundRadius/
*/
aroundRadius?: number | 'all';
/**
* Control the precision of a geo search
* default: null
* https://www.algolia.com/doc/api-reference/api-parameters/aroundPrecision/
*/
aroundPrecision?: number;
/**
* Define the minimum radius used for a geo search when aroundRadius is not set.
* default: null
* https://www.algolia.com/doc/api-reference/api-parameters/minimumAroundRadius/
*/
minimumAroundRadius?: number;
/**
* Search entries inside a given area defined by the two extreme points of a rectangle
* default: null
* https://www.algolia.com/doc/api-reference/api-parameters/insideBoundingBox/
*/
insideBoundingBox?: number[][];
/**
* Selects how the query words are interpreted
* default: 'prefixLast'
* 'prefixAll' All query words are interpreted as prefixes. This option is not recommended.
* 'prefixLast' Only the last word is interpreted as a prefix (default behavior).
* 'prefixNone' No query word is interpreted as a prefix. This option is not recommended.
* https://www.algolia.com/doc/api-reference/api-parameters/queryType/
*/
queryType?: "prefixAll"|"prefixLast"|"prefixNone";
/**
* Search entries inside a given area defined by a set of points
* defauly: ''
* https://www.algolia.com/doc/api-reference/api-parameters/insidePolygon/
*/
insidePolygon?: number[][];
/**
* This option is used to select a strategy in order to avoid having an empty result page
* default: 'none'
* 'lastWords' When a query does not return any results, the last word will be added as optional
* 'firstWords' When a query does not return any results, the first word will be added as optional
* 'allOptional' When a query does not return any results, a second trial will be made with all words as optional
* 'none' No specific processing is done when a query does not return any results
* https://www.algolia.com/doc/api-reference/api-parameters/removeWordsIfNoResults/
*/
removeWordsIfNoResults?: "none"|"lastWords"|"firstWords"|"allOptional";
/**
* Enables the advanced query syntax
* default: false
* https://www.algolia.com/doc/api-reference/api-parameters/advancedSyntax/
*/
advancedSyntax?: boolean;
/**
* A string that contains the comma separated list of words that should be considered as optional when found in the query
* default: []
* https://www.algolia.com/doc/api-reference/api-parameters/optionalWords/
*/
optionalWords?: string[];
/**
* Remove stop words from the query before executing it
* default: false
* true|false: enable or disable stop words for all 41 supported languages; or
* a list of language ISO codes (as a comma-separated string) for which stop words should be enable
* https://www.algolia.com/doc/api-reference/api-parameters/removeStopWords/
*/
removeStopWords?: boolean|string[];
/**
* List of attributes on which you want to disable the computation of exact criteria
* default: []
* https://www.algolia.com/doc/api-reference/api-parameters/disableExactOnAttributes/
*/
disableExactOnAttributes?: string[];
/**
* This parameter control how the exact ranking criterion is computed when the query contains one word
* default: attribute
* 'none': no exact on single word query
* 'word': exact set to 1 if the query word is found in the record
* 'attribute': exact set to 1 if there is an attribute containing a string equals to the query
* https://www.algolia.com/doc/api-reference/api-parameters/exactOnSingleWordQuery/
*/
exactOnSingleWordQuery?: "attribute"|"none"|"word";
/**
* Specify the list of approximation that should be considered as an exact match in the ranking formula
* default: ['ignorePlurals', 'singleWordSynonym']
* 'ignorePlurals': alternative words added by the ignorePlurals feature
* 'singleWordSynonym': single-word synonym (For example "NY" = "NYC")
* 'multiWordsSynonym': multiple-words synonym
* https://www.algolia.com/doc/api-reference/api-parameters/alternativesAsExact/
*/
alternativesAsExact?: Array<"ignorePlurals"|"singleWordSynonym"|"multiWordsSynonym">;
/**
* If set to 1, enables the distinct feature, disabled by default, if the attributeForDistinct index setting is set.
* https://www.algolia.com/doc/api-reference/api-parameters/distinct/
*/
distinct?: number|boolean;
/**
* If set to true, the result hits will contain ranking information in the _rankingInfo attribute.
* default: false
* https://www.algolia.com/doc/api-reference/api-parameters/getRankingInfo/
*/
getRankingInfo?: boolean;
/**
* @deprecated Use `numericAttributesForFiltering` instead
* All numerical attributes are automatically indexed as numerical filters
* default: ''
* https://www.algolia.com/doc/api-reference/api-parameters/numericAttributesForFiltering/
*/
numericAttributesToIndex?: string[];
/**
* All numerical attributes are automatically indexed as numerical filters
* default: ''
* https://www.algolia.com/doc/api-reference/api-parameters/numericAttributesForFiltering/
*/
numericAttributesForFiltering?: string[];
/**
* @deprecated please use filters instead
* A string that contains the comma separated list of numeric filters you want to apply.
* https://www.algolia.com/doc/api-reference/api-parameters/numericFilters/
*/
numericFilters?: string[];
/**
* @deprecated
*
* Filter the query by a set of tags.
* Default: []
* https://www.algolia.com/doc/api-reference/api-parameters/tagFilters/
*/
tagFilters?: string[];
/**
* Filter the query by a set of facets.
* Default: []
* https://www.algolia.com/doc/api-reference/api-parameters/facetFilters/
*/
facetFilters?: string[]|string[][];
/**
* If set to false, this query will not be taken into account in the analytics feature.
* default true
* https://www.algolia.com/doc/api-reference/api-parameters/analytics/
*/
analytics?: boolean;
/**
* If set to true, enables the Click Analytics feature
* default false
* https://www.algolia.com/doc/api-reference/api-parameters/clickAnalytics/
*/
clickAnalytics?: boolean;
/**
* If set, tag your query with the specified identifiers
* default: []
* https://www.algolia.com/doc/api-reference/api-parameters/analyticsTags/
*/
analyticsTags?: string[];
/**
* If set to false, the search will not use the synonyms defined for the targeted index.
* default: true
* https://www.algolia.com/doc/api-reference/api-parameters/synonyms/
*/
synonyms?: boolean;
/**
* If set to false, words matched via synonym expansion will not be replaced by the matched synonym in the highlighted result.
* default: true
* https://www.algolia.com/doc/api-reference/api-parameters/replaceSynonymsInHighlight/
*/
replaceSynonymsInHighlight?: boolean;
/**
* Configure the precision of the proximity ranking criterion
* default: 1
* https://www.algolia.com/doc/api-reference/api-parameters/minProximity/
*/
minProximity?: number;
nbShards?: number;
userData?: string | object;
/**
* https://www.algolia.com/doc/api-reference/api-parameters/sortFacetValuesBy/
*/
sortFacetValuesBy?: 'count' | 'alpha';
}
namespace SearchForFacetValues {
interface Parameters extends QueryParameters {
/**
* The facet to search in
*/
facetName: string;
/**
* The query for the search in this facet
*/
facetQuery: string;
/**
* The maximum number of facets to fetch
*/
maxFacetHits?: number;
}
interface Response {
facetHits: { value: string; highlighted: string; count: number }[];
exhaustiveFacetsCount: boolean;
processingTimeMS: number;
}
}
interface Log {
timestamp: string;
method: string;
answer_code: number;
query_body: string;
answer: string;
url: string;
ip: string;
query_headers: string;
sha1: string;
nb_api_calls: string;
index: string;
query_params: string;
query_nb_hits: string;
processing_time_ms: string;
exhaustive_faceting?: false;
exhaustive_nb_hits?: false;
}
interface Task {
taskID: number;
createdAt: string;
objectID?: string;
}
interface TaskStatus {
status: 'published' | 'notPublished',
pendingTask: boolean,
}
interface IndexSettings {
/**
* The list of attributes you want index
* default: *
* https://github.com/algolia/algoliasearch-client-js#attributestoindex
*/
attributesToIndex?: string[];
/**
* The list of attributes you want to use for faceting
* default: null
* https://github.com/algolia/algoliasearch-client-js#attributesforfaceting
*/
attributesForFaceting?: string[];
/**
* The list of attributes that cannot be retrieved at query time
* default: null
* https://github.com/algolia/algoliasearch-client-js#unretrievableattributes
*/
unretrievableAttributes?: string[];
/**
* List of attributes you want to use for textual search
* default: []
* https://github.com/algolia/algoliasearch-client-js#searchableattributes
*/
searchableAttributes?: string[];
/**
* A string that contains the list of attributes you want to retrieve in order to minimize the size of the JSON answer
* default: *
* https://github.com/algolia/algoliasearch-client-js#attributestoretrieve
*/
attributesToRetrieve?: string[];
/**
* Controls the way results are sorted
* default: ['typo', 'geo', 'words', 'filters', 'proximity', 'attribute', 'exact', 'custom']
* https://github.com/algolia/algoliasearch-client-js#ranking
*/
ranking?: string[];
/**
* Lets you specify part of the ranking
* default: []
* https://github.com/algolia/algoliasearch-client-js#customranking
*/
customRanking?: string[];
/**
* The list of indices on which you want to replicate all write operations
* default: []
* https://github.com/algolia/algoliasearch-client-js#replicas
*/
replicas?: string[];
/**
* Limit the number of facet values returned for each facet
* default: ""
* https://github.com/algolia/algoliasearch-client-js#maxvaluesperfacet
*/
maxValuesPerFacet?: number;
/**
* Default list of attributes to highlight. If set to null, all indexed attributes are highlighted.
* default: null
* https://github.com/algolia/algoliasearch-client-js#attributestohighlight
*/
attributesToHighlight?: string[];
/**
* Default list of attributes to snippet alongside the number of words to return
* default: null
* https://github.com/algolia/algoliasearch-client-js#attributestosnippet
*/
attributesToSnippet?: string[];
/**
* Specify the string that is inserted before the highlighted parts in the query result
* default: <em>
* https://github.com/algolia/algoliasearch-client-js#highlightpretag
*/
highlightPreTag?: string;
/**
* Specify the string that is inserted after the highlighted parts in the query result
* default: </em>
* https://github.com/algolia/algoliasearch-client-js#highlightposttag
*/
highlightPostTag?: string;
/**
* String used as an ellipsis indicator when a snippet is truncated.
* default: …
* https://github.com/algolia/algoliasearch-client-js#snippetellipsistext
*/
snippetEllipsisText?: string;
/**
* If set to true, restrict arrays in highlights and snippets to items that matched the query at least partially else return all array items in highlights and snippets
* default: false
* https://github.com/algolia/algoliasearch-client-js#restricthighlightandsnippetarrays
*/
restrictHighlightAndSnippetArrays?: boolean;
/**
* Pagination parameter used to select the number of hits per page
* default: 20
* https://github.com/algolia/algoliasearch-client-js#hitsperpage
*/
hitsPerPage?: number;
/**
* The minimum number of characters needed to accept one typo
* default: 4
* https://github.com/algolia/algoliasearch-client-js#minwordsizefor1typo
*/
minWordSizefor1Typo?: number;
/**
* The minimum number of characters needed to accept two typos.
* default: 8
* https://github.com/algolia/algoliasearch-client-js#highlightposttag
*/
minWordSizefor2Typos?: number;
/**
* This option allows you to control the number of typos allowed in the result set
* default: true
* 'true' The typo tolerance is enabled and all matching hits are retrieved (default behavior).
* 'false' The typo tolerance is disabled. All results with typos will be hidden.
* 'min' Only keep results with the minimum number of typos. For example, if one result matches without typos, then all results with typos will be hidden.
* 'strict' Hits matching with 2 typos are not retrieved if there are some matching without typos.
* https://github.com/algolia/algoliasearch-client-js#typotolerance
*/
typoTolerance?: boolean | 'min' | 'strict';
/**
* If set to false, disables typo tolerance on numeric tokens (numbers).
* default: true
* https://github.com/algolia/algoliasearch-client-js#allowtyposonnumerictokens
*/
allowTyposOnNumericTokens?: boolean;
/**
* If set to true, plural won't be considered as a typo
* default: false
* https://github.com/algolia/algoliasearch-client-js#ignoreplurals
*/
ignorePlurals?: boolean;
/**
* List of attributes on which you want to disable typo tolerance
* default: ""
* https://github.com/algolia/algoliasearch-client-js#disabletypotoleranceonattributes
*/
disableTypoToleranceOnAttributes?: string;
/**
* Specify the separators (punctuation characters) to index.
* default: ""
* https://github.com/algolia/algoliasearch-client-js#separatorstoindex
*/
separatorsToIndex?: string;
/**
* Selects how the query words are interpreted
* default: 'prefixLast'
* 'prefixAll' All query words are interpreted as prefixes. This option is not recommended.
* 'prefixLast' Only the last word is interpreted as a prefix (default behavior).
* 'prefixNone' No query word is interpreted as a prefix. This option is not recommended.
* https://github.com/algolia/algoliasearch-client-js#querytype
*/
queryType?: 'prefixAll' | 'prefixLast' | 'prefixNone';
/**
* This option is used to select a strategy in order to avoid having an empty result page
* default: 'none'
* 'lastWords' When a query does not return any results, the last word will be added as optional
* 'firstWords' When a query does not return any results, the first word will be added as optional
* 'allOptional' When a query does not return any results, a second trial will be made with all words as optional
* 'none' No specific processing is done when a query does not return any results
* https://github.com/algolia/algoliasearch-client-js#removewordsifnoresults
*/
removeWordsIfNoResults?: string;
/**
* Enables the advanced query syntax
* default: false
* https://github.com/algolia/algoliasearch-client-js#advancedsyntax
*/
advancedSyntax?: boolean;
/**
* A string that contains the comma separated list of words that should be considered as optional when found in the query
* default: []
* https://github.com/algolia/algoliasearch-client-js#optionalwords
*/
optionalWords?: string[];
/**
* Remove stop words from the query before executing it
* default: false
* true|false: enable or disable stop words for all 41 supported languages; or
* a list of language ISO codes (as a comma-separated string) for which stop words should be enable
* https://github.com/algolia/algoliasearch-client-js#removestopwords
*/
removeStopWords?: boolean | string[];
/**
* List of attributes on which you want to apply word-splitting ("decompounding") for
* each of the languages supported (German, Dutch, and Finnish as of 05/2018)
* default: {de: [], nl: [], fi: []}
*/
decompoundedAttributes?: { [key in Partial<'nl' | 'de' | 'fi'>]: string[] };
/**
* List of attributes on which you want to disable prefix matching
* default: []
* https://github.com/algolia/algoliasearch-client-js#disableprefixonattributes
*/
disablePrefixOnAttributes?: string[];
/**
* List of attributes on which you want to disable the computation of exact criteria
* default: []
* https://github.com/algolia/algoliasearch-client-js#disableexactonattributes
*/
disableExactOnAttributes?: string[];
/**
* This parameter control how the exact ranking criterion is computed when the query contains one word
* default: attribute
* 'none': no exact on single word query
* 'word': exact set to 1 if the query word is found in the record
* 'attribute': exact set to 1 if there is an attribute containing a string equals to the query
* https://github.com/algolia/algoliasearch-client-js#exactonsinglewordquery
*/
exactOnSingleWordQuery?: string;
/**
* Specify the list of approximation that should be considered as an exact match in the ranking formula
* default: ['ignorePlurals', 'singleWordSynonym']
* 'ignorePlurals': alternative words added by the ignorePlurals feature
* 'singleWordSynonym': single-word synonym (For example "NY" = "NYC")
* 'multiWordsSynonym': multiple-words synonym
* https://github.com/algolia/algoliasearch-client-js#alternativesasexact
*/
alternativesAsExact?: (
| "ignorePlurals"
| "singleWordSynonym"
| "multiWordsSynonym")[];
/**
* The name of the attribute used for the Distinct feature
* default: null
* https://github.com/algolia/algoliasearch-client-js#attributefordistinct
*/
attributeForDistinct?: string;
/**
* If set to 1, enables the distinct feature, disabled by default, if the attributeForDistinct index setting is set.
* https://github.com/algolia/algoliasearch-client-js#distinct
*/
distinct?: boolean | number;
/**
* All numerical attributes are automatically indexed as numerical filters
* default ''
* https://github.com/algolia/algoliasearch-client-js#numericattributestoindex
*/
numericAttributesToIndex?: string[];
/**
* Allows compression of big integer arrays.
* default: false
* https://github.com/algolia/algoliasearch-client-js#allowcompressionofintegerarray
*/
allowCompressionOfIntegerArray?: boolean;
/**
* Specify alternative corrections that you want to consider.
* default: []
* https://github.com/algolia/algoliasearch-client-js#altcorrections
*/
altCorrections?: {}[];
/**
* Configure the precision of the proximity ranking criterion
* default: 1
* https://github.com/algolia/algoliasearch-client-js#minproximity
*/
minProximity?: number;
/**
* This is an advanced use-case to define a token substitutable by a list of words without having the original token searchable
* default: {}
* https://github.com/algolia/algoliasearch-client-js#placeholders
*/
placeholders?: {
[name: string]: string[],
};
/**
* List of attributes on which to do a decomposition of camel case words.
* https://www.algolia.com/doc/api-reference/api-parameters/camelCaseAttributes/
*/
camelCaseAttributes?: string[];
/**
* Controls how facet values are sorted.
* https://www.algolia.com/doc/api-reference/api-parameters/sortFacetValuesBy/
*/
sortFacetValuesBy?: 'count' | 'alpha';
/**
* Sets the languages to be used by language-specific settings and functionalities
* such as ignorePlurals, removeStopWords, and CJK word-detection.
* https://www.algolia.com/doc/api-reference/api-parameters/queryLanguages/
*/
queryLanguages?: Array<'af' | 'ar' | 'az' | 'bg' | 'bn' | 'ca' | 'cs' | 'cy' | 'da' | 'de' | 'el' | 'en' | 'eo' | 'es' | 'et' | 'eu' | 'fa' | 'fi' | 'fo' | 'fr' | 'ga' | 'gl' | 'he' | 'hi' | 'hu' | 'hy' | 'id' | 'is' | 'it' | 'ja' | 'ka' | 'kk' | 'ko' | 'ku' | 'ky' | 'lt' | 'lv' | 'mi' | 'mn' | 'mr' | 'ms' | 'mt' | 'nb' | 'nl' | 'no' | 'ns' | 'pl' | 'ps' | 'pt' | 'pt-br' | 'qu' | 'ro' | 'ru' | 'sk' | 'sq' | 'sv' | 'sw' | 'ta' | 'te' | 'th' | 'tl' | 'tn' | 'tr' | 'tt' | 'uk' | 'ur' | 'uz' | 'zh'>;
}
interface Response<T=any> {
/**
* Contains all the hits matching the query
* https://www.algolia.com/doc/api-reference/api-methods/search/?language=javascript#response
*/
hits: T[];
/**
* Current page
* https://www.algolia.com/doc/api-reference/api-methods/search/?language=javascript#response
*/
page: number;
/**
* Number of total hits matching the query
* https://www.algolia.com/doc/api-reference/api-methods/search/?language=javascript#response
*/
nbHits: number;
/**
* Number of pages
* https://www.algolia.com/doc/api-reference/api-methods/search/?language=javascript#response
*/
nbPages: number;
/**
* Number of hits per pages
* https://www.algolia.com/doc/api-reference/api-methods/search/?language=javascript#response
*/
hitsPerPage: number;
/**
* Engine processing time (excluding network transfer)
* https://www.algolia.com/doc/api-reference/api-methods/search/?language=javascript#response
*/
processingTimeMS: number;
/**
* Query used to perform the search
* https://www.algolia.com/doc/api-reference/api-methods/search/?language=javascript#response
*/
query: string;
/**
* GET parameters used to perform the search
* https://www.algolia.com/doc/api-reference/api-methods/search/?language=javascript#response
*/
params: string;
facets?: {
[facetName: string]: { [facetValue: string]: number };
};
facets_stats?: {
[facetName: string]: {
avg: number,
max: number,
min: number,
sum: number,
};
};
/**
* The index name is only set when searching multiple indices.
* https://www.algolia.com/doc/api-reference/api-methods/multiple-queries/?language=javascript#response
*/
index?: string;
/**
* The cursor is only set when browsing the index.
* https://www.algolia.com/doc/api-reference/api-methods/browse/
*/
cursor?: string;
}
interface MultiResponse<T=any> {
results: Response<T>[];
}
}
declare function algoliasearch(
applicationId: string,
apiKey: string,
options?: algoliasearch.ClientOptions
): algoliasearch.Client;
export = algoliasearch;