/* tslint:disable */
/* eslint-disable */
/**
 * referenceinformationervice
 * Сервис для работы со справочной информацией
 *
 * The version of the OpenAPI document: 2.9.4 (1)
 * 
 *
 * 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 ArticleDto
 */
export interface ArticleDto {
    /**
     * Название страницы
     * @type {string}
     * @memberof ArticleDto
     */
    title?: string;
    /**
     * Описание страницы
     * @type {string}
     * @memberof ArticleDto
     */
    description?: string;
    /**
     * Содержимое страницы
     * @type {string}
     * @memberof ArticleDto
     */
    content?: string;
    /**
     * Порядок сортировки
     * @type {number}
     * @memberof ArticleDto
     */
    sortOrder?: number;
    /**
     * Идентификатор родительского элемента
     * @type {string}
     * @memberof ArticleDto
     */
    parentId?: string;
    /**
     * Идентификатор
     * @type {string}
     * @memberof ArticleDto
     */
    id?: string;
}
/**
 * 
 * @export
 * @interface ArticleDtoAllOf
 */
export interface ArticleDtoAllOf {
    /**
     * Идентификатор
     * @type {string}
     * @memberof ArticleDtoAllOf
     */
    id?: string;
}
/**
 * 
 * @export
 * @interface ArticleWithoutParentDto
 */
export interface ArticleWithoutParentDto {
    /**
     * Название страницы
     * @type {string}
     * @memberof ArticleWithoutParentDto
     */
    title?: string;
    /**
     * Описание страницы
     * @type {string}
     * @memberof ArticleWithoutParentDto
     */
    description?: string;
    /**
     * Содержимое страницы
     * @type {string}
     * @memberof ArticleWithoutParentDto
     */
    content?: string;
    /**
     * Порядок сортировки
     * @type {number}
     * @memberof ArticleWithoutParentDto
     */
    sortOrder?: number;
    /**
     * Идентификатор
     * @type {string}
     * @memberof ArticleWithoutParentDto
     */
    id?: string;
}
/**
 * 
 * @export
 * @interface AttachmentDto
 */
export interface AttachmentDto {
    /**
     * Название файла
     * @type {string}
     * @memberof AttachmentDto
     */
    filename?: string;
    /**
     * Описание файла
     * @type {string}
     * @memberof AttachmentDto
     */
    description?: string;
    /**
     * Идентификатор
     * @type {string}
     * @memberof AttachmentDto
     */
    id?: string;
}
/**
 * 
 * @export
 * @interface BaseArticleDto
 */
export interface BaseArticleDto {
    /**
     * Название страницы
     * @type {string}
     * @memberof BaseArticleDto
     */
    title?: string;
    /**
     * Описание страницы
     * @type {string}
     * @memberof BaseArticleDto
     */
    description?: string;
    /**
     * Содержимое страницы
     * @type {string}
     * @memberof BaseArticleDto
     */
    content?: string;
    /**
     * Порядок сортировки
     * @type {number}
     * @memberof BaseArticleDto
     */
    sortOrder?: number;
}
/**
 * 
 * @export
 * @interface BaseArticleWithParentDto
 */
export interface BaseArticleWithParentDto {
    /**
     * Название страницы
     * @type {string}
     * @memberof BaseArticleWithParentDto
     */
    title?: string;
    /**
     * Описание страницы
     * @type {string}
     * @memberof BaseArticleWithParentDto
     */
    description?: string;
    /**
     * Содержимое страницы
     * @type {string}
     * @memberof BaseArticleWithParentDto
     */
    content?: string;
    /**
     * Порядок сортировки
     * @type {number}
     * @memberof BaseArticleWithParentDto
     */
    sortOrder?: number;
    /**
     * Идентификатор родительского элемента
     * @type {string}
     * @memberof BaseArticleWithParentDto
     */
    parentId?: string;
}
/**
 * 
 * @export
 * @interface BaseArticleWithParentDtoAllOf
 */
export interface BaseArticleWithParentDtoAllOf {
    /**
     * Идентификатор родительского элемента
     * @type {string}
     * @memberof BaseArticleWithParentDtoAllOf
     */
    parentId?: string;
}
/**
 * Структура описания файла BaseAttachmentDto
 * @export
 * @interface BaseAttachmentDto
 */
export interface BaseAttachmentDto {
    /**
     * Название файла
     * @type {string}
     * @memberof BaseAttachmentDto
     */
    filename?: string;
    /**
     * Описание файла
     * @type {string}
     * @memberof BaseAttachmentDto
     */
    description?: string;
}
/**
 * 
 * @export
 * @interface FullArticleDto
 */
export interface FullArticleDto {
    /**
     * Название страницы
     * @type {string}
     * @memberof FullArticleDto
     */
    title?: string;
    /**
     * Описание страницы
     * @type {string}
     * @memberof FullArticleDto
     */
    description?: string;
    /**
     * Содержимое страницы
     * @type {string}
     * @memberof FullArticleDto
     */
    content?: string;
    /**
     * Порядок сортировки
     * @type {number}
     * @memberof FullArticleDto
     */
    sortOrder?: number;
    /**
     * Идентификатор родительского элемента
     * @type {string}
     * @memberof FullArticleDto
     */
    parentId?: string;
    /**
     * Идентификатор
     * @type {string}
     * @memberof FullArticleDto
     */
    id?: string;
    /**
     * Идентификаторы дочерних элементов
     * @type {Array<string>}
     * @memberof FullArticleDto
     */
    childrenId?: Array<string>;
    /**
     * Приложенные файлы
     * @type {Array<FullAttachmentDto>}
     * @memberof FullArticleDto
     */
    files?: Array<FullAttachmentDto>;
}
/**
 * 
 * @export
 * @interface FullArticleDtoAllOf
 */
export interface FullArticleDtoAllOf {
    /**
     * Идентификаторы дочерних элементов
     * @type {Array<string>}
     * @memberof FullArticleDtoAllOf
     */
    childrenId?: Array<string>;
    /**
     * Приложенные файлы
     * @type {Array<FullAttachmentDto>}
     * @memberof FullArticleDtoAllOf
     */
    files?: Array<FullAttachmentDto>;
}
/**
 * 
 * @export
 * @interface FullAttachmentDto
 */
export interface FullAttachmentDto {
    /**
     * Название файла
     * @type {string}
     * @memberof FullAttachmentDto
     */
    filename?: string;
    /**
     * Описание файла
     * @type {string}
     * @memberof FullAttachmentDto
     */
    description?: string;
    /**
     * Идентификатор
     * @type {string}
     * @memberof FullAttachmentDto
     */
    id?: string;
    /**
     * Ссылка на S3
     * @type {string}
     * @memberof FullAttachmentDto
     */
    s3Url?: string;
}
/**
 * 
 * @export
 * @interface FullAttachmentDtoAllOf
 */
export interface FullAttachmentDtoAllOf {
    /**
     * Ссылка на S3
     * @type {string}
     * @memberof FullAttachmentDtoAllOf
     */
    s3Url?: string;
}
/**
 * 
 * @export
 * @interface ModifyResponse
 */
export interface ModifyResponse {
    /**
     * true в случае успешной операции, false в противном
     * @type {boolean}
     * @memberof ModifyResponse
     */
    success?: boolean;
    /**
     * Сообщение об ошибке или об успехе
     * @type {string}
     * @memberof ModifyResponse
     */
    message?: string;
    /**
     * Дата модификации всех Документов в рамках операции
     * @type {number}
     * @memberof ModifyResponse
     */
    modified?: number;
    /**
     * IDs Документов в рамках операции
     * @type {Array<string>}
     * @memberof ModifyResponse
     */
    objectIds?: Array<string>;
}
/**
 * 
 * @export
 * @interface ModifyResponseAllOf
 */
export interface ModifyResponseAllOf {
    /**
     * Дата модификации всех Документов в рамках операции
     * @type {number}
     * @memberof ModifyResponseAllOf
     */
    modified?: number;
    /**
     * IDs Документов в рамках операции
     * @type {Array<string>}
     * @memberof ModifyResponseAllOf
     */
    objectIds?: Array<string>;
}
/**
 * 
 * @export
 * @interface Response
 */
export interface Response {
    /**
     * true в случае успешной операции, false в противном
     * @type {boolean}
     * @memberof Response
     */
    success?: boolean;
    /**
     * Сообщение об ошибке или об успехе
     * @type {string}
     * @memberof Response
     */
    message?: string;
}
/**
 * 
 * @export
 * @interface SortOrderArticleDto
 */
export interface SortOrderArticleDto {
    /**
     * Идентификатор
     * @type {string}
     * @memberof SortOrderArticleDto
     */
    id?: string;
    /**
     * Порядок сортировки
     * @type {number}
     * @memberof SortOrderArticleDto
     */
    sortOrder?: number;
}

/**
 * ArticleApi - axios parameter creator
 * @export
 */
export const ArticleApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * 
         * @summary Создает новый объект
         * @param {BaseArticleWithParentDto} baseArticleWithParentDto Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createArticle: async (baseArticleWithParentDto: BaseArticleWithParentDto, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'baseArticleWithParentDto' is not null or undefined
            assertParamExists('createArticle', 'baseArticleWithParentDto', baseArticleWithParentDto)
            const localVarPath = `/article`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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


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

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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Удаляет объект по его идентификатору
         * @param {Array<string>} requestBody ID объектов на удаление
         * @param {string} [kILL] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteArticle: async (requestBody: Array<string>, kILL?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'requestBody' is not null or undefined
            assertParamExists('deleteArticle', 'requestBody', requestBody)
            const localVarPath = `/article`;
            // 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;

            if (kILL !== undefined && kILL !== null) {
                localVarHeaderParameter['KILL'] = String(kILL);
            }


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

            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} id 
         * @param {string} [expand] Расширение объекта по его ссылкам
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getArticle: async (id: string, expand?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'id' is not null or undefined
            assertParamExists('getArticle', 'id', id)
            const localVarPath = `/article/{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;

            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 {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        hierarchy: async (options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/article/hierarchy`;
            // 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,
            };
        },
        /**
         * Возвращает список без пейджинга.
         * @summary Возвращает все записи
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listArticle: async (options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/article/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;


    
            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 {ArticleDto} articleDto Изменяемый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateArticle: async (articleDto: ArticleDto, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'articleDto' is not null or undefined
            assertParamExists('updateArticle', 'articleDto', articleDto)
            const localVarPath = `/article`;
            // 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;


    
            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(articleDto, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Изменяет порядок сортировки объектов
         * @param {Array<SortOrderArticleDto>} sortOrderArticleDto Изменяемые объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateArticleSortOrder: async (sortOrderArticleDto: Array<SortOrderArticleDto>, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'sortOrderArticleDto' is not null or undefined
            assertParamExists('updateArticleSortOrder', 'sortOrderArticleDto', sortOrderArticleDto)
            const localVarPath = `/article/sortOrder`;
            // 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;


    
            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(sortOrderArticleDto, localVarRequestOptions, configuration)

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

/**
 * ArticleApi - functional programming interface
 * @export
 */
export const ArticleApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = ArticleApiAxiosParamCreator(configuration)
    return {
        /**
         * 
         * @summary Создает новый объект
         * @param {BaseArticleWithParentDto} baseArticleWithParentDto Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async createArticle(baseArticleWithParentDto: BaseArticleWithParentDto, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ModifyResponse>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.createArticle(baseArticleWithParentDto, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Удаляет объект по его идентификатору
         * @param {Array<string>} requestBody ID объектов на удаление
         * @param {string} [kILL] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async deleteArticle(requestBody: Array<string>, kILL?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.deleteArticle(requestBody, kILL, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Возвращает объект по его идентификатору
         * @param {string} id 
         * @param {string} [expand] Расширение объекта по его ссылкам
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getArticle(id: string, expand?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<FullArticleDto>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getArticle(id, expand, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Возвращает упрощённую структуру для построения иерархии
         * @summary Возвращает иерархию статей
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async hierarchy(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<ArticleWithoutParentDto>>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.hierarchy(options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Возвращает список без пейджинга.
         * @summary Возвращает все записи
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async listArticle(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<ArticleWithoutParentDto>>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.listArticle(options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Изменяет объект
         * @param {ArticleDto} articleDto Изменяемый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async updateArticle(articleDto: ArticleDto, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ModifyResponse>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.updateArticle(articleDto, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Изменяет порядок сортировки объектов
         * @param {Array<SortOrderArticleDto>} sortOrderArticleDto Изменяемые объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async updateArticleSortOrder(sortOrderArticleDto: Array<SortOrderArticleDto>, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ModifyResponse>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.updateArticleSortOrder(sortOrderArticleDto, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * ArticleApi - factory interface
 * @export
 */
export const ArticleApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = ArticleApiFp(configuration)
    return {
        /**
         * 
         * @summary Создает новый объект
         * @param {BaseArticleWithParentDto} baseArticleWithParentDto Новый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createArticle(baseArticleWithParentDto: BaseArticleWithParentDto, options?: any): AxiosPromise<ModifyResponse> {
            return localVarFp.createArticle(baseArticleWithParentDto, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Удаляет объект по его идентификатору
         * @param {Array<string>} requestBody ID объектов на удаление
         * @param {string} [kILL] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteArticle(requestBody: Array<string>, kILL?: string, options?: any): AxiosPromise<Response> {
            return localVarFp.deleteArticle(requestBody, kILL, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Возвращает объект по его идентификатору
         * @param {string} id 
         * @param {string} [expand] Расширение объекта по его ссылкам
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getArticle(id: string, expand?: string, options?: any): AxiosPromise<FullArticleDto> {
            return localVarFp.getArticle(id, expand, options).then((request) => request(axios, basePath));
        },
        /**
         * Возвращает упрощённую структуру для построения иерархии
         * @summary Возвращает иерархию статей
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        hierarchy(options?: any): AxiosPromise<Array<ArticleWithoutParentDto>> {
            return localVarFp.hierarchy(options).then((request) => request(axios, basePath));
        },
        /**
         * Возвращает список без пейджинга.
         * @summary Возвращает все записи
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listArticle(options?: any): AxiosPromise<Array<ArticleWithoutParentDto>> {
            return localVarFp.listArticle(options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Изменяет объект
         * @param {ArticleDto} articleDto Изменяемый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateArticle(articleDto: ArticleDto, options?: any): AxiosPromise<ModifyResponse> {
            return localVarFp.updateArticle(articleDto, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Изменяет порядок сортировки объектов
         * @param {Array<SortOrderArticleDto>} sortOrderArticleDto Изменяемые объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateArticleSortOrder(sortOrderArticleDto: Array<SortOrderArticleDto>, options?: any): AxiosPromise<ModifyResponse> {
            return localVarFp.updateArticleSortOrder(sortOrderArticleDto, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * ArticleApi - object-oriented interface
 * @export
 * @class ArticleApi
 * @extends {BaseAPI}
 */
export class ArticleApi extends BaseAPI {
    /**
     * 
     * @summary Создает новый объект
     * @param {BaseArticleWithParentDto} baseArticleWithParentDto Новый объект
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ArticleApi
     */
    public createArticle(baseArticleWithParentDto: BaseArticleWithParentDto, options?: any) {
        return ArticleApiFp(this.configuration).createArticle(baseArticleWithParentDto, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Удаляет объект по его идентификатору
     * @param {Array<string>} requestBody ID объектов на удаление
     * @param {string} [kILL] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ArticleApi
     */
    public deleteArticle(requestBody: Array<string>, kILL?: string, options?: any) {
        return ArticleApiFp(this.configuration).deleteArticle(requestBody, kILL, options).then((request) => request(this.axios, this.basePath));
    }

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

    /**
     * Возвращает упрощённую структуру для построения иерархии
     * @summary Возвращает иерархию статей
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ArticleApi
     */
    public hierarchy(options?: any) {
        return ArticleApiFp(this.configuration).hierarchy(options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Возвращает список без пейджинга.
     * @summary Возвращает все записи
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ArticleApi
     */
    public listArticle(options?: any) {
        return ArticleApiFp(this.configuration).listArticle(options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Изменяет объект
     * @param {ArticleDto} articleDto Изменяемый объект
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ArticleApi
     */
    public updateArticle(articleDto: ArticleDto, options?: any) {
        return ArticleApiFp(this.configuration).updateArticle(articleDto, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Изменяет порядок сортировки объектов
     * @param {Array<SortOrderArticleDto>} sortOrderArticleDto Изменяемые объект
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ArticleApi
     */
    public updateArticleSortOrder(sortOrderArticleDto: Array<SortOrderArticleDto>, options?: any) {
        return ArticleApiFp(this.configuration).updateArticleSortOrder(sortOrderArticleDto, options).then((request) => request(this.axios, this.basePath));
    }
}


/**
 * AttachmentApi - axios parameter creator
 * @export
 */
export const AttachmentApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * 
         * @summary Создаёт вложенный файл
         * @param {string} [articleId] Идентификатор статьи
         * @param {string} [filename] Название файла
         * @param {string} [description] Описание файла
         * @param {any} [file] Файл
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        create: async (articleId?: string, filename?: string, description?: string, file?: any, options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/attachment/create`;
            // 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;
            const localVarFormParams = new ((configuration && configuration.formDataCtor) || FormData)();


            if (articleId !== undefined) { 
                localVarFormParams.append('articleId', articleId as any);
            }
    
            if (filename !== undefined) { 
                localVarFormParams.append('filename', filename as any);
            }
    
            if (description !== undefined) { 
                localVarFormParams.append('description', description as any);
            }
    
            if (file !== undefined) { 
                localVarFormParams.append('file', file as any);
            }
    
    
            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';
    
            setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Удаляет объект по его идентификатору
         * @param {string} body ID объекта на удаление
         * @param {string} [kILL] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteAttachment: async (body: string, kILL?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'body' is not null or undefined
            assertParamExists('deleteAttachment', 'body', body)
            const localVarPath = `/attachment`;
            // 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;

            if (kILL !== undefined && kILL !== null) {
                localVarHeaderParameter['KILL'] = String(kILL);
            }


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

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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Возвращает объект по его идентификатору
         * @param {string} id 
         * @param {string} [expand] Расширение объекта по его ссылкам
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAttachment: async (id: string, expand?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'id' is not null or undefined
            assertParamExists('getAttachment', 'id', id)
            const localVarPath = `/attachment/{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;

            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} id 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAttachmentContent: async (id: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'id' is not null or undefined
            assertParamExists('getAttachmentContent', 'id', id)
            const localVarPath = `/attachment/content/{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;


    
            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 {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAttachment: async (options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/attachment/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;


    
            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 {AttachmentDto} attachmentDto Изменяемый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateAttachment: async (attachmentDto: AttachmentDto, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'attachmentDto' is not null or undefined
            assertParamExists('updateAttachment', 'attachmentDto', attachmentDto)
            const localVarPath = `/attachment`;
            // 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;


    
            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(attachmentDto, localVarRequestOptions, configuration)

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

/**
 * AttachmentApi - functional programming interface
 * @export
 */
export const AttachmentApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = AttachmentApiAxiosParamCreator(configuration)
    return {
        /**
         * 
         * @summary Создаёт вложенный файл
         * @param {string} [articleId] Идентификатор статьи
         * @param {string} [filename] Название файла
         * @param {string} [description] Описание файла
         * @param {any} [file] Файл
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async create(articleId?: string, filename?: string, description?: string, file?: any, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.create(articleId, filename, description, file, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Удаляет объект по его идентификатору
         * @param {string} body ID объекта на удаление
         * @param {string} [kILL] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async deleteAttachment(body: string, kILL?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.deleteAttachment(body, kILL, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Возвращает объект по его идентификатору
         * @param {string} id 
         * @param {string} [expand] Расширение объекта по его ссылкам
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getAttachment(id: string, expand?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AttachmentDto>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getAttachment(id, expand, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Возвращает содержимое вложения по его идентификатору
         * @param {string} id 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getAttachmentContent(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<object>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getAttachmentContent(id, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Возвращает список без пейджинга.
         * @summary Возвращает все записи
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async listAttachment(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<FullAttachmentDto>>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.listAttachment(options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Изменяет объект
         * @param {AttachmentDto} attachmentDto Изменяемый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async updateAttachment(attachmentDto: AttachmentDto, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ModifyResponse>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.updateAttachment(attachmentDto, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * AttachmentApi - factory interface
 * @export
 */
export const AttachmentApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = AttachmentApiFp(configuration)
    return {
        /**
         * 
         * @summary Создаёт вложенный файл
         * @param {string} [articleId] Идентификатор статьи
         * @param {string} [filename] Название файла
         * @param {string} [description] Описание файла
         * @param {any} [file] Файл
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        create(articleId?: string, filename?: string, description?: string, file?: any, options?: any): AxiosPromise<Response> {
            return localVarFp.create(articleId, filename, description, file, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Удаляет объект по его идентификатору
         * @param {string} body ID объекта на удаление
         * @param {string} [kILL] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteAttachment(body: string, kILL?: string, options?: any): AxiosPromise<Response> {
            return localVarFp.deleteAttachment(body, kILL, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Возвращает объект по его идентификатору
         * @param {string} id 
         * @param {string} [expand] Расширение объекта по его ссылкам
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAttachment(id: string, expand?: string, options?: any): AxiosPromise<AttachmentDto> {
            return localVarFp.getAttachment(id, expand, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Возвращает содержимое вложения по его идентификатору
         * @param {string} id 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAttachmentContent(id: string, options?: any): AxiosPromise<object> {
            return localVarFp.getAttachmentContent(id, options).then((request) => request(axios, basePath));
        },
        /**
         * Возвращает список без пейджинга.
         * @summary Возвращает все записи
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAttachment(options?: any): AxiosPromise<Array<FullAttachmentDto>> {
            return localVarFp.listAttachment(options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Изменяет объект
         * @param {AttachmentDto} attachmentDto Изменяемый объект
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateAttachment(attachmentDto: AttachmentDto, options?: any): AxiosPromise<ModifyResponse> {
            return localVarFp.updateAttachment(attachmentDto, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * AttachmentApi - object-oriented interface
 * @export
 * @class AttachmentApi
 * @extends {BaseAPI}
 */
export class AttachmentApi extends BaseAPI {
    /**
     * 
     * @summary Создаёт вложенный файл
     * @param {string} [articleId] Идентификатор статьи
     * @param {string} [filename] Название файла
     * @param {string} [description] Описание файла
     * @param {any} [file] Файл
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AttachmentApi
     */
    public create(articleId?: string, filename?: string, description?: string, file?: any, options?: any) {
        return AttachmentApiFp(this.configuration).create(articleId, filename, description, file, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Удаляет объект по его идентификатору
     * @param {string} body ID объекта на удаление
     * @param {string} [kILL] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AttachmentApi
     */
    public deleteAttachment(body: string, kILL?: string, options?: any) {
        return AttachmentApiFp(this.configuration).deleteAttachment(body, kILL, options).then((request) => request(this.axios, this.basePath));
    }

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

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

    /**
     * Возвращает список без пейджинга.
     * @summary Возвращает все записи
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AttachmentApi
     */
    public listAttachment(options?: any) {
        return AttachmentApiFp(this.configuration).listAttachment(options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Изменяет объект
     * @param {AttachmentDto} attachmentDto Изменяемый объект
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AttachmentApi
     */
    public updateAttachment(attachmentDto: AttachmentDto, options?: any) {
        return AttachmentApiFp(this.configuration).updateAttachment(attachmentDto, options).then((request) => request(this.axios, this.basePath));
    }
}


