/* tslint:disable */
/* eslint-disable */
/**
 * document-converter
 * Конвертация документов
 *
 * The version of the OpenAPI document: 1.0.0
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


import { Configuration } from './configuration';
import globalAxios, { AxiosPromise, AxiosInstance } from 'axios';
// Some imports not used depending on template conditions
// @ts-ignore
import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from './common';
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from './base';

/**
 * Список полей для получения из документов
 * @export
 * @interface Column
 */
export interface Column {
    /**
     * Название поля/столбца в ответе
     * @type {string}
     * @memberof Column
     */
    label: string;
    /**
     * Ключ поля в документах коллекции
     * @type {string}
     * @memberof Column
     */
    name: string;
    /**
     * Дополнительные ключи поля в документах коллекции
     * @type {Array<string>}
     * @memberof Column
     */
    altNames?: Array<string>;
    /**
     * Тип колонки для конвертации её значений
     * @type {string}
     * @memberof Column
     */
    type?: ColumnTypeEnum;
    /**
     * Дополнительные параметры для конвертации значений колонки
     * @type {{ [key: string]: object; }}
     * @memberof Column
     */
    typeParams?: { [key: string]: object; };
}

/**
    * @export
    * @enum {string}
    */
export enum ColumnTypeEnum {
    Date = 'DATE',
    Boolean = 'BOOLEAN',
    Dictionary = 'DICTIONARY'
}

/**
 * 
 * @export
 * @interface ConvertDocumentsRequestModel
 */
export interface ConvertDocumentsRequestModel {
    /**
     * Список полей для получения из документов
     * @type {Array<Column>}
     * @memberof ConvertDocumentsRequestModel
     */
    columns?: Array<Column>;
    /**
     * Тип расширения возвращаемого перечня документов (xml, csv, xls, xlsx)
     * @type {string}
     * @memberof ConvertDocumentsRequestModel
     */
    extension: ConvertDocumentsRequestModelExtensionEnum;
    /**
     * Список документов для конвертации
     * @type {Array<{ [key: string]: object; }>}
     * @memberof ConvertDocumentsRequestModel
     */
    documents?: Array<{ [key: string]: object; }>;
}

/**
    * @export
    * @enum {string}
    */
export enum ConvertDocumentsRequestModelExtensionEnum {
    Csv = 'csv',
    Json = 'json',
    Xml = 'xml',
    Xls = 'xls',
    Xlsx = 'xlsx'
}

/**
 * 
 * @export
 * @interface ConvertRequestModel
 */
export interface ConvertRequestModel {
    /**
     * Список полей для получения из документов
     * @type {Array<Column>}
     * @memberof ConvertRequestModel
     */
    columns?: Array<Column>;
    /**
     * Тип расширения возвращаемого перечня документов (xml, csv, xls, xlsx)
     * @type {string}
     * @memberof ConvertRequestModel
     */
    extension: ConvertRequestModelExtensionEnum;
}

/**
    * @export
    * @enum {string}
    */
export enum ConvertRequestModelExtensionEnum {
    Csv = 'csv',
    Json = 'json',
    Xml = 'xml',
    Xls = 'xls',
    Xlsx = 'xlsx'
}

/**
 * Vertex value of current node
 * @export
 * @interface Document
 */
export interface Document {
    /**
     * Уникальный идентификатор документа
     * @type {string}
     * @memberof Document
     */
    id: string;
    /**
     * Дата модификации как UnixTime (Может требоваться при обновлении)
     * @type {number}
     * @memberof Document
     */
    modified?: number;
    /**
     * Имя схемы документа
     * @type {string}
     * @memberof Document
     */
    schema?: string;
}
/**
 * 
 * @export
 * @interface LoadAndConvertRequestModel
 */
export interface LoadAndConvertRequestModel {
    /**
     * Список полей для получения из документов
     * @type {Array<Column>}
     * @memberof LoadAndConvertRequestModel
     */
    columns?: Array<Column>;
    /**
     * Тип расширения возвращаемого перечня документов (xml, csv, xls, xlsx)
     * @type {string}
     * @memberof LoadAndConvertRequestModel
     */
    extension: LoadAndConvertRequestModelExtensionEnum;
    /**
     * Условия для фильтрации вида param=search=\'Text\'
     * @type {string}
     * @memberof LoadAndConvertRequestModel
     */
    fulltext?: string;
    /**
     * ID объектов для возврата
     * @type {Array<string>}
     * @memberof LoadAndConvertRequestModel
     */
    ids: Array<string>;
    /**
     * Условия для фильтрации
     * @type {string}
     * @memberof LoadAndConvertRequestModel
     */
    query?: string;
    /**
     * Название коллекции для поиска документов
     * @type {string}
     * @memberof LoadAndConvertRequestModel
     */
    registryCode: string;
}

/**
    * @export
    * @enum {string}
    */
export enum LoadAndConvertRequestModelExtensionEnum {
    Csv = 'csv',
    Json = 'json',
    Xml = 'xml',
    Xls = 'xls',
    Xlsx = 'xlsx'
}

/**
 * 
 * @export
 * @interface LoadFromDRAndConvertRequestModel
 */
export interface LoadFromDRAndConvertRequestModel {
    /**
     * Список полей для получения из документов
     * @type {Array<Column>}
     * @memberof LoadFromDRAndConvertRequestModel
     */
    columns?: Array<Column>;
    /**
     * Тип расширения возвращаемого перечня документов (xml, csv, xls, xlsx)
     * @type {string}
     * @memberof LoadFromDRAndConvertRequestModel
     */
    extension: LoadFromDRAndConvertRequestModelExtensionEnum;
    /**
     * Условия для фильтрации вида param=search=\'Text\'
     * @type {string}
     * @memberof LoadFromDRAndConvertRequestModel
     */
    fulltext?: string;
    /**
     * Условия для фильтрации
     * @type {string}
     * @memberof LoadFromDRAndConvertRequestModel
     */
    query?: string;
    /**
     * Название коллекции для поиска документов
     * @type {string}
     * @memberof LoadFromDRAndConvertRequestModel
     */
    collectionName: string;
    /**
     * expand-ы для получения из document-registry
     * @type {string}
     * @memberof LoadFromDRAndConvertRequestModel
     */
    expand?: string;
    /**
     * Идентификатор услуги загружаемых заявлений
     * @type {string}
     * @memberof LoadFromDRAndConvertRequestModel
     */
    serviceId?: string;
    /**
     * Название фронтенда, совершающего вызов
     * @type {string}
     * @memberof LoadFromDRAndConvertRequestModel
     */
    frontend?: string;
}

/**
    * @export
    * @enum {string}
    */
export enum LoadFromDRAndConvertRequestModelExtensionEnum {
    Csv = 'csv',
    Json = 'json',
    Xml = 'xml',
    Xls = 'xls',
    Xlsx = 'xlsx'
}

/**
 * 
 * @export
 * @interface LoadResponse
 */
export interface LoadResponse {
    /**
     * Идентификатор выгрузки (название файла в S3)
     * @type {string}
     * @memberof LoadResponse
     */
    loadId?: string;
    /**
     * Завершена ли уже выгрузка
     * @type {boolean}
     * @memberof LoadResponse
     */
    isLoaded?: boolean;
}
/**
 * 
 * @export
 * @interface ModifyResponse
 */
export interface ModifyResponse {
    /**
     * true в случае успешной операции, false в противном
     * @type {boolean}
     * @memberof ModifyResponse
     */
    success: boolean;
    /**
     * Сообщение об ошибке или об успехе
     * @type {string}
     * @memberof ModifyResponse
     */
    message: string;
    /**
     * IDs Документов в рамках операции
     * @type {Array<string>}
     * @memberof ModifyResponse
     */
    objectIds?: Array<string>;
    /**
     * Дата модификации всех Документов в рамках операции
     * @type {number}
     * @memberof ModifyResponse
     */
    modified: number;
}
/**
 * 
 * @export
 * @interface ModifyResponseAllOf
 */
export interface ModifyResponseAllOf {
    /**
     * true в случае успешной операции, false в противном
     * @type {boolean}
     * @memberof ModifyResponseAllOf
     */
    success?: boolean;
    /**
     * Сообщение об ошибке или об успехе
     * @type {string}
     * @memberof ModifyResponseAllOf
     */
    message?: string;
    /**
     * IDs Документов в рамках операции
     * @type {Array<string>}
     * @memberof ModifyResponseAllOf
     */
    objectIds?: Array<string>;
    /**
     * Дата модификации всех Документов в рамках операции
     * @type {number}
     * @memberof ModifyResponseAllOf
     */
    modified?: number;
}
/**
 * 
 * @export
 * @interface NodeTO
 */
export interface NodeTO {
    /**
     * Indicates graph direction with which it was restored
     * @type {string}
     * @memberof NodeTO
     */
    direction?: NodeTODirectionEnum;
    /**
     * 
     * @type {Document}
     * @memberof NodeTO
     */
    value?: Document;
    /**
     * Node leafs
     * @type {Array<NodeTO>}
     * @memberof NodeTO
     */
    leafs?: Array<NodeTO> | null;
    /**
     * 
     * @type {boolean}
     * @memberof NodeTO
     */
    root?: boolean;
}

/**
    * @export
    * @enum {string}
    */
export enum NodeTODirectionEnum {
    Inbound = 'INBOUND',
    Outbound = 'OUTBOUND',
    Any = 'ANY'
}

/**
 * Страница
 * @export
 * @interface Page
 */
export interface Page {
    /**
     * Обычный RSQL фильтр с которым был выполнен запрос
     * @type {string}
     * @memberof Page
     */
    filter?: string;
    /**
     * Полнотекстовый RSQL фильтр с которым был выполнен запрос
     * @type {string}
     * @memberof Page
     */
    fulltext?: string;
    /**
     * Сортировка с которой был выполнен запрос
     * @type {string}
     * @memberof Page
     */
    sort?: string;
    /**
     * Общее количество документов для запроса (может отсутствовать, использовать метод Count в таком случае)
     * @type {number}
     * @memberof Page
     */
    totalRows?: number;
    /**
     * Запрошенный номер страницы (1 по умолчанию)
     * @type {number}
     * @memberof Page
     */
    page: number;
    /**
     * Записей на страницу (по умолчанию 10)
     * @type {number}
     * @memberof Page
     */
    perPage: number;
    /**
     * 
     * @type {Array<Document>}
     * @memberof Page
     */
    records?: Array<Document>;
    /**
     * Схема документа
     * @type {string}
     * @memberof Page
     */
    schema: string;
    /**
     * Параметры expand операции которые были для операции
     * @type {Array<string>}
     * @memberof Page
     */
    expand?: Array<string>;
    /**
     * Найденное количество записей в наборе
     * @type {number}
     * @memberof Page
     */
    foundRows?: number;
}
/**
 * 
 * @export
 * @interface Response
 */
export interface Response {
    /**
     * true в случае успешной операции, false в противном
     * @type {boolean}
     * @memberof Response
     */
    success: boolean;
    /**
     * Сообщение об ошибке или об успехе
     * @type {string}
     * @memberof Response
     */
    message: string;
}
/**
 * 
 * @export
 * @interface StatusResponse
 */
export interface StatusResponse {
    /**
     * 
     * @type {boolean}
     * @memberof StatusResponse
     */
    success?: boolean;
    /**
     * 
     * @type {string}
     * @memberof StatusResponse
     */
    message?: string;
}

/**
 * APIApi - axios parameter creator
 * @export
 */
export const APIApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Возвращает Swagger файл в формате YAML описывающий Rest API в формате Swagger (OpenAPI 3.0.1)
         * @summary Возвращает Swagger/OpenAPI файл
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getApi: async (options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/api`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * APIApi - functional programming interface
 * @export
 */
export const APIApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = APIApiAxiosParamCreator(configuration)
    return {
        /**
         * Возвращает Swagger файл в формате YAML описывающий Rest API в формате Swagger (OpenAPI 3.0.1)
         * @summary Возвращает Swagger/OpenAPI файл
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getApi(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getApi(options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * APIApi - factory interface
 * @export
 */
export const APIApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = APIApiFp(configuration)
    return {
        /**
         * Возвращает Swagger файл в формате YAML описывающий Rest API в формате Swagger (OpenAPI 3.0.1)
         * @summary Возвращает Swagger/OpenAPI файл
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getApi(options?: any): AxiosPromise<void> {
            return localVarFp.getApi(options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * APIApi - object-oriented interface
 * @export
 * @class APIApi
 * @extends {BaseAPI}
 */
export class APIApi extends BaseAPI {
    /**
     * Возвращает Swagger файл в формате YAML описывающий Rest API в формате Swagger (OpenAPI 3.0.1)
     * @summary Возвращает Swagger/OpenAPI файл
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof APIApi
     */
    public getApi(options?: any) {
        return APIApiFp(this.configuration).getApi(options).then((request) => request(this.axios, this.basePath));
    }
}


/**
 * DocumentApi - axios parameter creator
 * @export
 */
export const DocumentApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * 
         * @summary Возвращает количество документов
         * @param {string} schema Название схемы документа
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob), работает в всегда в связке И с fulltext
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки (пример name&#x3D;search&#x3D;Иван), работает в всегда в связке И с query
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        countDocuments: async (schema: string, query?: string, fulltext?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('countDocuments', 'schema', schema)
            const localVarPath = `/document/{schema}/count`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)

            if (query !== undefined) {
                localVarQueryParameter['query'] = query;
            }

            if (fulltext !== undefined) {
                localVarQueryParameter['fulltext'] = fulltext;
            }


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Создает новый объект
         * @param {string} schema Название схемы документа
         * @param {Array<Document>} document Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createDocument: async (schema: string, document: Array<Document>, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('createDocument', 'schema', schema)
            // verify required parameter 'document' is not null or undefined
            assertParamExists('createDocument', 'document', document)
            const localVarPath = `/document/{schema}`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)


    
            localVarHeaderParameter['Content-Type'] = 'application/json;charset=utf-8';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(document, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Удаляет объект по его идентификатору
         * @param {string} schema Название схемы документа
         * @param {string} id ID документа
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteByIdDocument: async (schema: string, id: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('deleteByIdDocument', 'schema', schema)
            // verify required parameter 'id' is not null or undefined
            assertParamExists('deleteByIdDocument', 'id', id)
            const localVarPath = `/document/{schema}/{id}`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Удаляет документы по идентификаторам
         * @param {string} schema Название схемы документа
         * @param {Array<string>} requestBody ID документов на удаление
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteDocument: async (schema: string, requestBody: Array<string>, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('deleteDocument', 'schema', schema)
            // verify required parameter 'requestBody' is not null or undefined
            assertParamExists('deleteDocument', 'requestBody', requestBody)
            const localVarPath = `/document/{schema}`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)


    
            localVarHeaderParameter['Content-Type'] = 'application/json;charset=utf-8';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(requestBody, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Возвращает документ по его идентификатору
         * @param {string} schema Название схемы документа
         * @param {string} id 
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDocument: async (schema: string, id: string, expand?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('getDocument', 'schema', schema)
            // verify required parameter 'id' is not null or undefined
            assertParamExists('getDocument', 'id', id)
            const localVarPath = `/document/{schema}/{id}`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)

            if (expand !== undefined) {
                localVarQueryParameter['expand'] = expand;
            }


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Возвращает постраничный список документов. Разбиение на страницы производиться по 10 записей на страницу (задаётся параметрами запроса) и сортировкой (задаётся параметрами запроса).
         * @summary Возвращает постраничный список документов
         * @param {string} schema Название схемы документа
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob), работает в всегда в связке И с fulltext
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки (пример name&#x3D;search&#x3D;Иван), работает в всегда в связке И с query
         * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        pagingDocuments: async (schema: string, page?: number, perPage?: number, query?: string, fulltext?: string, sort?: string, expand?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('pagingDocuments', 'schema', schema)
            const localVarPath = `/document/{schema}`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)

            if (page !== undefined) {
                localVarQueryParameter['page'] = page;
            }

            if (perPage !== undefined) {
                localVarQueryParameter['perPage'] = perPage;
            }

            if (query !== undefined) {
                localVarQueryParameter['query'] = query;
            }

            if (fulltext !== undefined) {
                localVarQueryParameter['fulltext'] = fulltext;
            }

            if (sort !== undefined) {
                localVarQueryParameter['sort'] = sort;
            }

            if (expand !== undefined) {
                localVarQueryParameter['expand'] = expand;
            }


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Возвращает список всех документов без пейджинга.
         * @summary Возвращает список всех документов
         * @param {string} schema Название схемы документа
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob), работает в всегда в связке И с fulltext
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки (пример name&#x3D;search&#x3D;Иван), работает в всегда в связке И с query
         * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        searchDocuments: async (schema: string, query?: string, fulltext?: string, sort?: string, expand?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('searchDocuments', 'schema', schema)
            const localVarPath = `/document/{schema}/all`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)

            if (query !== undefined) {
                localVarQueryParameter['query'] = query;
            }

            if (fulltext !== undefined) {
                localVarQueryParameter['fulltext'] = fulltext;
            }

            if (sort !== undefined) {
                localVarQueryParameter['sort'] = sort;
            }

            if (expand !== undefined) {
                localVarQueryParameter['expand'] = expand;
            }


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Удаляет связи объекта
         * @param {string} schema Название схемы документа
         * @param {Array<Document>} document Объект со связями для удаления
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        unlinkDocument: async (schema: string, document: Array<Document>, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('unlinkDocument', 'schema', schema)
            // verify required parameter 'document' is not null or undefined
            assertParamExists('unlinkDocument', 'document', document)
            const localVarPath = `/document/{schema}`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)


    
            localVarHeaderParameter['Content-Type'] = 'application/json;charset=utf-8';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(document, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Изменяет объект
         * @param {string} schema Название схемы документа
         * @param {Array<Document>} document Объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateDocument: async (schema: string, document: Array<Document>, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('updateDocument', 'schema', schema)
            // verify required parameter 'document' is not null or undefined
            assertParamExists('updateDocument', 'document', document)
            const localVarPath = `/document/{schema}`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)


    
            localVarHeaderParameter['Content-Type'] = 'application/json;charset=utf-8';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(document, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * DocumentApi - functional programming interface
 * @export
 */
export const DocumentApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = DocumentApiAxiosParamCreator(configuration)
    return {
        /**
         * 
         * @summary Возвращает количество документов
         * @param {string} schema Название схемы документа
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob), работает в всегда в связке И с fulltext
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки (пример name&#x3D;search&#x3D;Иван), работает в всегда в связке И с query
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async countDocuments(schema: string, query?: string, fulltext?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<number>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.countDocuments(schema, query, fulltext, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Создает новый объект
         * @param {string} schema Название схемы документа
         * @param {Array<Document>} document Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async createDocument(schema: string, document: Array<Document>, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ModifyResponse>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.createDocument(schema, document, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Удаляет объект по его идентификатору
         * @param {string} schema Название схемы документа
         * @param {string} id ID документа
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async deleteByIdDocument(schema: string, id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.deleteByIdDocument(schema, id, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Удаляет документы по идентификаторам
         * @param {string} schema Название схемы документа
         * @param {Array<string>} requestBody ID документов на удаление
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async deleteDocument(schema: string, requestBody: Array<string>, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.deleteDocument(schema, requestBody, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Возвращает документ по его идентификатору
         * @param {string} schema Название схемы документа
         * @param {string} id 
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getDocument(schema: string, id: string, expand?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Document>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getDocument(schema, id, expand, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Возвращает постраничный список документов. Разбиение на страницы производиться по 10 записей на страницу (задаётся параметрами запроса) и сортировкой (задаётся параметрами запроса).
         * @summary Возвращает постраничный список документов
         * @param {string} schema Название схемы документа
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob), работает в всегда в связке И с fulltext
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки (пример name&#x3D;search&#x3D;Иван), работает в всегда в связке И с query
         * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pagingDocuments(schema: string, page?: number, perPage?: number, query?: string, fulltext?: string, sort?: string, expand?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Page>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.pagingDocuments(schema, page, perPage, query, fulltext, sort, expand, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Возвращает список всех документов без пейджинга.
         * @summary Возвращает список всех документов
         * @param {string} schema Название схемы документа
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob), работает в всегда в связке И с fulltext
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки (пример name&#x3D;search&#x3D;Иван), работает в всегда в связке И с query
         * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async searchDocuments(schema: string, query?: string, fulltext?: string, sort?: string, expand?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Document>>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.searchDocuments(schema, query, fulltext, sort, expand, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Удаляет связи объекта
         * @param {string} schema Название схемы документа
         * @param {Array<Document>} document Объект со связями для удаления
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async unlinkDocument(schema: string, document: Array<Document>, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ModifyResponse>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.unlinkDocument(schema, document, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Изменяет объект
         * @param {string} schema Название схемы документа
         * @param {Array<Document>} document Объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async updateDocument(schema: string, document: Array<Document>, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ModifyResponse>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.updateDocument(schema, document, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * DocumentApi - factory interface
 * @export
 */
export const DocumentApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = DocumentApiFp(configuration)
    return {
        /**
         * 
         * @summary Возвращает количество документов
         * @param {string} schema Название схемы документа
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob), работает в всегда в связке И с fulltext
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки (пример name&#x3D;search&#x3D;Иван), работает в всегда в связке И с query
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        countDocuments(schema: string, query?: string, fulltext?: string, options?: any): AxiosPromise<number> {
            return localVarFp.countDocuments(schema, query, fulltext, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Создает новый объект
         * @param {string} schema Название схемы документа
         * @param {Array<Document>} document Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createDocument(schema: string, document: Array<Document>, options?: any): AxiosPromise<ModifyResponse> {
            return localVarFp.createDocument(schema, document, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Удаляет объект по его идентификатору
         * @param {string} schema Название схемы документа
         * @param {string} id ID документа
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteByIdDocument(schema: string, id: string, options?: any): AxiosPromise<Response> {
            return localVarFp.deleteByIdDocument(schema, id, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Удаляет документы по идентификаторам
         * @param {string} schema Название схемы документа
         * @param {Array<string>} requestBody ID документов на удаление
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteDocument(schema: string, requestBody: Array<string>, options?: any): AxiosPromise<Response> {
            return localVarFp.deleteDocument(schema, requestBody, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Возвращает документ по его идентификатору
         * @param {string} schema Название схемы документа
         * @param {string} id 
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDocument(schema: string, id: string, expand?: string, options?: any): AxiosPromise<Document> {
            return localVarFp.getDocument(schema, id, expand, options).then((request) => request(axios, basePath));
        },
        /**
         * Возвращает постраничный список документов. Разбиение на страницы производиться по 10 записей на страницу (задаётся параметрами запроса) и сортировкой (задаётся параметрами запроса).
         * @summary Возвращает постраничный список документов
         * @param {string} schema Название схемы документа
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob), работает в всегда в связке И с fulltext
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки (пример name&#x3D;search&#x3D;Иван), работает в всегда в связке И с query
         * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        pagingDocuments(schema: string, page?: number, perPage?: number, query?: string, fulltext?: string, sort?: string, expand?: string, options?: any): AxiosPromise<Page> {
            return localVarFp.pagingDocuments(schema, page, perPage, query, fulltext, sort, expand, options).then((request) => request(axios, basePath));
        },
        /**
         * Возвращает список всех документов без пейджинга.
         * @summary Возвращает список всех документов
         * @param {string} schema Название схемы документа
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob), работает в всегда в связке И с fulltext
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки (пример name&#x3D;search&#x3D;Иван), работает в всегда в связке И с query
         * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        searchDocuments(schema: string, query?: string, fulltext?: string, sort?: string, expand?: string, options?: any): AxiosPromise<Array<Document>> {
            return localVarFp.searchDocuments(schema, query, fulltext, sort, expand, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Удаляет связи объекта
         * @param {string} schema Название схемы документа
         * @param {Array<Document>} document Объект со связями для удаления
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        unlinkDocument(schema: string, document: Array<Document>, options?: any): AxiosPromise<ModifyResponse> {
            return localVarFp.unlinkDocument(schema, document, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Изменяет объект
         * @param {string} schema Название схемы документа
         * @param {Array<Document>} document Объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateDocument(schema: string, document: Array<Document>, options?: any): AxiosPromise<ModifyResponse> {
            return localVarFp.updateDocument(schema, document, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * DocumentApi - object-oriented interface
 * @export
 * @class DocumentApi
 * @extends {BaseAPI}
 */
export class DocumentApi extends BaseAPI {
    /**
     * 
     * @summary Возвращает количество документов
     * @param {string} schema Название схемы документа
     * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob), работает в всегда в связке И с fulltext
     * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки (пример name&#x3D;search&#x3D;Иван), работает в всегда в связке И с query
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentApi
     */
    public countDocuments(schema: string, query?: string, fulltext?: string, options?: any) {
        return DocumentApiFp(this.configuration).countDocuments(schema, query, fulltext, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Создает новый объект
     * @param {string} schema Название схемы документа
     * @param {Array<Document>} document Новый объект
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentApi
     */
    public createDocument(schema: string, document: Array<Document>, options?: any) {
        return DocumentApiFp(this.configuration).createDocument(schema, document, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Удаляет объект по его идентификатору
     * @param {string} schema Название схемы документа
     * @param {string} id ID документа
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentApi
     */
    public deleteByIdDocument(schema: string, id: string, options?: any) {
        return DocumentApiFp(this.configuration).deleteByIdDocument(schema, id, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Удаляет документы по идентификаторам
     * @param {string} schema Название схемы документа
     * @param {Array<string>} requestBody ID документов на удаление
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentApi
     */
    public deleteDocument(schema: string, requestBody: Array<string>, options?: any) {
        return DocumentApiFp(this.configuration).deleteDocument(schema, requestBody, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Возвращает документ по его идентификатору
     * @param {string} schema Название схемы документа
     * @param {string} id 
     * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentApi
     */
    public getDocument(schema: string, id: string, expand?: string, options?: any) {
        return DocumentApiFp(this.configuration).getDocument(schema, id, expand, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Возвращает постраничный список документов. Разбиение на страницы производиться по 10 записей на страницу (задаётся параметрами запроса) и сортировкой (задаётся параметрами запроса).
     * @summary Возвращает постраничный список документов
     * @param {string} schema Название схемы документа
     * @param {number} [page] Номер страницы
     * @param {number} [perPage] Количество элементов на страницу
     * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob), работает в всегда в связке И с fulltext
     * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки (пример name&#x3D;search&#x3D;Иван), работает в всегда в связке И с query
     * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
     * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentApi
     */
    public pagingDocuments(schema: string, page?: number, perPage?: number, query?: string, fulltext?: string, sort?: string, expand?: string, options?: any) {
        return DocumentApiFp(this.configuration).pagingDocuments(schema, page, perPage, query, fulltext, sort, expand, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Возвращает список всех документов без пейджинга.
     * @summary Возвращает список всех документов
     * @param {string} schema Название схемы документа
     * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob), работает в всегда в связке И с fulltext
     * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки (пример name&#x3D;search&#x3D;Иван), работает в всегда в связке И с query
     * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
     * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentApi
     */
    public searchDocuments(schema: string, query?: string, fulltext?: string, sort?: string, expand?: string, options?: any) {
        return DocumentApiFp(this.configuration).searchDocuments(schema, query, fulltext, sort, expand, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Удаляет связи объекта
     * @param {string} schema Название схемы документа
     * @param {Array<Document>} document Объект со связями для удаления
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentApi
     */
    public unlinkDocument(schema: string, document: Array<Document>, options?: any) {
        return DocumentApiFp(this.configuration).unlinkDocument(schema, document, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Изменяет объект
     * @param {string} schema Название схемы документа
     * @param {Array<Document>} document Объект
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentApi
     */
    public updateDocument(schema: string, document: Array<Document>, options?: any) {
        return DocumentApiFp(this.configuration).updateDocument(schema, document, options).then((request) => request(this.axios, this.basePath));
    }
}


/**
 * DocumentConverterApi - axios parameter creator
 * @export
 */
export const DocumentConverterApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Конвертирует заданные документы.
         * @summary Возвращает конвертированные документы
         * @param {ConvertRequestModel} convertRequestModel Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        convertDocuments: async (convertRequestModel: ConvertRequestModel, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'convertRequestModel' is not null or undefined
            assertParamExists('convertDocuments', 'convertRequestModel', convertRequestModel)
            const localVarPath = `/converter/convert`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarHeaderParameter['Content-Type'] = 'application/json;charset=utf-8';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(convertRequestModel, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Выгружает загруженный заранее файл из хранилища S3
         * @summary Выгружает файл из хранилища S3
         * @param {string} loadId 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getUploadedFile: async (loadId: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'loadId' is not null or undefined
            assertParamExists('getUploadedFile', 'loadId', loadId)
            const localVarPath = `/file/{loadId}`
                .replace(`{${"loadId"}}`, encodeURIComponent(String(loadId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Фильтрует документы из document-registry согласно запросу и конвертирует их в файл, затем загружает его в S3.
         * @summary Загружает и конвертирует документы из document-registry, затем загружает их в хранилище S3
         * @param {LoadFromDRAndConvertRequestModel} loadFromDRAndConvertRequestModel Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadAndConvertDocumentRegistryDocuments: async (loadFromDRAndConvertRequestModel: LoadFromDRAndConvertRequestModel, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'loadFromDRAndConvertRequestModel' is not null or undefined
            assertParamExists('loadAndConvertDocumentRegistryDocuments', 'loadFromDRAndConvertRequestModel', loadFromDRAndConvertRequestModel)
            const localVarPath = `/converter/document-registry`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarHeaderParameter['Content-Type'] = 'application/json;charset=utf-8';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(loadFromDRAndConvertRequestModel, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Фильтрует документы согласно запросу и конвертирует их.
         * @summary Загружает и конвертирует документы
         * @param {LoadAndConvertRequestModel} loadAndConvertRequestModel Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadAndConvertDocuments: async (loadAndConvertRequestModel: LoadAndConvertRequestModel, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'loadAndConvertRequestModel' is not null or undefined
            assertParamExists('loadAndConvertDocuments', 'loadAndConvertRequestModel', loadAndConvertRequestModel)
            const localVarPath = `/converter`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarHeaderParameter['Content-Type'] = 'application/json;charset=utf-8';

            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(loadAndConvertRequestModel, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * DocumentConverterApi - functional programming interface
 * @export
 */
export const DocumentConverterApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = DocumentConverterApiAxiosParamCreator(configuration)
    return {
        /**
         * Конвертирует заданные документы.
         * @summary Возвращает конвертированные документы
         * @param {ConvertRequestModel} convertRequestModel Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async convertDocuments(convertRequestModel: ConvertRequestModel, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<string>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.convertDocuments(convertRequestModel, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Выгружает загруженный заранее файл из хранилища S3
         * @summary Выгружает файл из хранилища S3
         * @param {string} loadId 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getUploadedFile(loadId: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<string>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getUploadedFile(loadId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Фильтрует документы из document-registry согласно запросу и конвертирует их в файл, затем загружает его в S3.
         * @summary Загружает и конвертирует документы из document-registry, затем загружает их в хранилище S3
         * @param {LoadFromDRAndConvertRequestModel} loadFromDRAndConvertRequestModel Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async loadAndConvertDocumentRegistryDocuments(loadFromDRAndConvertRequestModel: LoadFromDRAndConvertRequestModel, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<LoadResponse>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.loadAndConvertDocumentRegistryDocuments(loadFromDRAndConvertRequestModel, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Фильтрует документы согласно запросу и конвертирует их.
         * @summary Загружает и конвертирует документы
         * @param {LoadAndConvertRequestModel} loadAndConvertRequestModel Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async loadAndConvertDocuments(loadAndConvertRequestModel: LoadAndConvertRequestModel, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<string>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.loadAndConvertDocuments(loadAndConvertRequestModel, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * DocumentConverterApi - factory interface
 * @export
 */
export const DocumentConverterApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = DocumentConverterApiFp(configuration)
    return {
        /**
         * Конвертирует заданные документы.
         * @summary Возвращает конвертированные документы
         * @param {ConvertRequestModel} convertRequestModel Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        convertDocuments(convertRequestModel: ConvertRequestModel, options?: any): AxiosPromise<string> {
            return localVarFp.convertDocuments(convertRequestModel, options).then((request) => request(axios, basePath));
        },
        /**
         * Выгружает загруженный заранее файл из хранилища S3
         * @summary Выгружает файл из хранилища S3
         * @param {string} loadId 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getUploadedFile(loadId: string, options?: any): AxiosPromise<string> {
            return localVarFp.getUploadedFile(loadId, options).then((request) => request(axios, basePath));
        },
        /**
         * Фильтрует документы из document-registry согласно запросу и конвертирует их в файл, затем загружает его в S3.
         * @summary Загружает и конвертирует документы из document-registry, затем загружает их в хранилище S3
         * @param {LoadFromDRAndConvertRequestModel} loadFromDRAndConvertRequestModel Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadAndConvertDocumentRegistryDocuments(loadFromDRAndConvertRequestModel: LoadFromDRAndConvertRequestModel, options?: any): AxiosPromise<LoadResponse> {
            return localVarFp.loadAndConvertDocumentRegistryDocuments(loadFromDRAndConvertRequestModel, options).then((request) => request(axios, basePath));
        },
        /**
         * Фильтрует документы согласно запросу и конвертирует их.
         * @summary Загружает и конвертирует документы
         * @param {LoadAndConvertRequestModel} loadAndConvertRequestModel Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadAndConvertDocuments(loadAndConvertRequestModel: LoadAndConvertRequestModel, options?: any): AxiosPromise<string> {
            return localVarFp.loadAndConvertDocuments(loadAndConvertRequestModel, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * DocumentConverterApi - object-oriented interface
 * @export
 * @class DocumentConverterApi
 * @extends {BaseAPI}
 */
export class DocumentConverterApi extends BaseAPI {
    /**
     * Конвертирует заданные документы.
     * @summary Возвращает конвертированные документы
     * @param {ConvertRequestModel} convertRequestModel Новый объект
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentConverterApi
     */
    public convertDocuments(convertRequestModel: ConvertRequestModel, options?: any) {
        return DocumentConverterApiFp(this.configuration).convertDocuments(convertRequestModel, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Выгружает загруженный заранее файл из хранилища S3
     * @summary Выгружает файл из хранилища S3
     * @param {string} loadId 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentConverterApi
     */
    public getUploadedFile(loadId: string, options?: any) {
        return DocumentConverterApiFp(this.configuration).getUploadedFile(loadId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Фильтрует документы из document-registry согласно запросу и конвертирует их в файл, затем загружает его в S3.
     * @summary Загружает и конвертирует документы из document-registry, затем загружает их в хранилище S3
     * @param {LoadFromDRAndConvertRequestModel} loadFromDRAndConvertRequestModel Новый объект
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentConverterApi
     */
    public loadAndConvertDocumentRegistryDocuments(loadFromDRAndConvertRequestModel: LoadFromDRAndConvertRequestModel, options?: any) {
        return DocumentConverterApiFp(this.configuration).loadAndConvertDocumentRegistryDocuments(loadFromDRAndConvertRequestModel, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Фильтрует документы согласно запросу и конвертирует их.
     * @summary Загружает и конвертирует документы
     * @param {LoadAndConvertRequestModel} loadAndConvertRequestModel Новый объект
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentConverterApi
     */
    public loadAndConvertDocuments(loadAndConvertRequestModel: LoadAndConvertRequestModel, options?: any) {
        return DocumentConverterApiFp(this.configuration).loadAndConvertDocuments(loadAndConvertRequestModel, options).then((request) => request(this.axios, this.basePath));
    }
}


/**
 * GraphApi - axios parameter creator
 * @export
 */
export const GraphApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Возвращает плоскую структуру документов начиная от заданных вершин.
         * @summary Возвращает плоскую структуру документов
         * @param {string} schema Имя схемы документа (schema)
         * @param {'incoming' | 'outgoing'} type Направление связи
         * @param {Array<string>} ids IDs документов
         * @param {number} [depth] Глубина поиска
         * @param {Array<string>} [schemas] Схемы (schema) которые включить в выборку
         * @param {Array<string>} [links] Имена линков (полей) которые включить при обходе графа
         * @param {Array<string>} [expand] Расширение объекта по его ссылкам (пример - Account:person)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        flatten: async (schema: string, type: 'incoming' | 'outgoing', ids: Array<string>, depth?: number, schemas?: Array<string>, links?: Array<string>, expand?: Array<string>, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('flatten', 'schema', schema)
            // verify required parameter 'type' is not null or undefined
            assertParamExists('flatten', 'type', type)
            // verify required parameter 'ids' is not null or undefined
            assertParamExists('flatten', 'ids', ids)
            const localVarPath = `/flatten/{schema}/{type}`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)))
                .replace(`{${"type"}}`, encodeURIComponent(String(type)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)

            if (ids) {
                localVarQueryParameter['ids'] = ids;
            }

            if (depth !== undefined) {
                localVarQueryParameter['depth'] = depth;
            }

            if (schemas) {
                localVarQueryParameter['schemas'] = schemas;
            }

            if (links) {
                localVarQueryParameter['links'] = links;
            }

            if (expand) {
                localVarQueryParameter['expand'] = expand;
            }


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Возвращает плоскую структуру документов начиная от заданной вершины.
         * @summary Возвращает плоскую структуру документов
         * @param {string} schema Имя схемы документа (schema)
         * @param {'incoming' | 'outgoing'} type Направление связи
         * @param {string} id ID документа вершины откуда начать поиск
         * @param {number} [depth] Глубина поиска
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {Array<string>} [schemas] Схемы (schema) которые включить в выборку
         * @param {Array<string>} [links] Имена линков (полей) которые включить при обходе графа
         * @param {Array<string>} [expand] Расширение объекта по его ссылкам (пример - Account:person)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        flatten1: async (schema: string, type: 'incoming' | 'outgoing', id: string, depth?: number, page?: number, perPage?: number, schemas?: Array<string>, links?: Array<string>, expand?: Array<string>, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('flatten1', 'schema', schema)
            // verify required parameter 'type' is not null or undefined
            assertParamExists('flatten1', 'type', type)
            // verify required parameter 'id' is not null or undefined
            assertParamExists('flatten1', 'id', id)
            const localVarPath = `/flatten/{schema}/{type}/{id}`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)))
                .replace(`{${"type"}}`, encodeURIComponent(String(type)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)

            if (depth !== undefined) {
                localVarQueryParameter['depth'] = depth;
            }

            if (page !== undefined) {
                localVarQueryParameter['page'] = page;
            }

            if (perPage !== undefined) {
                localVarQueryParameter['perPage'] = perPage;
            }

            if (schemas) {
                localVarQueryParameter['schemas'] = schemas;
            }

            if (links) {
                localVarQueryParameter['links'] = links;
            }

            if (expand) {
                localVarQueryParameter['expand'] = expand;
            }


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Возвращает дерево документов начиная от заданной вершины.
         * @summary Возвращает дерево документов
         * @param {string} schema Имя схемы документа (schema)
         * @param {'incoming' | 'outgoing'} type Направление связи
         * @param {string} id ID документа
         * @param {number} [depth] Глубина поиска
         * @param {Array<string>} [schemas] Схемы (schema) которые включить в граф
         * @param {Array<string>} [links] Имена линков (полей) которые включить при обходе графа
         * @param {Array<string>} [expand] Расширение объекта по его ссылкам (пример - Account:person)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        tree: async (schema: string, type: 'incoming' | 'outgoing', id: string, depth?: number, schemas?: Array<string>, links?: Array<string>, expand?: Array<string>, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('tree', 'schema', schema)
            // verify required parameter 'type' is not null or undefined
            assertParamExists('tree', 'type', type)
            // verify required parameter 'id' is not null or undefined
            assertParamExists('tree', 'id', id)
            const localVarPath = `/tree/{schema}/{type}/{id}`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)))
                .replace(`{${"type"}}`, encodeURIComponent(String(type)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)

            if (depth !== undefined) {
                localVarQueryParameter['depth'] = depth;
            }

            if (schemas) {
                localVarQueryParameter['schemas'] = schemas;
            }

            if (links) {
                localVarQueryParameter['links'] = links;
            }

            if (expand) {
                localVarQueryParameter['expand'] = expand;
            }


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * GraphApi - functional programming interface
 * @export
 */
export const GraphApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = GraphApiAxiosParamCreator(configuration)
    return {
        /**
         * Возвращает плоскую структуру документов начиная от заданных вершин.
         * @summary Возвращает плоскую структуру документов
         * @param {string} schema Имя схемы документа (schema)
         * @param {'incoming' | 'outgoing'} type Направление связи
         * @param {Array<string>} ids IDs документов
         * @param {number} [depth] Глубина поиска
         * @param {Array<string>} [schemas] Схемы (schema) которые включить в выборку
         * @param {Array<string>} [links] Имена линков (полей) которые включить при обходе графа
         * @param {Array<string>} [expand] Расширение объекта по его ссылкам (пример - Account:person)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async flatten(schema: string, type: 'incoming' | 'outgoing', ids: Array<string>, depth?: number, schemas?: Array<string>, links?: Array<string>, expand?: Array<string>, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Document>>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.flatten(schema, type, ids, depth, schemas, links, expand, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Возвращает плоскую структуру документов начиная от заданной вершины.
         * @summary Возвращает плоскую структуру документов
         * @param {string} schema Имя схемы документа (schema)
         * @param {'incoming' | 'outgoing'} type Направление связи
         * @param {string} id ID документа вершины откуда начать поиск
         * @param {number} [depth] Глубина поиска
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {Array<string>} [schemas] Схемы (schema) которые включить в выборку
         * @param {Array<string>} [links] Имена линков (полей) которые включить при обходе графа
         * @param {Array<string>} [expand] Расширение объекта по его ссылкам (пример - Account:person)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async flatten1(schema: string, type: 'incoming' | 'outgoing', id: string, depth?: number, page?: number, perPage?: number, schemas?: Array<string>, links?: Array<string>, expand?: Array<string>, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Page>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.flatten1(schema, type, id, depth, page, perPage, schemas, links, expand, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Возвращает дерево документов начиная от заданной вершины.
         * @summary Возвращает дерево документов
         * @param {string} schema Имя схемы документа (schema)
         * @param {'incoming' | 'outgoing'} type Направление связи
         * @param {string} id ID документа
         * @param {number} [depth] Глубина поиска
         * @param {Array<string>} [schemas] Схемы (schema) которые включить в граф
         * @param {Array<string>} [links] Имена линков (полей) которые включить при обходе графа
         * @param {Array<string>} [expand] Расширение объекта по его ссылкам (пример - Account:person)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async tree(schema: string, type: 'incoming' | 'outgoing', id: string, depth?: number, schemas?: Array<string>, links?: Array<string>, expand?: Array<string>, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<NodeTO>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.tree(schema, type, id, depth, schemas, links, expand, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * GraphApi - factory interface
 * @export
 */
export const GraphApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = GraphApiFp(configuration)
    return {
        /**
         * Возвращает плоскую структуру документов начиная от заданных вершин.
         * @summary Возвращает плоскую структуру документов
         * @param {string} schema Имя схемы документа (schema)
         * @param {'incoming' | 'outgoing'} type Направление связи
         * @param {Array<string>} ids IDs документов
         * @param {number} [depth] Глубина поиска
         * @param {Array<string>} [schemas] Схемы (schema) которые включить в выборку
         * @param {Array<string>} [links] Имена линков (полей) которые включить при обходе графа
         * @param {Array<string>} [expand] Расширение объекта по его ссылкам (пример - Account:person)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        flatten(schema: string, type: 'incoming' | 'outgoing', ids: Array<string>, depth?: number, schemas?: Array<string>, links?: Array<string>, expand?: Array<string>, options?: any): AxiosPromise<Array<Document>> {
            return localVarFp.flatten(schema, type, ids, depth, schemas, links, expand, options).then((request) => request(axios, basePath));
        },
        /**
         * Возвращает плоскую структуру документов начиная от заданной вершины.
         * @summary Возвращает плоскую структуру документов
         * @param {string} schema Имя схемы документа (schema)
         * @param {'incoming' | 'outgoing'} type Направление связи
         * @param {string} id ID документа вершины откуда начать поиск
         * @param {number} [depth] Глубина поиска
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {Array<string>} [schemas] Схемы (schema) которые включить в выборку
         * @param {Array<string>} [links] Имена линков (полей) которые включить при обходе графа
         * @param {Array<string>} [expand] Расширение объекта по его ссылкам (пример - Account:person)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        flatten1(schema: string, type: 'incoming' | 'outgoing', id: string, depth?: number, page?: number, perPage?: number, schemas?: Array<string>, links?: Array<string>, expand?: Array<string>, options?: any): AxiosPromise<Page> {
            return localVarFp.flatten1(schema, type, id, depth, page, perPage, schemas, links, expand, options).then((request) => request(axios, basePath));
        },
        /**
         * Возвращает дерево документов начиная от заданной вершины.
         * @summary Возвращает дерево документов
         * @param {string} schema Имя схемы документа (schema)
         * @param {'incoming' | 'outgoing'} type Направление связи
         * @param {string} id ID документа
         * @param {number} [depth] Глубина поиска
         * @param {Array<string>} [schemas] Схемы (schema) которые включить в граф
         * @param {Array<string>} [links] Имена линков (полей) которые включить при обходе графа
         * @param {Array<string>} [expand] Расширение объекта по его ссылкам (пример - Account:person)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        tree(schema: string, type: 'incoming' | 'outgoing', id: string, depth?: number, schemas?: Array<string>, links?: Array<string>, expand?: Array<string>, options?: any): AxiosPromise<NodeTO> {
            return localVarFp.tree(schema, type, id, depth, schemas, links, expand, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * GraphApi - object-oriented interface
 * @export
 * @class GraphApi
 * @extends {BaseAPI}
 */
export class GraphApi extends BaseAPI {
    /**
     * Возвращает плоскую структуру документов начиная от заданных вершин.
     * @summary Возвращает плоскую структуру документов
     * @param {string} schema Имя схемы документа (schema)
     * @param {'incoming' | 'outgoing'} type Направление связи
     * @param {Array<string>} ids IDs документов
     * @param {number} [depth] Глубина поиска
     * @param {Array<string>} [schemas] Схемы (schema) которые включить в выборку
     * @param {Array<string>} [links] Имена линков (полей) которые включить при обходе графа
     * @param {Array<string>} [expand] Расширение объекта по его ссылкам (пример - Account:person)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphApi
     */
    public flatten(schema: string, type: 'incoming' | 'outgoing', ids: Array<string>, depth?: number, schemas?: Array<string>, links?: Array<string>, expand?: Array<string>, options?: any) {
        return GraphApiFp(this.configuration).flatten(schema, type, ids, depth, schemas, links, expand, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Возвращает плоскую структуру документов начиная от заданной вершины.
     * @summary Возвращает плоскую структуру документов
     * @param {string} schema Имя схемы документа (schema)
     * @param {'incoming' | 'outgoing'} type Направление связи
     * @param {string} id ID документа вершины откуда начать поиск
     * @param {number} [depth] Глубина поиска
     * @param {number} [page] Номер страницы
     * @param {number} [perPage] Количество элементов на страницу
     * @param {Array<string>} [schemas] Схемы (schema) которые включить в выборку
     * @param {Array<string>} [links] Имена линков (полей) которые включить при обходе графа
     * @param {Array<string>} [expand] Расширение объекта по его ссылкам (пример - Account:person)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphApi
     */
    public flatten1(schema: string, type: 'incoming' | 'outgoing', id: string, depth?: number, page?: number, perPage?: number, schemas?: Array<string>, links?: Array<string>, expand?: Array<string>, options?: any) {
        return GraphApiFp(this.configuration).flatten1(schema, type, id, depth, page, perPage, schemas, links, expand, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Возвращает дерево документов начиная от заданной вершины.
     * @summary Возвращает дерево документов
     * @param {string} schema Имя схемы документа (schema)
     * @param {'incoming' | 'outgoing'} type Направление связи
     * @param {string} id ID документа
     * @param {number} [depth] Глубина поиска
     * @param {Array<string>} [schemas] Схемы (schema) которые включить в граф
     * @param {Array<string>} [links] Имена линков (полей) которые включить при обходе графа
     * @param {Array<string>} [expand] Расширение объекта по его ссылкам (пример - Account:person)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphApi
     */
    public tree(schema: string, type: 'incoming' | 'outgoing', id: string, depth?: number, schemas?: Array<string>, links?: Array<string>, expand?: Array<string>, options?: any) {
        return GraphApiFp(this.configuration).tree(schema, type, id, depth, schemas, links, expand, options).then((request) => request(this.axios, this.basePath));
    }
}


/**
 * LinksApi - axios parameter creator
 * @export
 */
export const LinksApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * 
         * @summary Возвращает количество документов
         * @param {string} schemaParent Schema родительского документа
         * @param {string} parentId 
         * @param {string} schemaChild Schema линкованого документа
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        countLinks: async (schemaParent: string, parentId: string, schemaChild: string, query?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schemaParent' is not null or undefined
            assertParamExists('countLinks', 'schemaParent', schemaParent)
            // verify required parameter 'parentId' is not null or undefined
            assertParamExists('countLinks', 'parentId', parentId)
            // verify required parameter 'schemaChild' is not null or undefined
            assertParamExists('countLinks', 'schemaChild', schemaChild)
            const localVarPath = `/links/{schemaParent}/{parentId}/{schemaChild}/count`
                .replace(`{${"schemaParent"}}`, encodeURIComponent(String(schemaParent)))
                .replace(`{${"parentId"}}`, encodeURIComponent(String(parentId)))
                .replace(`{${"schemaChild"}}`, encodeURIComponent(String(schemaChild)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)

            if (query !== undefined) {
                localVarQueryParameter['query'] = query;
            }


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Возвращает объект по его идентификатору
         * @param {string} schemaParent Schema родительского документа
         * @param {string} parentId 
         * @param {string} schemaChild Имя Schema прилинкованного документа
         * @param {string} id 
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        findLinks: async (schemaParent: string, parentId: string, schemaChild: string, id: string, expand?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schemaParent' is not null or undefined
            assertParamExists('findLinks', 'schemaParent', schemaParent)
            // verify required parameter 'parentId' is not null or undefined
            assertParamExists('findLinks', 'parentId', parentId)
            // verify required parameter 'schemaChild' is not null or undefined
            assertParamExists('findLinks', 'schemaChild', schemaChild)
            // verify required parameter 'id' is not null or undefined
            assertParamExists('findLinks', 'id', id)
            const localVarPath = `/links/{schemaParent}/{parentId}/{schemaChild}/{id}`
                .replace(`{${"schemaParent"}}`, encodeURIComponent(String(schemaParent)))
                .replace(`{${"parentId"}}`, encodeURIComponent(String(parentId)))
                .replace(`{${"schemaChild"}}`, encodeURIComponent(String(schemaChild)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)

            if (expand !== undefined) {
                localVarQueryParameter['expand'] = expand;
            }


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Возвращает постраничный список документов. Разбиение на страницы производиться по 10 записей на страницу (задаётся параметрами запроса) и сортировкой (задаётся параметрами запроса).
         * @summary Возвращает постраничный список документов
         * @param {string} schemaParent Schema родительского документа
         * @param {string} parentId 
         * @param {string} schemaChild Schema прилинкованного документа
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob)
         * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        pagingLinks: async (schemaParent: string, parentId: string, schemaChild: string, page?: number, perPage?: number, query?: string, sort?: string, expand?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schemaParent' is not null or undefined
            assertParamExists('pagingLinks', 'schemaParent', schemaParent)
            // verify required parameter 'parentId' is not null or undefined
            assertParamExists('pagingLinks', 'parentId', parentId)
            // verify required parameter 'schemaChild' is not null or undefined
            assertParamExists('pagingLinks', 'schemaChild', schemaChild)
            const localVarPath = `/links/{schemaParent}/{parentId}/{schemaChild}`
                .replace(`{${"schemaParent"}}`, encodeURIComponent(String(schemaParent)))
                .replace(`{${"parentId"}}`, encodeURIComponent(String(parentId)))
                .replace(`{${"schemaChild"}}`, encodeURIComponent(String(schemaChild)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)

            if (page !== undefined) {
                localVarQueryParameter['page'] = page;
            }

            if (perPage !== undefined) {
                localVarQueryParameter['perPage'] = perPage;
            }

            if (query !== undefined) {
                localVarQueryParameter['query'] = query;
            }

            if (sort !== undefined) {
                localVarQueryParameter['sort'] = sort;
            }

            if (expand !== undefined) {
                localVarQueryParameter['expand'] = expand;
            }


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Возвращает список документов без пейджинга.
         * @summary Возвращает список документов
         * @param {string} schemaParent Schema родительского документа
         * @param {string} parentId 
         * @param {string} schemaChild Schema прилинкованного документа
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob)
         * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        searchLinks: async (schemaParent: string, parentId: string, schemaChild: string, query?: string, sort?: string, expand?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schemaParent' is not null or undefined
            assertParamExists('searchLinks', 'schemaParent', schemaParent)
            // verify required parameter 'parentId' is not null or undefined
            assertParamExists('searchLinks', 'parentId', parentId)
            // verify required parameter 'schemaChild' is not null or undefined
            assertParamExists('searchLinks', 'schemaChild', schemaChild)
            const localVarPath = `/links/{schemaParent}/{parentId}/{schemaChild}/all`
                .replace(`{${"schemaParent"}}`, encodeURIComponent(String(schemaParent)))
                .replace(`{${"parentId"}}`, encodeURIComponent(String(parentId)))
                .replace(`{${"schemaChild"}}`, encodeURIComponent(String(schemaChild)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication Authorization required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            // authentication registryAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryAuth", [], configuration)

            if (query !== undefined) {
                localVarQueryParameter['query'] = query;
            }

            if (sort !== undefined) {
                localVarQueryParameter['sort'] = sort;
            }

            if (expand !== undefined) {
                localVarQueryParameter['expand'] = expand;
            }


    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * LinksApi - functional programming interface
 * @export
 */
export const LinksApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = LinksApiAxiosParamCreator(configuration)
    return {
        /**
         * 
         * @summary Возвращает количество документов
         * @param {string} schemaParent Schema родительского документа
         * @param {string} parentId 
         * @param {string} schemaChild Schema линкованого документа
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async countLinks(schemaParent: string, parentId: string, schemaChild: string, query?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<number>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.countLinks(schemaParent, parentId, schemaChild, query, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Возвращает объект по его идентификатору
         * @param {string} schemaParent Schema родительского документа
         * @param {string} parentId 
         * @param {string} schemaChild Имя Schema прилинкованного документа
         * @param {string} id 
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async findLinks(schemaParent: string, parentId: string, schemaChild: string, id: string, expand?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Document>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.findLinks(schemaParent, parentId, schemaChild, id, expand, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Возвращает постраничный список документов. Разбиение на страницы производиться по 10 записей на страницу (задаётся параметрами запроса) и сортировкой (задаётся параметрами запроса).
         * @summary Возвращает постраничный список документов
         * @param {string} schemaParent Schema родительского документа
         * @param {string} parentId 
         * @param {string} schemaChild Schema прилинкованного документа
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob)
         * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pagingLinks(schemaParent: string, parentId: string, schemaChild: string, page?: number, perPage?: number, query?: string, sort?: string, expand?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Page>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.pagingLinks(schemaParent, parentId, schemaChild, page, perPage, query, sort, expand, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Возвращает список документов без пейджинга.
         * @summary Возвращает список документов
         * @param {string} schemaParent Schema родительского документа
         * @param {string} parentId 
         * @param {string} schemaChild Schema прилинкованного документа
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob)
         * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async searchLinks(schemaParent: string, parentId: string, schemaChild: string, query?: string, sort?: string, expand?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Document>>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.searchLinks(schemaParent, parentId, schemaChild, query, sort, expand, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * LinksApi - factory interface
 * @export
 */
export const LinksApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = LinksApiFp(configuration)
    return {
        /**
         * 
         * @summary Возвращает количество документов
         * @param {string} schemaParent Schema родительского документа
         * @param {string} parentId 
         * @param {string} schemaChild Schema линкованого документа
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        countLinks(schemaParent: string, parentId: string, schemaChild: string, query?: string, options?: any): AxiosPromise<number> {
            return localVarFp.countLinks(schemaParent, parentId, schemaChild, query, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Возвращает объект по его идентификатору
         * @param {string} schemaParent Schema родительского документа
         * @param {string} parentId 
         * @param {string} schemaChild Имя Schema прилинкованного документа
         * @param {string} id 
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        findLinks(schemaParent: string, parentId: string, schemaChild: string, id: string, expand?: string, options?: any): AxiosPromise<Document> {
            return localVarFp.findLinks(schemaParent, parentId, schemaChild, id, expand, options).then((request) => request(axios, basePath));
        },
        /**
         * Возвращает постраничный список документов. Разбиение на страницы производиться по 10 записей на страницу (задаётся параметрами запроса) и сортировкой (задаётся параметрами запроса).
         * @summary Возвращает постраничный список документов
         * @param {string} schemaParent Schema родительского документа
         * @param {string} parentId 
         * @param {string} schemaChild Schema прилинкованного документа
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob)
         * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        pagingLinks(schemaParent: string, parentId: string, schemaChild: string, page?: number, perPage?: number, query?: string, sort?: string, expand?: string, options?: any): AxiosPromise<Page> {
            return localVarFp.pagingLinks(schemaParent, parentId, schemaChild, page, perPage, query, sort, expand, options).then((request) => request(axios, basePath));
        },
        /**
         * Возвращает список документов без пейджинга.
         * @summary Возвращает список документов
         * @param {string} schemaParent Schema родительского документа
         * @param {string} parentId 
         * @param {string} schemaChild Schema прилинкованного документа
         * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob)
         * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
         * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        searchLinks(schemaParent: string, parentId: string, schemaChild: string, query?: string, sort?: string, expand?: string, options?: any): AxiosPromise<Array<Document>> {
            return localVarFp.searchLinks(schemaParent, parentId, schemaChild, query, sort, expand, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * LinksApi - object-oriented interface
 * @export
 * @class LinksApi
 * @extends {BaseAPI}
 */
export class LinksApi extends BaseAPI {
    /**
     * 
     * @summary Возвращает количество документов
     * @param {string} schemaParent Schema родительского документа
     * @param {string} parentId 
     * @param {string} schemaChild Schema линкованого документа
     * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LinksApi
     */
    public countLinks(schemaParent: string, parentId: string, schemaChild: string, query?: string, options?: any) {
        return LinksApiFp(this.configuration).countLinks(schemaParent, parentId, schemaChild, query, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Возвращает объект по его идентификатору
     * @param {string} schemaParent Schema родительского документа
     * @param {string} parentId 
     * @param {string} schemaChild Имя Schema прилинкованного документа
     * @param {string} id 
     * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LinksApi
     */
    public findLinks(schemaParent: string, parentId: string, schemaChild: string, id: string, expand?: string, options?: any) {
        return LinksApiFp(this.configuration).findLinks(schemaParent, parentId, schemaChild, id, expand, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Возвращает постраничный список документов. Разбиение на страницы производиться по 10 записей на страницу (задаётся параметрами запроса) и сортировкой (задаётся параметрами запроса).
     * @summary Возвращает постраничный список документов
     * @param {string} schemaParent Schema родительского документа
     * @param {string} parentId 
     * @param {string} schemaChild Schema прилинкованного документа
     * @param {number} [page] Номер страницы
     * @param {number} [perPage] Количество элементов на страницу
     * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob)
     * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
     * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LinksApi
     */
    public pagingLinks(schemaParent: string, parentId: string, schemaChild: string, page?: number, perPage?: number, query?: string, sort?: string, expand?: string, options?: any) {
        return LinksApiFp(this.configuration).pagingLinks(schemaParent, parentId, schemaChild, page, perPage, query, sort, expand, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Возвращает список документов без пейджинга.
     * @summary Возвращает список документов
     * @param {string} schemaParent Schema родительского документа
     * @param {string} parentId 
     * @param {string} schemaChild Schema прилинкованного документа
     * @param {string} [query] Фильтр (RSQL) выборки по объекту (пример name&#x3D;&#x3D;Bob)
     * @param {string} [sort] Параметры сортировки (пример: -modified в порядке DESC, +modified в порядке ASC, можно N полей через запятую)
     * @param {string} [expand] Расширение объекта по его ссылкам (см. описание модели)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LinksApi
     */
    public searchLinks(schemaParent: string, parentId: string, schemaChild: string, query?: string, sort?: string, expand?: string, options?: any) {
        return LinksApiFp(this.configuration).searchLinks(schemaParent, parentId, schemaChild, query, sort, expand, options).then((request) => request(this.axios, this.basePath));
    }
}


