/* tslint:disable */
/* eslint-disable */
/**
 * Indexea OpenAPI
 * 这是 Indexea 搜索服务平台的 OpenAPI，用于描述平台的所有接口信息，你可以通过这个页面来了解和在线验证平台的所有接口信息。  ### Errors  本 API 使用标准的 HTTP 状态码来指示操作成功或者失败，如果失败将会在 body 中以 JSON 格式提供详细的错误信息，如下所示：  ``` {   \"error\": 404,   \"message\": \"page not found\" } ``` 
 *
 * The version of the OpenAPI document: 1.0.0
 * Contact: indexea.com@gmail.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


import * as runtime from '../runtime';
import type {
  CrawlerLogs,
  CrawlerTask,
  IndexBean,
  IndexForm,
  IndexRebuildForm,
  IndexSettings,
  IndexTask,
  IndexTemplate,
  IndexTemplates,
  SynonymsBean,
} from '../models';
import {
    CrawlerLogsFromJSON,
    CrawlerLogsToJSON,
    CrawlerTaskFromJSON,
    CrawlerTaskToJSON,
    IndexBeanFromJSON,
    IndexBeanToJSON,
    IndexFormFromJSON,
    IndexFormToJSON,
    IndexRebuildFormFromJSON,
    IndexRebuildFormToJSON,
    IndexSettingsFromJSON,
    IndexSettingsToJSON,
    IndexTaskFromJSON,
    IndexTaskToJSON,
    IndexTemplateFromJSON,
    IndexTemplateToJSON,
    IndexTemplatesFromJSON,
    IndexTemplatesToJSON,
    SynonymsBeanFromJSON,
    SynonymsBeanToJSON,
} from '../models';

export interface IndexCleanupRequest {
    app: string;
    index: number;
    vcode: string;
}

export interface IndexCopyToRequest {
    app: string;
    index: number;
    name: string;
    fields: boolean;
    queries: boolean;
    records: boolean;
}

export interface IndexCreateRequest {
    app: string;
    indexForm: IndexForm;
}

export interface IndexCreateTemplateRequest {
    indexTemplate: IndexTemplate;
}

export interface IndexDeleteRequest {
    app: string;
    index: number;
    vcode: string;
}

export interface IndexDeleteCrawlerTaskRequest {
    app: string;
    index: number;
}

export interface IndexDeleteTemplateRequest {
    id: number;
}

export interface IndexExportRequest {
    app: string;
    index: number;
    format: IndexExportFormatEnum;
}

export interface IndexFlushRequest {
    app: string;
    index: number;
}

export interface IndexFlushSettingsRequest {
    app: string;
    index: number;
    type: string;
    password: string;
}

export interface IndexGetRequest {
    app: string;
    index: number;
}

export interface IndexGetCrawlerLogsRequest {
    app: string;
    index: number;
    from?: number;
    size?: number;
}

export interface IndexGetCrawlerTaskRequest {
    app: string;
    index: number;
}

export interface IndexGetFilterSettingsRequest {
    app: string;
    index: number;
    type: IndexGetFilterSettingsTypeEnum;
}

export interface IndexGetSettingsRequest {
    app: string;
    index: number;
    type: string;
}

export interface IndexListRequest {
    app: string;
    stat?: boolean;
}

export interface IndexListTemplatesRequest {
    from?: number;
    size?: number;
}

export interface IndexPrefetchRequest {
    type: string;
    url: string;
}

export interface IndexRebuildRequest {
    app: string;
    index: number;
    indexRebuildForm: IndexRebuildForm;
}

export interface IndexRebuildTaskRequest {
    app: string;
    index: number;
    taskId: number;
}

export interface IndexStatLogsRequest {
    app: string;
    index: number;
    interval: IndexStatLogsIntervalEnum;
    startDate?: Date;
    endDate?: Date;
}

export interface IndexSubmitCrawlerTaskRequest {
    app: string;
    index: number;
    crawlerTask: CrawlerTask;
}

export interface IndexTasksRequest {
    app: string;
}

export interface IndexUpdateRequest {
    app: string;
    index: number;
    indexForm: IndexForm;
}

export interface IndexUpdateSettingsRequest {
    app: string;
    index: number;
    type: string;
    body?: string;
}

export interface IndexUpdateTemplateRequest {
    indexTemplate: IndexTemplate;
}

export interface SynonymsAddRequest {
    app: string;
    index: number;
    synonymsBean: SynonymsBean;
}

export interface SynonymsDeleteRequest {
    app: string;
    index: number;
    id: number;
}

export interface SynonymsEnableRequest {
    app: string;
    index: number;
    id: number;
    enable?: boolean;
    all?: boolean;
}

export interface SynonymsFlushRequest {
    app: string;
    index: number;
    password: string;
}

export interface SynonymsImportRequest {
    app: string;
    index: number;
    action: number;
    synonymsBean: Array<SynonymsBean>;
}

export interface SynonymsListRequest {
    app: string;
    index: number;
    type?: number;
    from?: number;
    size?: number;
}

export interface SynonymsUpdateRequest {
    app: string;
    index: number;
    synonymsBean: SynonymsBean;
}

/**
 * 
 */
export class IndicesApi extends runtime.BaseAPI {

    /**
     * 清空索引记录
     */
    async indexCleanupRaw(requestParameters: IndexCleanupRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<object>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexCleanup.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexCleanup.');
        }

        if (requestParameters.vcode === null || requestParameters.vcode === undefined) {
            throw new runtime.RequiredError('vcode','Required parameter requestParameters.vcode was null or undefined when calling indexCleanup.');
        }

        const queryParameters: any = {};

        if (requestParameters.vcode !== undefined) {
            queryParameters['vcode'] = requestParameters.vcode;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/cleanup`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * 清空索引记录
     */
    async indexCleanup(requestParameters: IndexCleanupRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<object> {
        const response = await this.indexCleanupRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 导出索引数据
     */
    async indexCopyToRaw(requestParameters: IndexCopyToRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IndexBean>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexCopyTo.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexCopyTo.');
        }

        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling indexCopyTo.');
        }

        if (requestParameters.fields === null || requestParameters.fields === undefined) {
            throw new runtime.RequiredError('fields','Required parameter requestParameters.fields was null or undefined when calling indexCopyTo.');
        }

        if (requestParameters.queries === null || requestParameters.queries === undefined) {
            throw new runtime.RequiredError('queries','Required parameter requestParameters.queries was null or undefined when calling indexCopyTo.');
        }

        if (requestParameters.records === null || requestParameters.records === undefined) {
            throw new runtime.RequiredError('records','Required parameter requestParameters.records was null or undefined when calling indexCopyTo.');
        }

        const queryParameters: any = {};

        if (requestParameters.name !== undefined) {
            queryParameters['name'] = requestParameters.name;
        }

        if (requestParameters.fields !== undefined) {
            queryParameters['fields'] = requestParameters.fields;
        }

        if (requestParameters.queries !== undefined) {
            queryParameters['queries'] = requestParameters.queries;
        }

        if (requestParameters.records !== undefined) {
            queryParameters['records'] = requestParameters.records;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/copyto`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => IndexBeanFromJSON(jsonValue));
    }

    /**
     * 导出索引数据
     */
    async indexCopyTo(requestParameters: IndexCopyToRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IndexBean> {
        const response = await this.indexCopyToRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 创建索引
     */
    async indexCreateRaw(requestParameters: IndexCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IndexBean>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexCreate.');
        }

        if (requestParameters.indexForm === null || requestParameters.indexForm === undefined) {
            throw new runtime.RequiredError('indexForm','Required parameter requestParameters.indexForm was null or undefined when calling indexCreate.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: IndexFormToJSON(requestParameters.indexForm),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => IndexBeanFromJSON(jsonValue));
    }

    /**
     * 创建索引
     */
    async indexCreate(requestParameters: IndexCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IndexBean> {
        const response = await this.indexCreateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 创建索引模板
     */
    async indexCreateTemplateRaw(requestParameters: IndexCreateTemplateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IndexTemplate>> {
        if (requestParameters.indexTemplate === null || requestParameters.indexTemplate === undefined) {
            throw new runtime.RequiredError('indexTemplate','Required parameter requestParameters.indexTemplate was null or undefined when calling indexCreateTemplate.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/templates`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: IndexTemplateToJSON(requestParameters.indexTemplate),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => IndexTemplateFromJSON(jsonValue));
    }

    /**
     * 创建索引模板
     */
    async indexCreateTemplate(requestParameters: IndexCreateTemplateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IndexTemplate> {
        const response = await this.indexCreateTemplateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 删除索引
     */
    async indexDeleteRaw(requestParameters: IndexDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexDelete.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexDelete.');
        }

        if (requestParameters.vcode === null || requestParameters.vcode === undefined) {
            throw new runtime.RequiredError('vcode','Required parameter requestParameters.vcode was null or undefined when calling indexDelete.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const consumes: runtime.Consume[] = [
            { contentType: 'application/x-www-form-urlencoded' },
        ];
        // @ts-ignore: canConsumeForm may be unused
        const canConsumeForm = runtime.canConsumeForm(consumes);

        let formParams: { append(param: string, value: any): any };
        let useForm = false;
        if (useForm) {
            formParams = new FormData();
        } else {
            formParams = new URLSearchParams();
        }

        if (requestParameters.vcode !== undefined) {
            formParams.append('vcode', requestParameters.vcode as any);
        }

        const response = await this.request({
            path: `/indices/{app}/{index}`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
            body: formParams,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 删除索引
     */
    async indexDelete(requestParameters: IndexDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.indexDeleteRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 删除索引的数据爬取任务
     */
    async indexDeleteCrawlerTaskRaw(requestParameters: IndexDeleteCrawlerTaskRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexDeleteCrawlerTask.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexDeleteCrawlerTask.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/crawler-settings`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 删除索引的数据爬取任务
     */
    async indexDeleteCrawlerTask(requestParameters: IndexDeleteCrawlerTaskRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.indexDeleteCrawlerTaskRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 删除索引模板
     */
    async indexDeleteTemplateRaw(requestParameters: IndexDeleteTemplateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.id === null || requestParameters.id === undefined) {
            throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling indexDeleteTemplate.');
        }

        const queryParameters: any = {};

        if (requestParameters.id !== undefined) {
            queryParameters['id'] = requestParameters.id;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/templates`,
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 删除索引模板
     */
    async indexDeleteTemplate(requestParameters: IndexDeleteTemplateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.indexDeleteTemplateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 导出索引数据
     */
    async indexExportRaw(requestParameters: IndexExportRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexExport.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexExport.');
        }

        if (requestParameters.format === null || requestParameters.format === undefined) {
            throw new runtime.RequiredError('format','Required parameter requestParameters.format was null or undefined when calling indexExport.');
        }

        const queryParameters: any = {};

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/export`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 导出索引数据
     */
    async indexExport(requestParameters: IndexExportRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.indexExportRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 刷新索引数据，主要用于将内存中的索引数据写入磁盘
     */
    async indexFlushRaw(requestParameters: IndexFlushRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexFlush.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexFlush.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/flush`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 刷新索引数据，主要用于将内存中的索引数据写入磁盘
     */
    async indexFlush(requestParameters: IndexFlushRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.indexFlushRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 写入设置信息到索引
     */
    async indexFlushSettingsRaw(requestParameters: IndexFlushSettingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<object>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexFlushSettings.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexFlushSettings.');
        }

        if (requestParameters.type === null || requestParameters.type === undefined) {
            throw new runtime.RequiredError('type','Required parameter requestParameters.type was null or undefined when calling indexFlushSettings.');
        }

        if (requestParameters.password === null || requestParameters.password === undefined) {
            throw new runtime.RequiredError('password','Required parameter requestParameters.password was null or undefined when calling indexFlushSettings.');
        }

        const queryParameters: any = {};

        if (requestParameters.type !== undefined) {
            queryParameters['type'] = requestParameters.type;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const consumes: runtime.Consume[] = [
            { contentType: 'application/x-www-form-urlencoded' },
        ];
        // @ts-ignore: canConsumeForm may be unused
        const canConsumeForm = runtime.canConsumeForm(consumes);

        let formParams: { append(param: string, value: any): any };
        let useForm = false;
        if (useForm) {
            formParams = new FormData();
        } else {
            formParams = new URLSearchParams();
        }

        if (requestParameters.password !== undefined) {
            formParams.append('password', requestParameters.password as any);
        }

        const response = await this.request({
            path: `/indices/{app}/{index}/settings`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: formParams,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * 写入设置信息到索引
     */
    async indexFlushSettings(requestParameters: IndexFlushSettingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<object> {
        const response = await this.indexFlushSettingsRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 获取单个索引详情
     */
    async indexGetRaw(requestParameters: IndexGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IndexBean>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexGet.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexGet.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => IndexBeanFromJSON(jsonValue));
    }

    /**
     * 获取单个索引详情
     */
    async indexGet(requestParameters: IndexGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IndexBean> {
        const response = await this.indexGetRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 获取索引的爬虫任务的爬取日志
     */
    async indexGetCrawlerLogsRaw(requestParameters: IndexGetCrawlerLogsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CrawlerLogs>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexGetCrawlerLogs.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexGetCrawlerLogs.');
        }

        const queryParameters: any = {};

        if (requestParameters.from !== undefined) {
            queryParameters['from'] = requestParameters.from;
        }

        if (requestParameters.size !== undefined) {
            queryParameters['size'] = requestParameters.size;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/crawler-logs`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => CrawlerLogsFromJSON(jsonValue));
    }

    /**
     * 获取索引的爬虫任务的爬取日志
     */
    async indexGetCrawlerLogs(requestParameters: IndexGetCrawlerLogsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CrawlerLogs> {
        const response = await this.indexGetCrawlerLogsRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 获取索引的爬虫任务设定
     */
    async indexGetCrawlerTaskRaw(requestParameters: IndexGetCrawlerTaskRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CrawlerTask>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexGetCrawlerTask.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexGetCrawlerTask.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/crawler-settings`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => CrawlerTaskFromJSON(jsonValue));
    }

    /**
     * 获取索引的爬虫任务设定
     */
    async indexGetCrawlerTask(requestParameters: IndexGetCrawlerTaskRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CrawlerTask> {
        const response = await this.indexGetCrawlerTaskRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 获取索引设置信息
     */
    async indexGetFilterSettingsRaw(requestParameters: IndexGetFilterSettingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<string>>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexGetFilterSettings.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexGetFilterSettings.');
        }

        if (requestParameters.type === null || requestParameters.type === undefined) {
            throw new runtime.RequiredError('type','Required parameter requestParameters.type was null or undefined when calling indexGetFilterSettings.');
        }

        const queryParameters: any = {};

        if (requestParameters.type !== undefined) {
            queryParameters['type'] = requestParameters.type;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/filter-settings`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * 获取索引设置信息
     */
    async indexGetFilterSettings(requestParameters: IndexGetFilterSettingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<string>> {
        const response = await this.indexGetFilterSettingsRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 获取索引设置信息
     */
    async indexGetSettingsRaw(requestParameters: IndexGetSettingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IndexSettings>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexGetSettings.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexGetSettings.');
        }

        if (requestParameters.type === null || requestParameters.type === undefined) {
            throw new runtime.RequiredError('type','Required parameter requestParameters.type was null or undefined when calling indexGetSettings.');
        }

        const queryParameters: any = {};

        if (requestParameters.type !== undefined) {
            queryParameters['type'] = requestParameters.type;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/settings`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => IndexSettingsFromJSON(jsonValue));
    }

    /**
     * 获取索引设置信息
     */
    async indexGetSettings(requestParameters: IndexGetSettingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IndexSettings> {
        const response = await this.indexGetSettingsRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 获取应用的索引列表
     */
    async indexListRaw(requestParameters: IndexListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<IndexBean>>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexList.');
        }

        const queryParameters: any = {};

        if (requestParameters.stat !== undefined) {
            queryParameters['stat'] = requestParameters.stat;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(IndexBeanFromJSON));
    }

    /**
     * 获取应用的索引列表
     */
    async indexList(requestParameters: IndexListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<IndexBean>> {
        const response = await this.indexListRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 获取所有可用的索引模板
     */
    async indexListTemplatesRaw(requestParameters: IndexListTemplatesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IndexTemplates>> {
        const queryParameters: any = {};

        if (requestParameters.from !== undefined) {
            queryParameters['from'] = requestParameters.from;
        }

        if (requestParameters.size !== undefined) {
            queryParameters['size'] = requestParameters.size;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/templates`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => IndexTemplatesFromJSON(jsonValue));
    }

    /**
     * 获取所有可用的索引模板
     */
    async indexListTemplates(requestParameters: IndexListTemplatesRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IndexTemplates> {
        const response = await this.indexListTemplatesRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 获取目标网站内容预览
     */
    async indexPrefetchRaw(requestParameters: IndexPrefetchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<object>>> {
        if (requestParameters.type === null || requestParameters.type === undefined) {
            throw new runtime.RequiredError('type','Required parameter requestParameters.type was null or undefined when calling indexPrefetch.');
        }

        if (requestParameters.url === null || requestParameters.url === undefined) {
            throw new runtime.RequiredError('url','Required parameter requestParameters.url was null or undefined when calling indexPrefetch.');
        }

        const queryParameters: any = {};

        if (requestParameters.type !== undefined) {
            queryParameters['type'] = requestParameters.type;
        }

        if (requestParameters.url !== undefined) {
            queryParameters['url'] = requestParameters.url;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/crawler`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * 获取目标网站内容预览
     */
    async indexPrefetch(requestParameters: IndexPrefetchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<object>> {
        const response = await this.indexPrefetchRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 重建索引数据
     */
    async indexRebuildRaw(requestParameters: IndexRebuildRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IndexTask>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexRebuild.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexRebuild.');
        }

        if (requestParameters.indexRebuildForm === null || requestParameters.indexRebuildForm === undefined) {
            throw new runtime.RequiredError('indexRebuildForm','Required parameter requestParameters.indexRebuildForm was null or undefined when calling indexRebuild.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/rebuild`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: IndexRebuildFormToJSON(requestParameters.indexRebuildForm),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => IndexTaskFromJSON(jsonValue));
    }

    /**
     * 重建索引数据
     */
    async indexRebuild(requestParameters: IndexRebuildRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IndexTask> {
        const response = await this.indexRebuildRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 获取重建索引任务的详情
     */
    async indexRebuildTaskRaw(requestParameters: IndexRebuildTaskRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IndexTask>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexRebuildTask.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexRebuildTask.');
        }

        if (requestParameters.taskId === null || requestParameters.taskId === undefined) {
            throw new runtime.RequiredError('taskId','Required parameter requestParameters.taskId was null or undefined when calling indexRebuildTask.');
        }

        const queryParameters: any = {};

        if (requestParameters.taskId !== undefined) {
            queryParameters['task_id'] = requestParameters.taskId;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/rebuild`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => IndexTaskFromJSON(jsonValue));
    }

    /**
     * 获取重建索引任务的详情
     */
    async indexRebuildTask(requestParameters: IndexRebuildTaskRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IndexTask> {
        const response = await this.indexRebuildTaskRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 获取日志索引的统计信息（主要是每日的日志数量）
     */
    async indexStatLogsRaw(requestParameters: IndexStatLogsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<object>>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexStatLogs.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexStatLogs.');
        }

        if (requestParameters.interval === null || requestParameters.interval === undefined) {
            throw new runtime.RequiredError('interval','Required parameter requestParameters.interval was null or undefined when calling indexStatLogs.');
        }

        const queryParameters: any = {};

        if (requestParameters.startDate !== undefined) {
            queryParameters['start_date'] = (requestParameters.startDate as any).toISOString().substr(0,10);
        }

        if (requestParameters.endDate !== undefined) {
            queryParameters['end_date'] = (requestParameters.endDate as any).toISOString().substr(0,10);
        }

        if (requestParameters.interval !== undefined) {
            queryParameters['interval'] = requestParameters.interval;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/stats`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * 获取日志索引的统计信息（主要是每日的日志数量）
     */
    async indexStatLogs(requestParameters: IndexStatLogsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<object>> {
        const response = await this.indexStatLogsRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 提交或者更新索引的数据爬取任务
     */
    async indexSubmitCrawlerTaskRaw(requestParameters: IndexSubmitCrawlerTaskRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CrawlerTask>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexSubmitCrawlerTask.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexSubmitCrawlerTask.');
        }

        if (requestParameters.crawlerTask === null || requestParameters.crawlerTask === undefined) {
            throw new runtime.RequiredError('crawlerTask','Required parameter requestParameters.crawlerTask was null or undefined when calling indexSubmitCrawlerTask.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/crawler-settings`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: CrawlerTaskToJSON(requestParameters.crawlerTask),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => CrawlerTaskFromJSON(jsonValue));
    }

    /**
     * 提交或者更新索引的数据爬取任务
     */
    async indexSubmitCrawlerTask(requestParameters: IndexSubmitCrawlerTaskRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CrawlerTask> {
        const response = await this.indexSubmitCrawlerTaskRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 获取该索引在后台的任务列表
     */
    async indexTasksRaw(requestParameters: IndexTasksRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: IndexTask; }>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexTasks.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/tasks`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => runtime.mapValues(jsonValue, IndexTaskFromJSON));
    }

    /**
     * 获取该索引在后台的任务列表
     */
    async indexTasks(requestParameters: IndexTasksRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: IndexTask; }> {
        const response = await this.indexTasksRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 修改索引
     */
    async indexUpdateRaw(requestParameters: IndexUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IndexBean>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexUpdate.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexUpdate.');
        }

        if (requestParameters.indexForm === null || requestParameters.indexForm === undefined) {
            throw new runtime.RequiredError('indexForm','Required parameter requestParameters.indexForm was null or undefined when calling indexUpdate.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: IndexFormToJSON(requestParameters.indexForm),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => IndexBeanFromJSON(jsonValue));
    }

    /**
     * 修改索引
     */
    async indexUpdate(requestParameters: IndexUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IndexBean> {
        const response = await this.indexUpdateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 更新索引设置信息
     */
    async indexUpdateSettingsRaw(requestParameters: IndexUpdateSettingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling indexUpdateSettings.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling indexUpdateSettings.');
        }

        if (requestParameters.type === null || requestParameters.type === undefined) {
            throw new runtime.RequiredError('type','Required parameter requestParameters.type was null or undefined when calling indexUpdateSettings.');
        }

        const queryParameters: any = {};

        if (requestParameters.type !== undefined) {
            queryParameters['type'] = requestParameters.type;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'text/plain';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/settings`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters.body as any,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 更新索引设置信息
     */
    async indexUpdateSettings(requestParameters: IndexUpdateSettingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.indexUpdateSettingsRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 修改索引模板
     */
    async indexUpdateTemplateRaw(requestParameters: IndexUpdateTemplateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IndexTemplate>> {
        if (requestParameters.indexTemplate === null || requestParameters.indexTemplate === undefined) {
            throw new runtime.RequiredError('indexTemplate','Required parameter requestParameters.indexTemplate was null or undefined when calling indexUpdateTemplate.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/templates`,
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: IndexTemplateToJSON(requestParameters.indexTemplate),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => IndexTemplateFromJSON(jsonValue));
    }

    /**
     * 修改索引模板
     */
    async indexUpdateTemplate(requestParameters: IndexUpdateTemplateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IndexTemplate> {
        const response = await this.indexUpdateTemplateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 添加同义词
     */
    async synonymsAddRaw(requestParameters: SynonymsAddRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SynonymsBean>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling synonymsAdd.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling synonymsAdd.');
        }

        if (requestParameters.synonymsBean === null || requestParameters.synonymsBean === undefined) {
            throw new runtime.RequiredError('synonymsBean','Required parameter requestParameters.synonymsBean was null or undefined when calling synonymsAdd.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/synonyms`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: SynonymsBeanToJSON(requestParameters.synonymsBean),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => SynonymsBeanFromJSON(jsonValue));
    }

    /**
     * 添加同义词
     */
    async synonymsAdd(requestParameters: SynonymsAddRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SynonymsBean> {
        const response = await this.synonymsAddRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 删除同义词
     */
    async synonymsDeleteRaw(requestParameters: SynonymsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling synonymsDelete.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling synonymsDelete.');
        }

        if (requestParameters.id === null || requestParameters.id === undefined) {
            throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling synonymsDelete.');
        }

        const queryParameters: any = {};

        if (requestParameters.id !== undefined) {
            queryParameters['id'] = requestParameters.id;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/synonyms`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 删除同义词
     */
    async synonymsDelete(requestParameters: SynonymsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.synonymsDeleteRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 启用禁用同义词
     */
    async synonymsEnableRaw(requestParameters: SynonymsEnableRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling synonymsEnable.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling synonymsEnable.');
        }

        if (requestParameters.id === null || requestParameters.id === undefined) {
            throw new runtime.RequiredError('id','Required parameter requestParameters.id was null or undefined when calling synonymsEnable.');
        }

        const queryParameters: any = {};

        if (requestParameters.id !== undefined) {
            queryParameters['id'] = requestParameters.id;
        }

        if (requestParameters.enable !== undefined) {
            queryParameters['enable'] = requestParameters.enable;
        }

        if (requestParameters.all !== undefined) {
            queryParameters['all'] = requestParameters.all;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/synonyms`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'PATCH',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 启用禁用同义词
     */
    async synonymsEnable(requestParameters: SynonymsEnableRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.synonymsEnableRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 将同义词更新到搜索引擎的同义词表
     */
    async synonymsFlushRaw(requestParameters: SynonymsFlushRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<object>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling synonymsFlush.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling synonymsFlush.');
        }

        if (requestParameters.password === null || requestParameters.password === undefined) {
            throw new runtime.RequiredError('password','Required parameter requestParameters.password was null or undefined when calling synonymsFlush.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const consumes: runtime.Consume[] = [
            { contentType: 'application/x-www-form-urlencoded' },
        ];
        // @ts-ignore: canConsumeForm may be unused
        const canConsumeForm = runtime.canConsumeForm(consumes);

        let formParams: { append(param: string, value: any): any };
        let useForm = false;
        if (useForm) {
            formParams = new FormData();
        } else {
            formParams = new URLSearchParams();
        }

        if (requestParameters.password !== undefined) {
            formParams.append('password', requestParameters.password as any);
        }

        const response = await this.request({
            path: `/indices/{app}/{index}/synonyms-flush`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: formParams,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * 将同义词更新到搜索引擎的同义词表
     */
    async synonymsFlush(requestParameters: SynonymsFlushRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<object> {
        const response = await this.synonymsFlushRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 导入同义词
     */
    async synonymsImportRaw(requestParameters: SynonymsImportRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<SynonymsBean>>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling synonymsImport.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling synonymsImport.');
        }

        if (requestParameters.action === null || requestParameters.action === undefined) {
            throw new runtime.RequiredError('action','Required parameter requestParameters.action was null or undefined when calling synonymsImport.');
        }

        if (requestParameters.synonymsBean === null || requestParameters.synonymsBean === undefined) {
            throw new runtime.RequiredError('synonymsBean','Required parameter requestParameters.synonymsBean was null or undefined when calling synonymsImport.');
        }

        const queryParameters: any = {};

        if (requestParameters.action !== undefined) {
            queryParameters['action'] = requestParameters.action;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/synonyms-import`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters.synonymsBean.map(SynonymsBeanToJSON),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(SynonymsBeanFromJSON));
    }

    /**
     * 导入同义词
     */
    async synonymsImport(requestParameters: SynonymsImportRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<SynonymsBean>> {
        const response = await this.synonymsImportRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 获取索引的所有同义词
     */
    async synonymsListRaw(requestParameters: SynonymsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<SynonymsBean>>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling synonymsList.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling synonymsList.');
        }

        const queryParameters: any = {};

        if (requestParameters.type !== undefined) {
            queryParameters['type'] = requestParameters.type;
        }

        if (requestParameters.from !== undefined) {
            queryParameters['from'] = requestParameters.from;
        }

        if (requestParameters.size !== undefined) {
            queryParameters['size'] = requestParameters.size;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/synonyms`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(SynonymsBeanFromJSON));
    }

    /**
     * 获取索引的所有同义词
     */
    async synonymsList(requestParameters: SynonymsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<SynonymsBean>> {
        const response = await this.synonymsListRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 修改同义词
     */
    async synonymsUpdateRaw(requestParameters: SynonymsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<SynonymsBean>> {
        if (requestParameters.app === null || requestParameters.app === undefined) {
            throw new runtime.RequiredError('app','Required parameter requestParameters.app was null or undefined when calling synonymsUpdate.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling synonymsUpdate.');
        }

        if (requestParameters.synonymsBean === null || requestParameters.synonymsBean === undefined) {
            throw new runtime.RequiredError('synonymsBean','Required parameter requestParameters.synonymsBean was null or undefined when calling synonymsUpdate.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/indices/{app}/{index}/synonyms`.replace(`{${"app"}}`, encodeURIComponent(String(requestParameters.app))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: SynonymsBeanToJSON(requestParameters.synonymsBean),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => SynonymsBeanFromJSON(jsonValue));
    }

    /**
     * 修改同义词
     */
    async synonymsUpdate(requestParameters: SynonymsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<SynonymsBean> {
        const response = await this.synonymsUpdateRaw(requestParameters, initOverrides);
        return await response.value();
    }

}

/**
 * @export
 */
export const IndexExportFormatEnum = {
    Json: 'json',
    Csv: 'csv',
    Excel: 'excel'
} as const;
export type IndexExportFormatEnum = typeof IndexExportFormatEnum[keyof typeof IndexExportFormatEnum];
/**
 * @export
 */
export const IndexGetFilterSettingsTypeEnum = {
    Stopwords: 'stopwords',
    Synonyms: 'synonyms'
} as const;
export type IndexGetFilterSettingsTypeEnum = typeof IndexGetFilterSettingsTypeEnum[keyof typeof IndexGetFilterSettingsTypeEnum];
/**
 * @export
 */
export const IndexStatLogsIntervalEnum = {
    Day: 'day',
    Week: 'week',
    Month: 'month',
    Quarter: 'quarter',
    Year: 'year'
} as const;
export type IndexStatLogsIntervalEnum = typeof IndexStatLogsIntervalEnum[keyof typeof IndexStatLogsIntervalEnum];
