coveo-search-ui
Version:
Coveo JavaScript Search Framework
133 lines (126 loc) • 7.06 kB
text/typescript
import { IEndpointCallerOptions } from '../rest/EndpointCaller';
import { IStringMap } from '../rest/GenericParam';
import { IQuery } from '../rest/Query';
import { IQueryResults } from '../rest/QueryResults';
import { IQueryResult } from '../rest/QueryResult';
import { IIndexFieldValue } from '../rest/FieldValue';
import { IListFieldValuesRequest, IListFieldValuesBatchRequest } from '../rest/ListFieldValuesRequest';
import { IFieldDescription } from '../rest/FieldDescription';
import { IExtension } from '../rest/Extension';
import { IEndpointError } from '../rest/EndpointError';
import { ITaggingRequest } from '../rest/TaggingRequest';
import { IQuerySuggestRequest, IQuerySuggestResponse } from '../rest/QuerySuggest';
import { IRatingRequest } from '../rest/RatingRequest';
import { ISubscriptionRequest, ISubscription } from '../rest/Subscription';
import { ISentryLog } from './SentryLog';
import { IFacetSearchRequest } from './Facet/FacetSearchRequest';
import { IFacetSearchResponse } from './Facet/FacetSearchResponse';
import { ExecutionPlan } from './Plan';
import { AccessToken } from './AccessToken';
import { AnalyticsInformation } from '../ui/Analytics/AnalyticsInformation';
/**
* The possible options when creating a {@link SearchEndpoint}
*/
export interface ISearchEndpointOptions extends IEndpointCallerOptions {
/**
* The uri for the search endpoint. eg: cloudplatform.coveo.com/rest/search
*/
restUri?: string;
version?: string;
/**
* Query string arguments to add to every request to the search endpoint.<br/>
* eg : {'foo':'bar', 'a':'b'}
*/
queryStringArguments?: IStringMap<any>;
/**
* Specifies that the request (and the Coveo Search API) does not need any kind of authentication.<br/>
* This flag is only needed for specific setups when your requests are being blocked by your browser. If your queries are executing correctly, you do not need to bother.<br/>
* Setting this flag will prevent the withCredentials option to be set on the XMLHttpRequest, allowing performing cross-domain requests on a server that returns * in the Access-Control-Allow-Origin HTTP header.
*/
anonymous?: boolean;
/**
* This allows using an OAuth2 or a search token to authenticate against the Search API.
*/
accessToken?: string;
/**
* Specifies a function that, when called, will arrange for a new search token to be generated.<br/>
* It is expected to return a Promise that should be resolved with the new token once it's available.
*/
renewAccessToken?: () => Promise<string>;
/**
* This is the username part of the credentials used to authenticate with the Search API using Basic Authentication.<br/>
* This option should only be used for development purposes. Including secret credentials in an HTML page that is sent to a client browser is not secure.
*/
username?: string;
/**
* This is the password part of the credentials used to authenticate with the REST API.<br/>
* This option should only be used for development purposes. Including secret credentials in an HTML page that is sent to a client browser is not secure.
*/
password?: string;
/**
* The uri for the Coveo search alerts service. If not specified, will automatically resolve using the restUri otherwise
*/
searchAlertsUri?: string;
isGuestUser?: boolean;
}
/**
* Available options when calling against the {@link SearchEndpoint}
*/
export interface IEndpointCallOptions {
authentication?: string[];
analyticsInformation?: AnalyticsInformation;
}
/**
* The `IGetDocumentOptions` interface describes the available options when calling against a
* [`SearchEndpoint`]{@link SearchEndpoint} to get an item.
*/
export interface IGetDocumentOptions extends IEndpointCallOptions {}
/**
* The `IViewAsHtmlOptions` interface describes the available options when calling against a
* [`SearchEndpoint`]{@link SearchEndpoint} to view an item as an HTMLElement (think: quickview).
*/
export interface IViewAsHtmlOptions extends IEndpointCallOptions {
query?: string;
queryObject?: IQuery;
requestedOutputSize?: number;
contentType?: string;
}
export interface IExchangeHandshakeTokenOptions {
handshakeToken: string;
accessToken?: string;
}
export interface ISearchEndpoint {
accessToken: AccessToken;
options?: ISearchEndpointOptions;
getBaseUri(): string;
getBaseAlertsUri(): string;
getAuthenticationProviderUri(provider: string, returnUri: string, message: string): string;
exchangeHandshakeToken(options: IExchangeHandshakeTokenOptions): Promise<string>;
isJsonp(): boolean;
search(query: IQuery, callOptions?: IEndpointCallOptions): Promise<IQueryResults>;
fetchBinary(query: IQuery, callOptions?: IEndpointCallOptions): Promise<ArrayBuffer>;
plan(query: IQuery, callOptions?: IEndpointCallOptions): Promise<ExecutionPlan>;
/** @deprecated getExportToExcelLink does not factor in all query parameters (e.g. dynamic facets) due to GET request url length limitations.
* Please use `fetchBinary` instead to ensure all query parameters are used.
* */
getExportToExcelLink(query: IQuery, numberOfResults: number, callOptions?: IEndpointCallOptions): string;
getRawDataStream(documentUniqueId: string, dataStreamType: string, callOptions?: IViewAsHtmlOptions): Promise<ArrayBuffer>;
getDocument(documentUniqueID: string, callOptions?: IGetDocumentOptions): Promise<IQueryResult>;
getDocumentText(documentUniqueID: string, callOptions?: IEndpointCallOptions): Promise<string>;
getDocumentHtml(documentUniqueID: string, callOptions?: IViewAsHtmlOptions): Promise<HTMLDocument>;
getViewAsHtmlUri(documentUniqueID: string, callOptions?: IViewAsHtmlOptions): string;
getViewAsDatastreamUri(documentUniqueID: string, dataStreamType: string, callOptions?: IViewAsHtmlOptions): string;
listFieldValuesBatch(request: IListFieldValuesBatchRequest, callOptions?: IEndpointCallOptions): Promise<IIndexFieldValue[][]>;
listFieldValues(request: IListFieldValuesRequest, callOptions?: IEndpointCallOptions): Promise<IIndexFieldValue[]>;
listFields(callOptions?: IEndpointCallOptions): Promise<IFieldDescription[]>;
extensions(callOptions?: IEndpointCallOptions): Promise<IExtension[]> | Promise<IEndpointError>;
tagDocument(taggingRequest: ITaggingRequest, callOptions?: IEndpointCallOptions): Promise<boolean>;
getQuerySuggest(request: IQuerySuggestRequest, callOptions?: IEndpointCallOptions): Promise<IQuerySuggestResponse>;
facetSearch(request: IFacetSearchRequest, callOptions?: IEndpointCallOptions): Promise<IFacetSearchResponse>;
rateDocument(ratingRequest: IRatingRequest, callOptions?: IEndpointCallOptions): Promise<boolean>;
follow(request: ISubscriptionRequest): Promise<ISubscription>;
listSubscriptions(page?: number, callOptions?: IEndpointCallOptions): Promise<ISubscription[]>;
updateSubscription(subscription: ISubscription): Promise<ISubscription>;
deleteSubscription(subscription: ISubscription): Promise<ISubscription>;
logError(sentryLog: ISentryLog): Promise<boolean>;
}