/* tslint:disable */
/* eslint-disable */
/**
 * dictionary-registry-nsi
 * Сервис больших справочников для ПГС
 *
 * The version of the OpenAPI document: 1.0.0-SNAPSHOT (29)
 *
 *
 * 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 Dictionary
 */
export interface Dictionary {
    /**
     *
     * @type {{ [key: string]: object; }}
     * @memberof Dictionary
     */
    expands?: { [key: string]: object; };
    /**
     * Дата модификации как UnixTime (Может требоваться при обновлении)
     * @type {number}
     * @memberof Dictionary
     */
    modified?: number;
    /**
     * Имя схемы документа
     * @type {string}
     * @memberof Dictionary
     */
    schema?: string;
    /**
     * Уникальный идентификатор документа
     * @type {string}
     * @memberof Dictionary
     */
    id: string;
    /**
     *
     * @type {string}
     * @memberof Dictionary
     */
    nsiDictionaryId?: string;
    /**
     * Код справочника
     * @type {string}
     * @memberof Dictionary
     */
    code: string;
    /**
     * Название справочника
     * @type {string}
     * @memberof Dictionary
     */
    name: string;
    /**
     * Номер версии
     * @type {string}
     * @memberof Dictionary
     */
    version: string;
}
/**
 *
 * @export
 * @interface DictionaryAllOf
 */
export interface DictionaryAllOf {
    /**
     * Уникальный идентификатор документа
     * @type {string}
     * @memberof DictionaryAllOf
     */
    id?: string;
    /**
     * Дата модификации как UnixTime (Может требоваться при обновлении)
     * @type {number}
     * @memberof DictionaryAllOf
     */
    modified?: number;
    /**
     * Имя схемы документа
     * @type {string}
     * @memberof DictionaryAllOf
     */
    schema?: string;
    /**
     *
     * @type {string}
     * @memberof DictionaryAllOf
     */
    nsiDictionaryId?: string;
    /**
     * Код справочника
     * @type {string}
     * @memberof DictionaryAllOf
     */
    code?: string;
    /**
     * Название справочника
     * @type {string}
     * @memberof DictionaryAllOf
     */
    name?: string;
    /**
     * Номер версии
     * @type {string}
     * @memberof DictionaryAllOf
     */
    version?: string;
}
/**
 * Список найденных объектов
 * @export
 * @interface Document
 */
export interface Document {
    /**
     *
     * @type {{ [key: string]: object; }}
     * @memberof Document
     */
    expands?: { [key: string]: object; };
    /**
     *
     * @type {number}
     * @memberof Document
     */
    modified?: number;
    /**
     *
     * @type {string}
     * @memberof Document
     */
    schema?: string;
    /**
     *
     * @type {string}
     * @memberof Document
     */
    id?: string;
}
/**
 *
 * @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 PageOfRevision
 */
export interface PageOfRevision {
    /**
     * Обычный RSQL фильтр с которым был выполнен запрос
     * @type {string}
     * @memberof PageOfRevision
     */
    filter?: string;
    /**
     * Полнотекстовый RSQL фильтр с которым был выполнен запрос
     * @type {string}
     * @memberof PageOfRevision
     */
    fulltext?: string;
    /**
     * Сортировка с которой был выполнен запрос
     * @type {string}
     * @memberof PageOfRevision
     */
    sort?: string;
    /**
     * Общее количество документов для запроса (может отсутствовать, использовать метод Count в таком случае)
     * @type {number}
     * @memberof PageOfRevision
     */
    totalRows?: number;
    /**
     * Запрошенный номер страницы (1 по умолчанию)
     * @type {number}
     * @memberof PageOfRevision
     */
    page: number;
    /**
     * Записей на страницу (по умолчанию 10)
     * @type {number}
     * @memberof PageOfRevision
     */
    perPage: number;
    /**
     *
     * @type {Array<Revision>}
     * @memberof PageOfRevision
     */
    records?: Array<Revision>;
    /**
     * Схема документа
     * @type {string}
     * @memberof PageOfRevision
     */
    schema: string;
    /**
     * Параметры expand операции которые были для операции
     * @type {Array<string>}
     * @memberof PageOfRevision
     */
    expand?: Array<string>;
    /**
     * Найденное количество записей в наборе
     * @type {number}
     * @memberof PageOfRevision
     */
    foundRows?: number;
}
/**
 *
 * @export
 * @interface Response
 */
export interface Response {
    /**
     * true в случае успешной операции, false в противном
     * @type {boolean}
     * @memberof Response
     */
    success: boolean;
    /**
     * Сообщение об ошибке или об успехе
     * @type {string}
     * @memberof Response
     */
    message: string;
}
/**
 * Список найденных объектов
 * @export
 * @interface Revision
 */
export interface Revision {
    /**
     * Время создания ревизии (UnixTime in millis)
     * @type {number}
     * @memberof Revision
     */
    created?: number;
    /**
     * Уникальный номер ревизии
     * @type {string}
     * @memberof Revision
     */
    number?: string;
    /**
     * Имя операции которое породило данную ревизию
     * @type {string}
     * @memberof Revision
     */
    operation?: string;
    /**
     *
     * @type {{ [key: string]: object; }}
     * @memberof Revision
     */
    extras?: { [key: string]: object; };
}
/**
 *
 * @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,
            };
        },
        /**
         * Возвращает GraphQLSchema файл в формате GraphQL
         * @summary Возвращает GraphQLSchema как текст
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getApi1: async (options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/api/graphql`;
            // 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,
            };
        },
        /**
         * Возвращает GraphQLSchema файл в формате GraphQL
         * @summary Возвращает GraphQLSchema как текст
         * @param {*} [options] Override http request option.
         * @deprecated
         * @throws {RequiredError}
         */
        getApi2: async (options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/graphql/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);
        },
        /**
         * Возвращает GraphQLSchema файл в формате GraphQL
         * @summary Возвращает GraphQLSchema как текст
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getApi1(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getApi1(options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Возвращает GraphQLSchema файл в формате GraphQL
         * @summary Возвращает GraphQLSchema как текст
         * @param {*} [options] Override http request option.
         * @deprecated
         * @throws {RequiredError}
         */
        async getApi2(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getApi2(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));
        },
        /**
         * Возвращает GraphQLSchema файл в формате GraphQL
         * @summary Возвращает GraphQLSchema как текст
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getApi1(options?: any): AxiosPromise<void> {
            return localVarFp.getApi1(options).then((request) => request(axios, basePath));
        },
        /**
         * Возвращает GraphQLSchema файл в формате GraphQL
         * @summary Возвращает GraphQLSchema как текст
         * @param {*} [options] Override http request option.
         * @deprecated
         * @throws {RequiredError}
         */
        getApi2(options?: any): AxiosPromise<void> {
            return localVarFp.getApi2(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));
    }

    /**
     * Возвращает GraphQLSchema файл в формате GraphQL
     * @summary Возвращает GraphQLSchema как текст
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof APIApi
     */
    public getApi1(options?: any) {
        return APIApiFp(this.configuration).getApi1(options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Возвращает GraphQLSchema файл в формате GraphQL
     * @summary Возвращает GraphQLSchema как текст
     * @param {*} [options] Override http request option.
     * @deprecated
     * @throws {RequiredError}
     * @memberof APIApi
     */
    public getApi2(options?: any) {
        return APIApiFp(this.configuration).getApi2(options).then((request) => request(this.axios, this.basePath));
    }
}


/**
 * DictionaryApi - axios parameter creator
 * @export
 */
export const DictionaryApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         *
         * @summary Возвращает количество объектов
         * @param {string} [query] Фильтр (RSQL) выборки по объекту
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        countDictionary: async (query?: string, fulltext?: string, options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/dictionaries/count`;
            // 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 DictionaryRegistryNsiAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "DictionaryRegistryNsiAuth", [], 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} id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDictionary: async (id: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'id' is not null or undefined
            assertParamExists('getDictionary', 'id', id)
            const localVarPath = `/dictionaries/{id}`
                .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 DictionaryRegistryNsiAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "DictionaryRegistryNsiAuth", [], 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,
            };
        },
        /**
         * Возвращает постраничный список объектов. Разбиение на страницы производиться по 100 записей на страницу и сортировкой по дате изменения или задаётся параметрами запроса.
         * @summary Возвращает список объектов
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {string} [query] Фильтр (RSQL) выборки по объекту
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки
         * @param {string} [sort] Тип сортировки
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        pagingDictionary: async (page?: number, perPage?: number, query?: string, fulltext?: string, sort?: string, options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/dictionaries`;
            // 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 DictionaryRegistryNsiAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "DictionaryRegistryNsiAuth", [], 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;
            }



            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} [query] Фильтр (RSQL) выборки по объекту
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки
         * @param {string} [sort] Тип сортировки
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        searchDictionary: async (query?: string, fulltext?: string, sort?: string, options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/dictionaries/records`;
            // 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 DictionaryRegistryNsiAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "DictionaryRegistryNsiAuth", [], configuration)

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

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

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



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

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

/**
 * DictionaryApi - functional programming interface
 * @export
 */
export const DictionaryApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = DictionaryApiAxiosParamCreator(configuration)
    return {
        /**
         *
         * @summary Возвращает количество объектов
         * @param {string} [query] Фильтр (RSQL) выборки по объекту
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async countDictionary(query?: string, fulltext?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<number>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.countDictionary(query, fulltext, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         *
         * @summary Возвращает объект по его идентификатору
         * @param {string} id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getDictionary(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Dictionary>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getDictionary(id, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Возвращает постраничный список объектов. Разбиение на страницы производиться по 100 записей на страницу и сортировкой по дате изменения или задаётся параметрами запроса.
         * @summary Возвращает список объектов
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {string} [query] Фильтр (RSQL) выборки по объекту
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки
         * @param {string} [sort] Тип сортировки
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pagingDictionary(page?: number, perPage?: number, query?: string, fulltext?: string, sort?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.pagingDictionary(page, perPage, query, fulltext, sort, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Возвращает список объектов без пейджинга.
         * @summary Возвращает список объектов
         * @param {string} [query] Фильтр (RSQL) выборки по объекту
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки
         * @param {string} [sort] Тип сортировки
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async searchDictionary(query?: string, fulltext?: string, sort?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Dictionary>>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.searchDictionary(query, fulltext, sort, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * DictionaryApi - factory interface
 * @export
 */
export const DictionaryApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = DictionaryApiFp(configuration)
    return {
        /**
         *
         * @summary Возвращает количество объектов
         * @param {string} [query] Фильтр (RSQL) выборки по объекту
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        countDictionary(query?: string, fulltext?: string, options?: any): AxiosPromise<number> {
            return localVarFp.countDictionary(query, fulltext, options).then((request) => request(axios, basePath));
        },
        /**
         *
         * @summary Возвращает объект по его идентификатору
         * @param {string} id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDictionary(id: string, options?: any): AxiosPromise<Dictionary> {
            return localVarFp.getDictionary(id, options).then((request) => request(axios, basePath));
        },
        /**
         * Возвращает постраничный список объектов. Разбиение на страницы производиться по 100 записей на страницу и сортировкой по дате изменения или задаётся параметрами запроса.
         * @summary Возвращает список объектов
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {string} [query] Фильтр (RSQL) выборки по объекту
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки
         * @param {string} [sort] Тип сортировки
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        pagingDictionary(page?: number, perPage?: number, query?: string, fulltext?: string, sort?: string, options?: any): AxiosPromise<Response> {
            return localVarFp.pagingDictionary(page, perPage, query, fulltext, sort, options).then((request) => request(axios, basePath));
        },
        /**
         * Возвращает список объектов без пейджинга.
         * @summary Возвращает список объектов
         * @param {string} [query] Фильтр (RSQL) выборки по объекту
         * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки
         * @param {string} [sort] Тип сортировки
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        searchDictionary(query?: string, fulltext?: string, sort?: string, options?: any): AxiosPromise<Array<Dictionary>> {
            return localVarFp.searchDictionary(query, fulltext, sort, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * DictionaryApi - object-oriented interface
 * @export
 * @class DictionaryApi
 * @extends {BaseAPI}
 */
export class DictionaryApi extends BaseAPI {
    /**
     *
     * @summary Возвращает количество объектов
     * @param {string} [query] Фильтр (RSQL) выборки по объекту
     * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DictionaryApi
     */
    public countDictionary(query?: string, fulltext?: string, options?: any) {
        return DictionaryApiFp(this.configuration).countDictionary(query, fulltext, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     *
     * @summary Возвращает объект по его идентификатору
     * @param {string} id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DictionaryApi
     */
    public getDictionary(id: string, options?: any) {
        return DictionaryApiFp(this.configuration).getDictionary(id, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Возвращает постраничный список объектов. Разбиение на страницы производиться по 100 записей на страницу и сортировкой по дате изменения или задаётся параметрами запроса.
     * @summary Возвращает список объектов
     * @param {number} [page] Номер страницы
     * @param {number} [perPage] Количество элементов на страницу
     * @param {string} [query] Фильтр (RSQL) выборки по объекту
     * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки
     * @param {string} [sort] Тип сортировки
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DictionaryApi
     */
    public pagingDictionary(page?: number, perPage?: number, query?: string, fulltext?: string, sort?: string, options?: any) {
        return DictionaryApiFp(this.configuration).pagingDictionary(page, perPage, query, fulltext, sort, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Возвращает список объектов без пейджинга.
     * @summary Возвращает список объектов
     * @param {string} [query] Фильтр (RSQL) выборки по объекту
     * @param {string} [fulltext] Фильтр (RSQL) полнотекстовых операторов выборки
     * @param {string} [sort] Тип сортировки
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DictionaryApi
     */
    public searchDictionary(query?: string, fulltext?: string, sort?: string, options?: any) {
        return DictionaryApiFp(this.configuration).searchDictionary(query, fulltext, sort, 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}
         */
        countDocuments1: async (schema: string, query?: string, fulltext?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('countDocuments1', '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 {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        pagingDocuments1: async (schema: string, page?: number, perPage?: number, query?: string, fulltext?: string, sort?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('pagingDocuments1', '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;
            }



            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 countDocuments1(schema: string, query?: string, fulltext?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<number>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.countDocuments1(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 {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pagingDocuments1(schema: string, page?: number, perPage?: number, query?: string, fulltext?: string, sort?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Page>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.pagingDocuments1(schema, page, perPage, query, fulltext, sort, 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}
         */
        countDocuments1(schema: string, query?: string, fulltext?: string, options?: any): AxiosPromise<number> {
            return localVarFp.countDocuments1(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 {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        pagingDocuments1(schema: string, page?: number, perPage?: number, query?: string, fulltext?: string, sort?: string, options?: any): AxiosPromise<Page> {
            return localVarFp.pagingDocuments1(schema, page, perPage, query, fulltext, sort, 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 countDocuments1(schema: string, query?: string, fulltext?: string, options?: any) {
        return DocumentApiFp(this.configuration).countDocuments1(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 {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DocumentApi
     */
    public pagingDocuments1(schema: string, page?: number, perPage?: number, query?: string, fulltext?: string, sort?: string, options?: any) {
        return DocumentApiFp(this.configuration).pagingDocuments1(schema, page, perPage, query, fulltext, sort, 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));
    }
}


/**
 * 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));
    }
}


/**
 * VersioningApi - axios parameter creator
 * @export
 */
export const VersioningApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         *
         * @summary Возвращает документ из выбранной ревизии (версии)
         * @param {string} schema Название схемы документа
         * @param {string} id
         * @param {string} revisionNumber Номер ревизии (версии)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDocumentForRevision: async (schema: string, id: string, revisionNumber: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('getDocumentForRevision', 'schema', schema)
            // verify required parameter 'id' is not null or undefined
            assertParamExists('getDocumentForRevision', 'id', id)
            // verify required parameter 'revisionNumber' is not null or undefined
            assertParamExists('getDocumentForRevision', 'revisionNumber', revisionNumber)
            const localVarPath = `/versioning/{schema}/{id}/revisions/{revisionNumber}`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)))
                .replace(`{${"revisionNumber"}}`, encodeURIComponent(String(revisionNumber)));
            // 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 registryVersioningAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryVersioningAuth", [], 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 {string} id
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getRevisions: async (schema: string, id: string, page?: number, perPage?: number, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('getRevisions', 'schema', schema)
            // verify required parameter 'id' is not null or undefined
            assertParamExists('getRevisions', 'id', id)
            const localVarPath = `/versioning/{schema}/{id}/revisions`
                .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 registryVersioningAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryVersioningAuth", [], configuration)

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

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



            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} id
         * @param {number} from Начало временного диапазона (UnixTime in millis)
         * @param {number} to Конец временного диапазона (UnixTime in millis)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getRevisionsByRange: async (schema: string, id: string, from: number, to: number, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('getRevisionsByRange', 'schema', schema)
            // verify required parameter 'id' is not null or undefined
            assertParamExists('getRevisionsByRange', 'id', id)
            // verify required parameter 'from' is not null or undefined
            assertParamExists('getRevisionsByRange', 'from', from)
            // verify required parameter 'to' is not null or undefined
            assertParamExists('getRevisionsByRange', 'to', to)
            const localVarPath = `/versioning/{schema}/{id}/revisions/range/{from}/{to}`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)))
                .replace(`{${"from"}}`, encodeURIComponent(String(from)))
                .replace(`{${"to"}}`, encodeURIComponent(String(to)));
            // 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 registryVersioningAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryVersioningAuth", [], 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 Удаляет ревизии в заданном промежутке от и до времени created (создания) ревизии
         * @param {string} schema Название схемы документа
         * @param {number} fromUnixTime С какого UnixTime (в миллисекундах) времени создания ревизии начать удаление
         * @param {number} toUnixTime По какое UnixTime (в миллисекундах) время создания ревизии закончить удаление
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        recoverRevision: async (schema: string, fromUnixTime: number, toUnixTime: number, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('recoverRevision', 'schema', schema)
            // verify required parameter 'fromUnixTime' is not null or undefined
            assertParamExists('recoverRevision', 'fromUnixTime', fromUnixTime)
            // verify required parameter 'toUnixTime' is not null or undefined
            assertParamExists('recoverRevision', 'toUnixTime', toUnixTime)
            const localVarPath = `/versioning/{schema}/cleanup`
                .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 registryVersioningAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryVersioningAuth", [], configuration)

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

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



            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} id
         * @param {string} revision Номер ревизии (версии)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        recoverRevision1: async (schema: string, id: string, revision: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'schema' is not null or undefined
            assertParamExists('recoverRevision1', 'schema', schema)
            // verify required parameter 'id' is not null or undefined
            assertParamExists('recoverRevision1', 'id', id)
            // verify required parameter 'revision' is not null or undefined
            assertParamExists('recoverRevision1', 'revision', revision)
            const localVarPath = `/versioning/{schema}/{id}/recover/{revision}`
                .replace(`{${"schema"}}`, encodeURIComponent(String(schema)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)))
                .replace(`{${"revision"}}`, encodeURIComponent(String(revision)));
            // 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 registryVersioningAuth required
            // oauth required
            await setOAuthToObject(localVarHeaderParameter, "registryVersioningAuth", [], 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,
            };
        },
    }
};

/**
 * VersioningApi - functional programming interface
 * @export
 */
export const VersioningApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = VersioningApiAxiosParamCreator(configuration)
    return {
        /**
         *
         * @summary Возвращает документ из выбранной ревизии (версии)
         * @param {string} schema Название схемы документа
         * @param {string} id
         * @param {string} revisionNumber Номер ревизии (версии)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getDocumentForRevision(schema: string, id: string, revisionNumber: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Document>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getDocumentForRevision(schema, id, revisionNumber, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         *
         * @summary Возвращает ревизии (версии) для указанного документа
         * @param {string} schema Название схемы документа
         * @param {string} id
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getRevisions(schema: string, id: string, page?: number, perPage?: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageOfRevision>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getRevisions(schema, id, page, perPage, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         *
         * @summary Возвращает ревизии (версии) для указанного документа в указанном диапазоне
         * @param {string} schema Название схемы документа
         * @param {string} id
         * @param {number} from Начало временного диапазона (UnixTime in millis)
         * @param {number} to Конец временного диапазона (UnixTime in millis)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getRevisionsByRange(schema: string, id: string, from: number, to: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Revision>>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getRevisionsByRange(schema, id, from, to, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         *
         * @summary Удаляет ревизии в заданном промежутке от и до времени created (создания) ревизии
         * @param {string} schema Название схемы документа
         * @param {number} fromUnixTime С какого UnixTime (в миллисекундах) времени создания ревизии начать удаление
         * @param {number} toUnixTime По какое UnixTime (в миллисекундах) время создания ревизии закончить удаление
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async recoverRevision(schema: string, fromUnixTime: number, toUnixTime: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.recoverRevision(schema, fromUnixTime, toUnixTime, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         *
         * @summary Восстанавливает документ из указанной ревизии
         * @param {string} schema Название схемы документа
         * @param {string} id
         * @param {string} revision Номер ревизии (версии)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async recoverRevision1(schema: string, id: string, revision: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ModifyResponse>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.recoverRevision1(schema, id, revision, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * VersioningApi - factory interface
 * @export
 */
export const VersioningApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = VersioningApiFp(configuration)
    return {
        /**
         *
         * @summary Возвращает документ из выбранной ревизии (версии)
         * @param {string} schema Название схемы документа
         * @param {string} id
         * @param {string} revisionNumber Номер ревизии (версии)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDocumentForRevision(schema: string, id: string, revisionNumber: string, options?: any): AxiosPromise<Document> {
            return localVarFp.getDocumentForRevision(schema, id, revisionNumber, options).then((request) => request(axios, basePath));
        },
        /**
         *
         * @summary Возвращает ревизии (версии) для указанного документа
         * @param {string} schema Название схемы документа
         * @param {string} id
         * @param {number} [page] Номер страницы
         * @param {number} [perPage] Количество элементов на страницу
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getRevisions(schema: string, id: string, page?: number, perPage?: number, options?: any): AxiosPromise<PageOfRevision> {
            return localVarFp.getRevisions(schema, id, page, perPage, options).then((request) => request(axios, basePath));
        },
        /**
         *
         * @summary Возвращает ревизии (версии) для указанного документа в указанном диапазоне
         * @param {string} schema Название схемы документа
         * @param {string} id
         * @param {number} from Начало временного диапазона (UnixTime in millis)
         * @param {number} to Конец временного диапазона (UnixTime in millis)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getRevisionsByRange(schema: string, id: string, from: number, to: number, options?: any): AxiosPromise<Array<Revision>> {
            return localVarFp.getRevisionsByRange(schema, id, from, to, options).then((request) => request(axios, basePath));
        },
        /**
         *
         * @summary Удаляет ревизии в заданном промежутке от и до времени created (создания) ревизии
         * @param {string} schema Название схемы документа
         * @param {number} fromUnixTime С какого UnixTime (в миллисекундах) времени создания ревизии начать удаление
         * @param {number} toUnixTime По какое UnixTime (в миллисекундах) время создания ревизии закончить удаление
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        recoverRevision(schema: string, fromUnixTime: number, toUnixTime: number, options?: any): AxiosPromise<Response> {
            return localVarFp.recoverRevision(schema, fromUnixTime, toUnixTime, options).then((request) => request(axios, basePath));
        },
        /**
         *
         * @summary Восстанавливает документ из указанной ревизии
         * @param {string} schema Название схемы документа
         * @param {string} id
         * @param {string} revision Номер ревизии (версии)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        recoverRevision1(schema: string, id: string, revision: string, options?: any): AxiosPromise<ModifyResponse> {
            return localVarFp.recoverRevision1(schema, id, revision, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * VersioningApi - object-oriented interface
 * @export
 * @class VersioningApi
 * @extends {BaseAPI}
 */
export class VersioningApi extends BaseAPI {
    /**
     *
     * @summary Возвращает документ из выбранной ревизии (версии)
     * @param {string} schema Название схемы документа
     * @param {string} id
     * @param {string} revisionNumber Номер ревизии (версии)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof VersioningApi
     */
    public getDocumentForRevision(schema: string, id: string, revisionNumber: string, options?: any) {
        return VersioningApiFp(this.configuration).getDocumentForRevision(schema, id, revisionNumber, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     *
     * @summary Возвращает ревизии (версии) для указанного документа
     * @param {string} schema Название схемы документа
     * @param {string} id
     * @param {number} [page] Номер страницы
     * @param {number} [perPage] Количество элементов на страницу
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof VersioningApi
     */
    public getRevisions(schema: string, id: string, page?: number, perPage?: number, options?: any) {
        return VersioningApiFp(this.configuration).getRevisions(schema, id, page, perPage, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     *
     * @summary Возвращает ревизии (версии) для указанного документа в указанном диапазоне
     * @param {string} schema Название схемы документа
     * @param {string} id
     * @param {number} from Начало временного диапазона (UnixTime in millis)
     * @param {number} to Конец временного диапазона (UnixTime in millis)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof VersioningApi
     */
    public getRevisionsByRange(schema: string, id: string, from: number, to: number, options?: any) {
        return VersioningApiFp(this.configuration).getRevisionsByRange(schema, id, from, to, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     *
     * @summary Удаляет ревизии в заданном промежутке от и до времени created (создания) ревизии
     * @param {string} schema Название схемы документа
     * @param {number} fromUnixTime С какого UnixTime (в миллисекундах) времени создания ревизии начать удаление
     * @param {number} toUnixTime По какое UnixTime (в миллисекундах) время создания ревизии закончить удаление
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof VersioningApi
     */
    public recoverRevision(schema: string, fromUnixTime: number, toUnixTime: number, options?: any) {
        return VersioningApiFp(this.configuration).recoverRevision(schema, fromUnixTime, toUnixTime, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     *
     * @summary Восстанавливает документ из указанной ревизии
     * @param {string} schema Название схемы документа
     * @param {string} id
     * @param {string} revision Номер ревизии (версии)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof VersioningApi
     */
    public recoverRevision1(schema: string, id: string, revision: string, options?: any) {
        return VersioningApiFp(this.configuration).recoverRevision1(schema, id, revision, options).then((request) => request(this.axios, this.basePath));
    }
}


