/* tslint:disable */
/* eslint-disable */
/**
 * mz-mock-adapter
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: v1
 * 
 *
 * 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 GeneratedXmlDTO
 */
export interface GeneratedXmlDTO {
    /**
     * 
     * @type {Array<string>}
     * @memberof GeneratedXmlDTO
     */
    petitions: Array<string>;
}
/**
 * 
 * @export
 * @enum {string}
 */

export enum HttpStatus {
    Continue = 'CONTINUE',
    SwitchingProtocols = 'SWITCHING_PROTOCOLS',
    Processing = 'PROCESSING',
    Ok = 'OK',
    Created = 'CREATED',
    Accepted = 'ACCEPTED',
    NonAuthoritativeInformation = 'NON_AUTHORITATIVE_INFORMATION',
    NoContent = 'NO_CONTENT',
    ResetContent = 'RESET_CONTENT',
    PartialContent = 'PARTIAL_CONTENT',
    MultiStatus = 'MULTI_STATUS',
    AlreadyImported = 'ALREADY_IMPORTED',
    ImUsed = 'IM_USED',
    MultipleChoices = 'MULTIPLE_CHOICES',
    MovedPermanently = 'MOVED_PERMANENTLY',
    Found = 'FOUND',
    SeeOther = 'SEE_OTHER',
    NotModified = 'NOT_MODIFIED',
    UseProxy = 'USE_PROXY',
    SwitchProxy = 'SWITCH_PROXY',
    TemporaryRedirect = 'TEMPORARY_REDIRECT',
    PermanentRedirect = 'PERMANENT_REDIRECT',
    BadRequest = 'BAD_REQUEST',
    Unauthorized = 'UNAUTHORIZED',
    PaymentRequired = 'PAYMENT_REQUIRED',
    Forbidden = 'FORBIDDEN',
    NotFound = 'NOT_FOUND',
    MethodNotAllowed = 'METHOD_NOT_ALLOWED',
    NotAcceptable = 'NOT_ACCEPTABLE',
    ProxyAuthenticationRequired = 'PROXY_AUTHENTICATION_REQUIRED',
    RequestTimeout = 'REQUEST_TIMEOUT',
    Conflict = 'CONFLICT',
    Gone = 'GONE',
    LengthRequired = 'LENGTH_REQUIRED',
    PreconditionFailed = 'PRECONDITION_FAILED',
    RequestEntityTooLarge = 'REQUEST_ENTITY_TOO_LARGE',
    RequestUriTooLong = 'REQUEST_URI_TOO_LONG',
    UnsupportedMediaType = 'UNSUPPORTED_MEDIA_TYPE',
    RequestedRangeNotSatisfiable = 'REQUESTED_RANGE_NOT_SATISFIABLE',
    ExpectationFailed = 'EXPECTATION_FAILED',
    IAmATeapot = 'I_AM_A_TEAPOT',
    EnhanceYourCalm = 'ENHANCE_YOUR_CALM',
    UnprocessableEntity = 'UNPROCESSABLE_ENTITY',
    Locked = 'LOCKED',
    FailedDependency = 'FAILED_DEPENDENCY',
    UnorderedCollection = 'UNORDERED_COLLECTION',
    UpgradeRequired = 'UPGRADE_REQUIRED',
    PreconditionRequired = 'PRECONDITION_REQUIRED',
    TooManyRequests = 'TOO_MANY_REQUESTS',
    RequestHeaderFieldsTooLarge = 'REQUEST_HEADER_FIELDS_TOO_LARGE',
    NoResponse = 'NO_RESPONSE',
    BlockedByWindowsParentalControls = 'BLOCKED_BY_WINDOWS_PARENTAL_CONTROLS',
    UnavailableForLegalReasons = 'UNAVAILABLE_FOR_LEGAL_REASONS',
    RequestHeaderTooLarge = 'REQUEST_HEADER_TOO_LARGE',
    InternalServerError = 'INTERNAL_SERVER_ERROR',
    NotImplemented = 'NOT_IMPLEMENTED',
    BadGateway = 'BAD_GATEWAY',
    ServiceUnavailable = 'SERVICE_UNAVAILABLE',
    GatewayTimeout = 'GATEWAY_TIMEOUT',
    HttpVersionNotSupported = 'HTTP_VERSION_NOT_SUPPORTED',
    VariantAlsoNegotiates = 'VARIANT_ALSO_NEGOTIATES',
    InsufficientStorage = 'INSUFFICIENT_STORAGE',
    LoopDetected = 'LOOP_DETECTED',
    BandwidthLimitExceeded = 'BANDWIDTH_LIMIT_EXCEEDED',
    NotExtended = 'NOT_EXTENDED',
    NetworkAuthenticationRequired = 'NETWORK_AUTHENTICATION_REQUIRED',
    ConnectionTimedOut = 'CONNECTION_TIMED_OUT'
}

/**
 * 
 * @export
 * @interface Interagency
 */
export interface Interagency {
    /**
     * 
     * @type {MockRequest}
     * @memberof Interagency
     */
    mockRequest: MockRequest;
    /**
     * 
     * @type {MockResponse}
     * @memberof Interagency
     */
    mockResponse: MockResponse;
}
/**
 * 
 * @export
 * @interface MockEntryBean
 */
export interface MockEntryBean {
    /**
     * 
     * @type {string}
     * @memberof MockEntryBean
     */
    clazz?: string;
    /**
     * 
     * @type {string}
     * @memberof MockEntryBean
     */
    code?: string;
    /**
     * 
     * @type {string}
     * @memberof MockEntryBean
     */
    name?: string;
    /**
     * 
     * @type {{ [key: string]: string; }}
     * @memberof MockEntryBean
     */
    headers?: { [key: string]: string; };
    /**
     * 
     * @type {string}
     * @memberof MockEntryBean
     */
    response?: string;
    /**
     * 
     * @type {string}
     * @memberof MockEntryBean
     */
    xPath?: string;
    /**
     * 
     * @type {string}
     * @memberof MockEntryBean
     */
    transformer?: string;
    /**
     * 
     * @type {{ [key: string]: string; }}
     * @memberof MockEntryBean
     */
    additionalFiles?: { [key: string]: string; };
    /**
     * 
     * @type {boolean}
     * @memberof MockEntryBean
     */
    manual?: boolean;
}
/**
 * 
 * @export
 * @interface MockRequest
 */
export interface MockRequest {
    /**
     * 
     * @type {{ [key: string]: string; }}
     * @memberof MockRequest
     */
    headers: { [key: string]: string; };
    /**
     * 
     * @type {string}
     * @memberof MockRequest
     */
    requestMsg: string;
}
/**
 * 
 * @export
 * @interface MockResponse
 */
export interface MockResponse {
    /**
     * 
     * @type {string}
     * @memberof MockResponse
     */
    clazz?: string;
    /**
     * 
     * @type {string}
     * @memberof MockResponse
     */
    code?: string;
    /**
     * 
     * @type {string}
     * @memberof MockResponse
     */
    responseMsg?: string;
}
/**
 * 
 * @export
 * @interface PetitionDTO
 */
export interface PetitionDTO {
    /**
     * 
     * @type {string}
     * @memberof PetitionDTO
     */
    traceID: string;
    /**
     * 
     * @type {boolean}
     * @memberof PetitionDTO
     */
    validationStatus: boolean;
    /**
     * 
     * @type {string}
     * @memberof PetitionDTO
     */
    stage: string;
    /**
     * 
     * @type {{ [key: string]: object; }}
     * @memberof PetitionDTO
     */
    endData: { [key: string]: object; };
}

/**
 * InteragencyApi - axios parameter creator
 * @export
 */
export const InteragencyApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Получить все запросы в рамках одного заявления
         * @summary Получить все запросы в рамках одного заявления
         * @param {string} traceId - параметр, объединяющий все запросы в рамках одного заявления
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getInteragency: async (traceId: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'traceId' is not null or undefined
            assertParamExists('getInteragency', 'traceId', traceId)
            const localVarPath = `/interagency`;
            // 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 (traceId !== undefined) {
                localVarQueryParameter['traceId'] = traceId;
            }


    
            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} traceId - параметр, объединяющий все запросы в рамках одного заявления
         * @param {string} messageId - id запроса и ответа (совпадает)
         * @param {any} response - файл ответа
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadResponse: async (traceId: string, messageId: string, response: any, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'traceId' is not null or undefined
            assertParamExists('loadResponse', 'traceId', traceId)
            // verify required parameter 'messageId' is not null or undefined
            assertParamExists('loadResponse', 'messageId', messageId)
            // verify required parameter 'response' is not null or undefined
            assertParamExists('loadResponse', 'response', response)
            const localVarPath = `/interagency/load-response`;
            // 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;

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

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

            if (response !== undefined && response !== null) {
                localVarHeaderParameter['response'] = String(JSON.stringify(response));
            }


    
            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} traceId - параметр, объединяющий все запросы в рамках одного заявления
         * @param {string} messageId - id запроса и ответа (совпадает)
         * @param {string} code - код (наименование) мока
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        replaceResponse: async (traceId: string, messageId: string, code: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'traceId' is not null or undefined
            assertParamExists('replaceResponse', 'traceId', traceId)
            // verify required parameter 'messageId' is not null or undefined
            assertParamExists('replaceResponse', 'messageId', messageId)
            // verify required parameter 'code' is not null or undefined
            assertParamExists('replaceResponse', 'code', code)
            const localVarPath = `/interagency/replace-response`;
            // 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;

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

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

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


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

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

/**
 * InteragencyApi - functional programming interface
 * @export
 */
export const InteragencyApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = InteragencyApiAxiosParamCreator(configuration)
    return {
        /**
         * Получить все запросы в рамках одного заявления
         * @summary Получить все запросы в рамках одного заявления
         * @param {string} traceId - параметр, объединяющий все запросы в рамках одного заявления
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getInteragency(traceId: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<{ [key: string]: Interagency; }>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getInteragency(traceId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Заменить мок-ответ на подгружаемый из файла
         * @summary Заменить мок-ответ на подгружаемый из файла
         * @param {string} traceId - параметр, объединяющий все запросы в рамках одного заявления
         * @param {string} messageId - id запроса и ответа (совпадает)
         * @param {any} response - файл ответа
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async loadResponse(traceId: string, messageId: string, response: any, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<string>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.loadResponse(traceId, messageId, response, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Заменить мок-ответ на другой выбранный из базы
         * @summary Заменить мок-ответ на другой выбранный из базы
         * @param {string} traceId - параметр, объединяющий все запросы в рамках одного заявления
         * @param {string} messageId - id запроса и ответа (совпадает)
         * @param {string} code - код (наименование) мока
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async replaceResponse(traceId: string, messageId: string, code: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<string>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.replaceResponse(traceId, messageId, code, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * InteragencyApi - factory interface
 * @export
 */
export const InteragencyApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = InteragencyApiFp(configuration)
    return {
        /**
         * Получить все запросы в рамках одного заявления
         * @summary Получить все запросы в рамках одного заявления
         * @param {string} traceId - параметр, объединяющий все запросы в рамках одного заявления
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getInteragency(traceId: string, options?: any): AxiosPromise<{ [key: string]: Interagency; }> {
            return localVarFp.getInteragency(traceId, options).then((request) => request(axios, basePath));
        },
        /**
         * Заменить мок-ответ на подгружаемый из файла
         * @summary Заменить мок-ответ на подгружаемый из файла
         * @param {string} traceId - параметр, объединяющий все запросы в рамках одного заявления
         * @param {string} messageId - id запроса и ответа (совпадает)
         * @param {any} response - файл ответа
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadResponse(traceId: string, messageId: string, response: any, options?: any): AxiosPromise<string> {
            return localVarFp.loadResponse(traceId, messageId, response, options).then((request) => request(axios, basePath));
        },
        /**
         * Заменить мок-ответ на другой выбранный из базы
         * @summary Заменить мок-ответ на другой выбранный из базы
         * @param {string} traceId - параметр, объединяющий все запросы в рамках одного заявления
         * @param {string} messageId - id запроса и ответа (совпадает)
         * @param {string} code - код (наименование) мока
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        replaceResponse(traceId: string, messageId: string, code: string, options?: any): AxiosPromise<string> {
            return localVarFp.replaceResponse(traceId, messageId, code, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * InteragencyApi - object-oriented interface
 * @export
 * @class InteragencyApi
 * @extends {BaseAPI}
 */
export class InteragencyApi extends BaseAPI {
    /**
     * Получить все запросы в рамках одного заявления
     * @summary Получить все запросы в рамках одного заявления
     * @param {string} traceId - параметр, объединяющий все запросы в рамках одного заявления
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof InteragencyApi
     */
    public getInteragency(traceId: string, options?: any) {
        return InteragencyApiFp(this.configuration).getInteragency(traceId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Заменить мок-ответ на подгружаемый из файла
     * @summary Заменить мок-ответ на подгружаемый из файла
     * @param {string} traceId - параметр, объединяющий все запросы в рамках одного заявления
     * @param {string} messageId - id запроса и ответа (совпадает)
     * @param {any} response - файл ответа
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof InteragencyApi
     */
    public loadResponse(traceId: string, messageId: string, response: any, options?: any) {
        return InteragencyApiFp(this.configuration).loadResponse(traceId, messageId, response, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Заменить мок-ответ на другой выбранный из базы
     * @summary Заменить мок-ответ на другой выбранный из базы
     * @param {string} traceId - параметр, объединяющий все запросы в рамках одного заявления
     * @param {string} messageId - id запроса и ответа (совпадает)
     * @param {string} code - код (наименование) мока
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof InteragencyApi
     */
    public replaceResponse(traceId: string, messageId: string, code: string, options?: any) {
        return InteragencyApiFp(this.configuration).replaceResponse(traceId, messageId, code, options).then((request) => request(this.axios, this.basePath));
    }
}


/**
 * MzApi - axios parameter creator
 * @export
 */
export const MzApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Создание мока
         * @summary Создание мока
         * @param {string} [application] код имплементации
         * @param {string} [code] код мока
         * @param {string} [name] имя мока
         * @param {string} [clazz] класс
         * @param {string} [xPath] строка поиска мока
         * @param {any} [response] ответ
         * @param {any} [transformer] трансформер
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        addMock: async (application?: string, code?: string, name?: string, clazz?: string, xPath?: string, response?: any, transformer?: any, options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/mz`;
            // 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 (application !== undefined) { 
                localVarFormParams.append('application', application as any);
            }
    
            if (code !== undefined) { 
                localVarFormParams.append('code', code as any);
            }
    
            if (name !== undefined) { 
                localVarFormParams.append('name', name as any);
            }
    
            if (clazz !== undefined) { 
                localVarFormParams.append('clazz', clazz as any);
            }
    
            if (xPath !== undefined) { 
                localVarFormParams.append('xPath', xPath as any);
            }
    
            if (response !== undefined) { 
                localVarFormParams.append('response', response as any);
            }
    
            if (transformer !== undefined) { 
                localVarFormParams.append('transformer', transformer 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 {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        clearCache: async (options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/mz/topic-sender`;
            // 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;


    
            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} [clazz] класс
         * @param {boolean} [all] удалить все пользовательские моки
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteAllMocks: async (clazz?: string, all?: boolean, options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/mz/all`;
            // 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 (clazz !== undefined && clazz !== null) {
                localVarHeaderParameter['clazz'] = String(clazz);
            }

            if (all !== undefined && all !== null) {
                localVarHeaderParameter['all'] = String(JSON.stringify(all));
            }


    
            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} clazz класс мока
         * @param {string} code код мока
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteMock: async (clazz: string, code: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'clazz' is not null or undefined
            assertParamExists('deleteMock', 'clazz', clazz)
            // verify required parameter 'code' is not null or undefined
            assertParamExists('deleteMock', 'code', code)
            const localVarPath = `/mz`;
            // 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 (clazz !== undefined && clazz !== null) {
                localVarHeaderParameter['clazz'] = String(clazz);
            }

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


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Список моков по clazz\'у
         * @summary Список моков по clazz\'у
         * @param {string} clazz 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getMockForClazz: async (clazz: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'clazz' is not null or undefined
            assertParamExists('getMockForClazz', 'clazz', clazz)
            const localVarPath = `/mz/code`;
            // 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 (clazz !== undefined) {
                localVarQueryParameter['clazz'] = clazz;
            }


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Содержимое мок ответа по S3 ссылке
         * @summary Содержимое мок ответа по S3 ссылке
         * @param {string} ref - S3 ссылка
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getMockResponseByRef: async (ref: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'ref' is not null or undefined
            assertParamExists('getMockResponseByRef', 'ref', ref)
            const localVarPath = `/mz/xml`;
            // 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 (ref !== undefined) {
                localVarQueryParameter['ref'] = ref;
            }


    
            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}
         */
        getS3Cache: async (options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/mz/dump`;
            // 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,
            };
        },
        /**
         * 
         * @param {any} json 
         * @param {string} [xslt] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sendMZRequest: async (json: any, xslt?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'json' is not null or undefined
            assertParamExists('sendMZRequest', 'json', json)
            const localVarPath = `/mz/request`;
            // 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 (json !== undefined) { 
                localVarFormParams.append('json', json as any);
            }
    
            if (xslt !== undefined) { 
                localVarFormParams.append('xslt', xslt 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} [message] сообщение
         * @param {string} [traceId] traceId сообщения
         * @param {string} [id] id сообщения
         * @param {string} [clazz] class сообщения
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        topicSend: async (message?: string, traceId?: string, id?: string, clazz?: string, options: any = {}): Promise<RequestArgs> => {
            const localVarPath = `/mz/topic-sender`;
            // 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 (message !== undefined) { 
                localVarFormParams.append('message', message as any);
            }
    
            if (traceId !== undefined) { 
                localVarFormParams.append('traceId', traceId as any);
            }
    
            if (id !== undefined) { 
                localVarFormParams.append('id', id as any);
            }
    
            if (clazz !== undefined) { 
                localVarFormParams.append('clazz', clazz 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,
            };
        },
    }
};

/**
 * MzApi - functional programming interface
 * @export
 */
export const MzApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = MzApiAxiosParamCreator(configuration)
    return {
        /**
         * Создание мока
         * @summary Создание мока
         * @param {string} [application] код имплементации
         * @param {string} [code] код мока
         * @param {string} [name] имя мока
         * @param {string} [clazz] класс
         * @param {string} [xPath] строка поиска мока
         * @param {any} [response] ответ
         * @param {any} [transformer] трансформер
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async addMock(application?: string, code?: string, name?: string, clazz?: string, xPath?: string, response?: any, transformer?: any, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<HttpStatus>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.addMock(application, code, name, clazz, xPath, response, transformer, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * очистка кеша
         * @summary очистка кеша
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async clearCache(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<HttpStatus>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.clearCache(options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Удаление всех пользовательских моков или всех пользовательских моков для класса
         * @summary Удаление всех пользовательских моков или всех пользовательских моков для класса
         * @param {string} [clazz] класс
         * @param {boolean} [all] удалить все пользовательские моки
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async deleteAllMocks(clazz?: string, all?: boolean, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<HttpStatus>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.deleteAllMocks(clazz, all, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Удаление мока
         * @summary Удаление мока
         * @param {string} clazz класс мока
         * @param {string} code код мока
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async deleteMock(clazz: string, code: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<HttpStatus>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.deleteMock(clazz, code, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Список моков по clazz\'у
         * @summary Список моков по clazz\'у
         * @param {string} clazz 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getMockForClazz(clazz: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<string>>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getMockForClazz(clazz, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Содержимое мок ответа по S3 ссылке
         * @summary Содержимое мок ответа по S3 ссылке
         * @param {string} ref - S3 ссылка
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getMockResponseByRef(ref: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<string>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getMockResponseByRef(ref, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Список моков
         * @summary Список моков
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getS3Cache(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<{ [key: string]: { [key: string]: MockEntryBean; }; }>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getS3Cache(options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @param {any} json 
         * @param {string} [xslt] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sendMZRequest(json: any, xslt?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<string>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.sendMZRequest(json, xslt, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Для имитации получения сообщения через кафка топик
         * @summary Для имитации получения сообщения через кафка топик
         * @param {string} [message] сообщение
         * @param {string} [traceId] traceId сообщения
         * @param {string} [id] id сообщения
         * @param {string} [clazz] class сообщения
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async topicSend(message?: string, traceId?: string, id?: string, clazz?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<HttpStatus>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.topicSend(message, traceId, id, clazz, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * MzApi - factory interface
 * @export
 */
export const MzApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = MzApiFp(configuration)
    return {
        /**
         * Создание мока
         * @summary Создание мока
         * @param {string} [application] код имплементации
         * @param {string} [code] код мока
         * @param {string} [name] имя мока
         * @param {string} [clazz] класс
         * @param {string} [xPath] строка поиска мока
         * @param {any} [response] ответ
         * @param {any} [transformer] трансформер
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        addMock(application?: string, code?: string, name?: string, clazz?: string, xPath?: string, response?: any, transformer?: any, options?: any): AxiosPromise<HttpStatus> {
            return localVarFp.addMock(application, code, name, clazz, xPath, response, transformer, options).then((request) => request(axios, basePath));
        },
        /**
         * очистка кеша
         * @summary очистка кеша
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        clearCache(options?: any): AxiosPromise<HttpStatus> {
            return localVarFp.clearCache(options).then((request) => request(axios, basePath));
        },
        /**
         * Удаление всех пользовательских моков или всех пользовательских моков для класса
         * @summary Удаление всех пользовательских моков или всех пользовательских моков для класса
         * @param {string} [clazz] класс
         * @param {boolean} [all] удалить все пользовательские моки
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteAllMocks(clazz?: string, all?: boolean, options?: any): AxiosPromise<HttpStatus> {
            return localVarFp.deleteAllMocks(clazz, all, options).then((request) => request(axios, basePath));
        },
        /**
         * Удаление мока
         * @summary Удаление мока
         * @param {string} clazz класс мока
         * @param {string} code код мока
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteMock(clazz: string, code: string, options?: any): AxiosPromise<HttpStatus> {
            return localVarFp.deleteMock(clazz, code, options).then((request) => request(axios, basePath));
        },
        /**
         * Список моков по clazz\'у
         * @summary Список моков по clazz\'у
         * @param {string} clazz 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getMockForClazz(clazz: string, options?: any): AxiosPromise<Array<string>> {
            return localVarFp.getMockForClazz(clazz, options).then((request) => request(axios, basePath));
        },
        /**
         * Содержимое мок ответа по S3 ссылке
         * @summary Содержимое мок ответа по S3 ссылке
         * @param {string} ref - S3 ссылка
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getMockResponseByRef(ref: string, options?: any): AxiosPromise<string> {
            return localVarFp.getMockResponseByRef(ref, options).then((request) => request(axios, basePath));
        },
        /**
         * Список моков
         * @summary Список моков
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getS3Cache(options?: any): AxiosPromise<{ [key: string]: { [key: string]: MockEntryBean; }; }> {
            return localVarFp.getS3Cache(options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @param {any} json 
         * @param {string} [xslt] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        sendMZRequest(json: any, xslt?: string, options?: any): AxiosPromise<string> {
            return localVarFp.sendMZRequest(json, xslt, options).then((request) => request(axios, basePath));
        },
        /**
         * Для имитации получения сообщения через кафка топик
         * @summary Для имитации получения сообщения через кафка топик
         * @param {string} [message] сообщение
         * @param {string} [traceId] traceId сообщения
         * @param {string} [id] id сообщения
         * @param {string} [clazz] class сообщения
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        topicSend(message?: string, traceId?: string, id?: string, clazz?: string, options?: any): AxiosPromise<HttpStatus> {
            return localVarFp.topicSend(message, traceId, id, clazz, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * MzApi - object-oriented interface
 * @export
 * @class MzApi
 * @extends {BaseAPI}
 */
export class MzApi extends BaseAPI {
    /**
     * Создание мока
     * @summary Создание мока
     * @param {string} [application] код имплементации
     * @param {string} [code] код мока
     * @param {string} [name] имя мока
     * @param {string} [clazz] класс
     * @param {string} [xPath] строка поиска мока
     * @param {any} [response] ответ
     * @param {any} [transformer] трансформер
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MzApi
     */
    public addMock(application?: string, code?: string, name?: string, clazz?: string, xPath?: string, response?: any, transformer?: any, options?: any) {
        return MzApiFp(this.configuration).addMock(application, code, name, clazz, xPath, response, transformer, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * очистка кеша
     * @summary очистка кеша
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MzApi
     */
    public clearCache(options?: any) {
        return MzApiFp(this.configuration).clearCache(options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Удаление всех пользовательских моков или всех пользовательских моков для класса
     * @summary Удаление всех пользовательских моков или всех пользовательских моков для класса
     * @param {string} [clazz] класс
     * @param {boolean} [all] удалить все пользовательские моки
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MzApi
     */
    public deleteAllMocks(clazz?: string, all?: boolean, options?: any) {
        return MzApiFp(this.configuration).deleteAllMocks(clazz, all, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Удаление мока
     * @summary Удаление мока
     * @param {string} clazz класс мока
     * @param {string} code код мока
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MzApi
     */
    public deleteMock(clazz: string, code: string, options?: any) {
        return MzApiFp(this.configuration).deleteMock(clazz, code, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Список моков по clazz\'у
     * @summary Список моков по clazz\'у
     * @param {string} clazz 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MzApi
     */
    public getMockForClazz(clazz: string, options?: any) {
        return MzApiFp(this.configuration).getMockForClazz(clazz, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Содержимое мок ответа по S3 ссылке
     * @summary Содержимое мок ответа по S3 ссылке
     * @param {string} ref - S3 ссылка
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MzApi
     */
    public getMockResponseByRef(ref: string, options?: any) {
        return MzApiFp(this.configuration).getMockResponseByRef(ref, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Список моков
     * @summary Список моков
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MzApi
     */
    public getS3Cache(options?: any) {
        return MzApiFp(this.configuration).getS3Cache(options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @param {any} json 
     * @param {string} [xslt] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MzApi
     */
    public sendMZRequest(json: any, xslt?: string, options?: any) {
        return MzApiFp(this.configuration).sendMZRequest(json, xslt, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Для имитации получения сообщения через кафка топик
     * @summary Для имитации получения сообщения через кафка топик
     * @param {string} [message] сообщение
     * @param {string} [traceId] traceId сообщения
     * @param {string} [id] id сообщения
     * @param {string} [clazz] class сообщения
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MzApi
     */
    public topicSend(message?: string, traceId?: string, id?: string, clazz?: string, options?: any) {
        return MzApiFp(this.configuration).topicSend(message, traceId, id, clazz, options).then((request) => request(this.axios, this.basePath));
    }
}


/**
 * PetitionApi - axios parameter creator
 * @export
 */
export const PetitionApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * 
         * @param {any} xsd 
         * @param {number} countXML 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        generateXML: async (xsd: any, countXML: number, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'xsd' is not null or undefined
            assertParamExists('generateXML', 'xsd', xsd)
            // verify required parameter 'countXML' is not null or undefined
            assertParamExists('generateXML', 'countXML', countXML)
            const localVarPath = `/petition/generator/xml`;
            // 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 (xsd !== undefined) { 
                localVarFormParams.append('xsd', xsd as any);
            }
    
            if (countXML !== undefined) { 
                localVarFormParams.append('countXML', countXML 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 {any} xml Входная xml
         * @param {string} stage До какой стадии эмуляции (импорт, межведы) запускается процесс
         * @param {any} [xsd] Схема xsd по которой будет производиться валидация xml
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        upload: async (xml: any, stage: string, xsd?: any, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'xml' is not null or undefined
            assertParamExists('upload', 'xml', xml)
            // verify required parameter 'stage' is not null or undefined
            assertParamExists('upload', 'stage', stage)
            const localVarPath = `/petition`;
            // 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 (xml !== undefined) { 
                localVarFormParams.append('xml', xml as any);
            }
    
            if (xsd !== undefined) { 
                localVarFormParams.append('xsd', xsd as any);
            }
    
            if (stage !== undefined) { 
                localVarFormParams.append('stage', stage 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,
            };
        },
        /**
         * 
         * @param {string} xml 
         * @param {string} [xsd] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        validate: async (xml: string, xsd?: string, options: any = {}): Promise<RequestArgs> => {
            // verify required parameter 'xml' is not null or undefined
            assertParamExists('validate', 'xml', xml)
            const localVarPath = `/petition/validate`;
            // 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 (xml !== undefined) { 
                localVarFormParams.append('xml', xml as any);
            }
    
            if (xsd !== undefined) { 
                localVarFormParams.append('xsd', xsd 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,
            };
        },
    }
};

/**
 * PetitionApi - functional programming interface
 * @export
 */
export const PetitionApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = PetitionApiAxiosParamCreator(configuration)
    return {
        /**
         * 
         * @param {any} xsd 
         * @param {number} countXML 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async generateXML(xsd: any, countXML: number, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GeneratedXmlDTO>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.generateXML(xsd, countXML, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Первичная обработка и загрузка заявления в конструктор услуг
         * @summary Первичная обработка и загрузка заявления в конструктор услуг
         * @param {any} xml Входная xml
         * @param {string} stage До какой стадии эмуляции (импорт, межведы) запускается процесс
         * @param {any} [xsd] Схема xsd по которой будет производиться валидация xml
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async upload(xml: any, stage: string, xsd?: any, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PetitionDTO>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.upload(xml, stage, xsd, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @param {string} xml 
         * @param {string} [xsd] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async validate(xml: string, xsd?: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<boolean>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.validate(xml, xsd, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * PetitionApi - factory interface
 * @export
 */
export const PetitionApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = PetitionApiFp(configuration)
    return {
        /**
         * 
         * @param {any} xsd 
         * @param {number} countXML 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        generateXML(xsd: any, countXML: number, options?: any): AxiosPromise<GeneratedXmlDTO> {
            return localVarFp.generateXML(xsd, countXML, options).then((request) => request(axios, basePath));
        },
        /**
         * Первичная обработка и загрузка заявления в конструктор услуг
         * @summary Первичная обработка и загрузка заявления в конструктор услуг
         * @param {any} xml Входная xml
         * @param {string} stage До какой стадии эмуляции (импорт, межведы) запускается процесс
         * @param {any} [xsd] Схема xsd по которой будет производиться валидация xml
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        upload(xml: any, stage: string, xsd?: any, options?: any): AxiosPromise<PetitionDTO> {
            return localVarFp.upload(xml, stage, xsd, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @param {string} xml 
         * @param {string} [xsd] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        validate(xml: string, xsd?: string, options?: any): AxiosPromise<boolean> {
            return localVarFp.validate(xml, xsd, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * PetitionApi - object-oriented interface
 * @export
 * @class PetitionApi
 * @extends {BaseAPI}
 */
export class PetitionApi extends BaseAPI {
    /**
     * 
     * @param {any} xsd 
     * @param {number} countXML 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PetitionApi
     */
    public generateXML(xsd: any, countXML: number, options?: any) {
        return PetitionApiFp(this.configuration).generateXML(xsd, countXML, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Первичная обработка и загрузка заявления в конструктор услуг
     * @summary Первичная обработка и загрузка заявления в конструктор услуг
     * @param {any} xml Входная xml
     * @param {string} stage До какой стадии эмуляции (импорт, межведы) запускается процесс
     * @param {any} [xsd] Схема xsd по которой будет производиться валидация xml
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PetitionApi
     */
    public upload(xml: any, stage: string, xsd?: any, options?: any) {
        return PetitionApiFp(this.configuration).upload(xml, stage, xsd, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @param {string} xml 
     * @param {string} [xsd] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PetitionApi
     */
    public validate(xml: string, xsd?: string, options?: any) {
        return PetitionApiFp(this.configuration).validate(xml, xsd, options).then((request) => request(this.axios, this.basePath));
    }
}


