/* tslint:disable */
/* eslint-disable */
/**
 * Admin API
 * The Admin API is used to manage the ApeCloud platform. 
 *
 * The version of the OpenAPI document: 1.0.0
 * Contact: support@apecloud.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


import type { Configuration } from '../configuration';
import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
import globalAxios 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, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
// @ts-ignore
import type { APIErrorResponse } from '../models';
// @ts-ignore
import type { AddAdministratorsUserRoleRequest } from '../models';
// @ts-ignore
import type { AdminPermissionList } from '../models';
// @ts-ignore
import type { AdminRole } from '../models';
// @ts-ignore
import type { AdminRoleCreate } from '../models';
// @ts-ignore
import type { AdminRoleList } from '../models';
// @ts-ignore
import type { AdminRoleUpdate } from '../models';
// @ts-ignore
import type { Password } from '../models';
// @ts-ignore
import type { User } from '../models';
// @ts-ignore
import type { UserCreate } from '../models';
// @ts-ignore
import type { UserList } from '../models';
// @ts-ignore
import type { UserUpdate } from '../models';
/**
 * AdministratorApi - axios parameter creator
 * @export
 */
export const AdministratorApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Assign a role to a specific administrator user
         * @summary Add a role to an administrator user
         * @param {string} administratorID 
         * @param {AddAdministratorsUserRoleRequest} [addAdministratorsUserRoleRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        addAdministratorsUserRole: async (administratorID: string, addAdministratorsUserRoleRequest?: AddAdministratorsUserRoleRequest, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'administratorID' is not null or undefined
            assertParamExists('addAdministratorsUserRole', 'administratorID', administratorID)
            const localVarPath = `/admin/v1/administrators/{administratorID}/roles`
                .replace(`{${"administratorID"}}`, encodeURIComponent(String(administratorID)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Add multiple permissions to a custom administrator role
         * @summary Batch add permissions to an administrator role
         * @param {string} roleName 
         * @param {Array<string>} requestBody 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        batchAddAdministratorsRolePermissions: async (roleName: string, requestBody: Array<string>, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'roleName' is not null or undefined
            assertParamExists('batchAddAdministratorsRolePermissions', 'roleName', roleName)
            // verify required parameter 'requestBody' is not null or undefined
            assertParamExists('batchAddAdministratorsRolePermissions', 'requestBody', requestBody)
            const localVarPath = `/admin/v1/administrators/roles/{roleName}/permissions/batch`
                .replace(`{${"roleName"}}`, encodeURIComponent(String(roleName)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            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,
            };
        },
        /**
         * Remove multiple permissions from a custom administrator role
         * @summary Batch remove permissions from an administrator role
         * @param {string} roleName 
         * @param {Array<string>} requestBody 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        batchRemoveAdministratorsRolePermissions: async (roleName: string, requestBody: Array<string>, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'roleName' is not null or undefined
            assertParamExists('batchRemoveAdministratorsRolePermissions', 'roleName', roleName)
            // verify required parameter 'requestBody' is not null or undefined
            assertParamExists('batchRemoveAdministratorsRolePermissions', 'requestBody', requestBody)
            const localVarPath = `/admin/v1/administrators/roles/{roleName}/permissions/batch`
                .replace(`{${"roleName"}}`, encodeURIComponent(String(roleName)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            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,
            };
        },
        /**
         * Create a new administrator
         * @summary Create a new administrator
         * @param {UserCreate} userCreate 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createAdministrator: async (userCreate: UserCreate, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'userCreate' is not null or undefined
            assertParamExists('createAdministrator', 'userCreate', userCreate)
            const localVarPath = `/admin/v1/administrators`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Create a custom administrator role
         * @summary Create an administrator role
         * @param {AdminRoleCreate} adminRoleCreate 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createAdministratorsRole: async (adminRoleCreate: AdminRoleCreate, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'adminRoleCreate' is not null or undefined
            assertParamExists('createAdministratorsRole', 'adminRoleCreate', adminRoleCreate)
            const localVarPath = `/admin/v1/administrators/roles`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * delete administrator
         * @summary delete administrator
         * @param {string} administratorID ID of the administrator
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteAdministrator: async (administratorID: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'administratorID' is not null or undefined
            assertParamExists('deleteAdministrator', 'administratorID', administratorID)
            const localVarPath = `/admin/v1/administrators/{administratorID}`
                .replace(`{${"administratorID"}}`, encodeURIComponent(String(administratorID)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a custom administrator role
         * @summary Delete an administrator role by name
         * @param {string} roleName 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteAdministratorsRoleByName: async (roleName: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'roleName' is not null or undefined
            assertParamExists('deleteAdministratorsRoleByName', 'roleName', roleName)
            const localVarPath = `/admin/v1/administrators/roles/{roleName}`
                .replace(`{${"roleName"}}`, encodeURIComponent(String(roleName)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get detailed information about a specific administrator role
         * @summary Get an administrator role by name
         * @param {string} roleName 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAdministratorsRoleByName: async (roleName: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'roleName' is not null or undefined
            assertParamExists('getAdministratorsRoleByName', 'roleName', roleName)
            const localVarPath = `/admin/v1/administrators/roles/{roleName}`
                .replace(`{${"roleName"}}`, encodeURIComponent(String(roleName)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List administrators
         * @summary List administrators
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAdministrators: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            const localVarPath = `/admin/v1/administrators`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List all permissions available for administrator roles
         * @summary List all permissions for administrators
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAdministratorsPermissions: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            const localVarPath = `/admin/v1/administrators/permissions`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List all permissions assigned to a specific administrator role
         * @summary List permissions of an administrator role
         * @param {string} roleName 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAdministratorsRolePermissions: async (roleName: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'roleName' is not null or undefined
            assertParamExists('listAdministratorsRolePermissions', 'roleName', roleName)
            const localVarPath = `/admin/v1/administrators/roles/{roleName}/permissions`
                .replace(`{${"roleName"}}`, encodeURIComponent(String(roleName)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List all administrator roles including built-in and custom roles
         * @summary List all administrator roles
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAdministratorsRoles: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            const localVarPath = `/admin/v1/administrators/roles`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List all roles assigned to a specific administrator user
         * @summary List roles of an administrator user
         * @param {string} administratorID 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAdministratorsUserRoles: async (administratorID: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'administratorID' is not null or undefined
            assertParamExists('listAdministratorsUserRoles', 'administratorID', administratorID)
            const localVarPath = `/admin/v1/administrators/{administratorID}/roles`
                .replace(`{${"administratorID"}}`, encodeURIComponent(String(administratorID)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update the information of the specified administrator
         * @summary Update the information of the specified administrator
         * @param {string} administratorID ID of the administrator
         * @param {UserUpdate} userUpdate 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        patchAdministrator: async (administratorID: string, userUpdate: UserUpdate, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'administratorID' is not null or undefined
            assertParamExists('patchAdministrator', 'administratorID', administratorID)
            // verify required parameter 'userUpdate' is not null or undefined
            assertParamExists('patchAdministrator', 'userUpdate', userUpdate)
            const localVarPath = `/admin/v1/administrators/{administratorID}`
                .replace(`{${"administratorID"}}`, encodeURIComponent(String(administratorID)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Remove a specific role from an administrator user
         * @summary Remove a role from an administrator user
         * @param {string} administratorID 
         * @param {string} roleName 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        removeAdministratorsUserRole: async (administratorID: string, roleName: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'administratorID' is not null or undefined
            assertParamExists('removeAdministratorsUserRole', 'administratorID', administratorID)
            // verify required parameter 'roleName' is not null or undefined
            assertParamExists('removeAdministratorsUserRole', 'roleName', roleName)
            const localVarPath = `/admin/v1/administrators/{administratorID}/roles/{roleName}`
                .replace(`{${"administratorID"}}`, encodeURIComponent(String(administratorID)))
                .replace(`{${"roleName"}}`, encodeURIComponent(String(roleName)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update administrator password
         * @summary Update administrator password
         * @param {string} administratorID ID of the administrator
         * @param {Password} body 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateAdministratorPassword: async (administratorID: string, body: Password, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'administratorID' is not null or undefined
            assertParamExists('updateAdministratorPassword', 'administratorID', administratorID)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('updateAdministratorPassword', 'body', body)
            const localVarPath = `/admin/v1/administrators/{administratorID}/password`
                .replace(`{${"administratorID"}}`, encodeURIComponent(String(administratorID)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            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,
            };
        },
        /**
         * Update a custom administrator role
         * @summary Update an administrator role by name
         * @param {string} roleName 
         * @param {AdminRoleUpdate} adminRoleUpdate 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateAdministratorsRoleByName: async (roleName: string, adminRoleUpdate: AdminRoleUpdate, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'roleName' is not null or undefined
            assertParamExists('updateAdministratorsRoleByName', 'roleName', roleName)
            // verify required parameter 'adminRoleUpdate' is not null or undefined
            assertParamExists('updateAdministratorsRoleByName', 'adminRoleUpdate', adminRoleUpdate)
            const localVarPath = `/admin/v1/administrators/roles/{roleName}`
                .replace(`{${"roleName"}}`, encodeURIComponent(String(roleName)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

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

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

            // authentication DigestAuth required
            await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration)


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

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

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

/**
 * AdministratorApi - functional programming interface
 * @export
 */
export const AdministratorApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = AdministratorApiAxiosParamCreator(configuration)
    return {
        /**
         * Assign a role to a specific administrator user
         * @summary Add a role to an administrator user
         * @param {string} administratorID 
         * @param {AddAdministratorsUserRoleRequest} [addAdministratorsUserRoleRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async addAdministratorsUserRole(administratorID: string, addAdministratorsUserRoleRequest?: AddAdministratorsUserRoleRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.addAdministratorsUserRole(administratorID, addAdministratorsUserRoleRequest, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.addAdministratorsUserRole']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * Add multiple permissions to a custom administrator role
         * @summary Batch add permissions to an administrator role
         * @param {string} roleName 
         * @param {Array<string>} requestBody 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async batchAddAdministratorsRolePermissions(roleName: string, requestBody: Array<string>, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.batchAddAdministratorsRolePermissions(roleName, requestBody, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.batchAddAdministratorsRolePermissions']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * Remove multiple permissions from a custom administrator role
         * @summary Batch remove permissions from an administrator role
         * @param {string} roleName 
         * @param {Array<string>} requestBody 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async batchRemoveAdministratorsRolePermissions(roleName: string, requestBody: Array<string>, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.batchRemoveAdministratorsRolePermissions(roleName, requestBody, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.batchRemoveAdministratorsRolePermissions']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * Create a new administrator
         * @summary Create a new administrator
         * @param {UserCreate} userCreate 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async createAdministrator(userCreate: UserCreate, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<User>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.createAdministrator(userCreate, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.createAdministrator']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * Create a custom administrator role
         * @summary Create an administrator role
         * @param {AdminRoleCreate} adminRoleCreate 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async createAdministratorsRole(adminRoleCreate: AdminRoleCreate, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminRole>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.createAdministratorsRole(adminRoleCreate, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.createAdministratorsRole']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * delete administrator
         * @summary delete administrator
         * @param {string} administratorID ID of the administrator
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async deleteAdministrator(administratorID: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.deleteAdministrator(administratorID, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.deleteAdministrator']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * Delete a custom administrator role
         * @summary Delete an administrator role by name
         * @param {string} roleName 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async deleteAdministratorsRoleByName(roleName: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.deleteAdministratorsRoleByName(roleName, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.deleteAdministratorsRoleByName']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * Get detailed information about a specific administrator role
         * @summary Get an administrator role by name
         * @param {string} roleName 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getAdministratorsRoleByName(roleName: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminRole>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getAdministratorsRoleByName(roleName, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.getAdministratorsRoleByName']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * List administrators
         * @summary List administrators
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async listAdministrators(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserList>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.listAdministrators(options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.listAdministrators']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * List all permissions available for administrator roles
         * @summary List all permissions for administrators
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async listAdministratorsPermissions(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPermissionList>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.listAdministratorsPermissions(options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.listAdministratorsPermissions']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * List all permissions assigned to a specific administrator role
         * @summary List permissions of an administrator role
         * @param {string} roleName 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async listAdministratorsRolePermissions(roleName: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPermissionList>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.listAdministratorsRolePermissions(roleName, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.listAdministratorsRolePermissions']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * List all administrator roles including built-in and custom roles
         * @summary List all administrator roles
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async listAdministratorsRoles(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminRoleList>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.listAdministratorsRoles(options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.listAdministratorsRoles']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * List all roles assigned to a specific administrator user
         * @summary List roles of an administrator user
         * @param {string} administratorID 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async listAdministratorsUserRoles(administratorID: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminRoleList>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.listAdministratorsUserRoles(administratorID, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.listAdministratorsUserRoles']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * Update the information of the specified administrator
         * @summary Update the information of the specified administrator
         * @param {string} administratorID ID of the administrator
         * @param {UserUpdate} userUpdate 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async patchAdministrator(administratorID: string, userUpdate: UserUpdate, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<User>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.patchAdministrator(administratorID, userUpdate, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.patchAdministrator']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * Remove a specific role from an administrator user
         * @summary Remove a role from an administrator user
         * @param {string} administratorID 
         * @param {string} roleName 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async removeAdministratorsUserRole(administratorID: string, roleName: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.removeAdministratorsUserRole(administratorID, roleName, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.removeAdministratorsUserRole']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * Update administrator password
         * @summary Update administrator password
         * @param {string} administratorID ID of the administrator
         * @param {Password} body 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async updateAdministratorPassword(administratorID: string, body: Password, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.updateAdministratorPassword(administratorID, body, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.updateAdministratorPassword']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * Update a custom administrator role
         * @summary Update an administrator role by name
         * @param {string} roleName 
         * @param {AdminRoleUpdate} adminRoleUpdate 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async updateAdministratorsRoleByName(roleName: string, adminRoleUpdate: AdminRoleUpdate, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminRole>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.updateAdministratorsRoleByName(roleName, adminRoleUpdate, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['AdministratorApi.updateAdministratorsRoleByName']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
    }
};

/**
 * AdministratorApi - factory interface
 * @export
 */
export const AdministratorApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = AdministratorApiFp(configuration)
    return {
        /**
         * Assign a role to a specific administrator user
         * @summary Add a role to an administrator user
         * @param {AdministratorApiAddAdministratorsUserRoleRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        addAdministratorsUserRole(requestParameters: AdministratorApiAddAdministratorsUserRoleRequest, options?: RawAxiosRequestConfig): AxiosPromise<void> {
            return localVarFp.addAdministratorsUserRole(requestParameters.administratorID, requestParameters.addAdministratorsUserRoleRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Add multiple permissions to a custom administrator role
         * @summary Batch add permissions to an administrator role
         * @param {AdministratorApiBatchAddAdministratorsRolePermissionsRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        batchAddAdministratorsRolePermissions(requestParameters: AdministratorApiBatchAddAdministratorsRolePermissionsRequest, options?: RawAxiosRequestConfig): AxiosPromise<void> {
            return localVarFp.batchAddAdministratorsRolePermissions(requestParameters.roleName, requestParameters.requestBody, options).then((request) => request(axios, basePath));
        },
        /**
         * Remove multiple permissions from a custom administrator role
         * @summary Batch remove permissions from an administrator role
         * @param {AdministratorApiBatchRemoveAdministratorsRolePermissionsRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        batchRemoveAdministratorsRolePermissions(requestParameters: AdministratorApiBatchRemoveAdministratorsRolePermissionsRequest, options?: RawAxiosRequestConfig): AxiosPromise<void> {
            return localVarFp.batchRemoveAdministratorsRolePermissions(requestParameters.roleName, requestParameters.requestBody, options).then((request) => request(axios, basePath));
        },
        /**
         * Create a new administrator
         * @summary Create a new administrator
         * @param {AdministratorApiCreateAdministratorRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createAdministrator(requestParameters: AdministratorApiCreateAdministratorRequest, options?: RawAxiosRequestConfig): AxiosPromise<User> {
            return localVarFp.createAdministrator(requestParameters.userCreate, options).then((request) => request(axios, basePath));
        },
        /**
         * Create a custom administrator role
         * @summary Create an administrator role
         * @param {AdministratorApiCreateAdministratorsRoleRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createAdministratorsRole(requestParameters: AdministratorApiCreateAdministratorsRoleRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminRole> {
            return localVarFp.createAdministratorsRole(requestParameters.adminRoleCreate, options).then((request) => request(axios, basePath));
        },
        /**
         * delete administrator
         * @summary delete administrator
         * @param {AdministratorApiDeleteAdministratorRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteAdministrator(requestParameters: AdministratorApiDeleteAdministratorRequest, options?: RawAxiosRequestConfig): AxiosPromise<void> {
            return localVarFp.deleteAdministrator(requestParameters.administratorID, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete a custom administrator role
         * @summary Delete an administrator role by name
         * @param {AdministratorApiDeleteAdministratorsRoleByNameRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteAdministratorsRoleByName(requestParameters: AdministratorApiDeleteAdministratorsRoleByNameRequest, options?: RawAxiosRequestConfig): AxiosPromise<void> {
            return localVarFp.deleteAdministratorsRoleByName(requestParameters.roleName, options).then((request) => request(axios, basePath));
        },
        /**
         * Get detailed information about a specific administrator role
         * @summary Get an administrator role by name
         * @param {AdministratorApiGetAdministratorsRoleByNameRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAdministratorsRoleByName(requestParameters: AdministratorApiGetAdministratorsRoleByNameRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminRole> {
            return localVarFp.getAdministratorsRoleByName(requestParameters.roleName, options).then((request) => request(axios, basePath));
        },
        /**
         * List administrators
         * @summary List administrators
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAdministrators(options?: RawAxiosRequestConfig): AxiosPromise<UserList> {
            return localVarFp.listAdministrators(options).then((request) => request(axios, basePath));
        },
        /**
         * List all permissions available for administrator roles
         * @summary List all permissions for administrators
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAdministratorsPermissions(options?: RawAxiosRequestConfig): AxiosPromise<AdminPermissionList> {
            return localVarFp.listAdministratorsPermissions(options).then((request) => request(axios, basePath));
        },
        /**
         * List all permissions assigned to a specific administrator role
         * @summary List permissions of an administrator role
         * @param {AdministratorApiListAdministratorsRolePermissionsRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAdministratorsRolePermissions(requestParameters: AdministratorApiListAdministratorsRolePermissionsRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminPermissionList> {
            return localVarFp.listAdministratorsRolePermissions(requestParameters.roleName, options).then((request) => request(axios, basePath));
        },
        /**
         * List all administrator roles including built-in and custom roles
         * @summary List all administrator roles
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAdministratorsRoles(options?: RawAxiosRequestConfig): AxiosPromise<AdminRoleList> {
            return localVarFp.listAdministratorsRoles(options).then((request) => request(axios, basePath));
        },
        /**
         * List all roles assigned to a specific administrator user
         * @summary List roles of an administrator user
         * @param {AdministratorApiListAdministratorsUserRolesRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAdministratorsUserRoles(requestParameters: AdministratorApiListAdministratorsUserRolesRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminRoleList> {
            return localVarFp.listAdministratorsUserRoles(requestParameters.administratorID, options).then((request) => request(axios, basePath));
        },
        /**
         * Update the information of the specified administrator
         * @summary Update the information of the specified administrator
         * @param {AdministratorApiPatchAdministratorRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        patchAdministrator(requestParameters: AdministratorApiPatchAdministratorRequest, options?: RawAxiosRequestConfig): AxiosPromise<User> {
            return localVarFp.patchAdministrator(requestParameters.administratorID, requestParameters.userUpdate, options).then((request) => request(axios, basePath));
        },
        /**
         * Remove a specific role from an administrator user
         * @summary Remove a role from an administrator user
         * @param {AdministratorApiRemoveAdministratorsUserRoleRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        removeAdministratorsUserRole(requestParameters: AdministratorApiRemoveAdministratorsUserRoleRequest, options?: RawAxiosRequestConfig): AxiosPromise<void> {
            return localVarFp.removeAdministratorsUserRole(requestParameters.administratorID, requestParameters.roleName, options).then((request) => request(axios, basePath));
        },
        /**
         * Update administrator password
         * @summary Update administrator password
         * @param {AdministratorApiUpdateAdministratorPasswordRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateAdministratorPassword(requestParameters: AdministratorApiUpdateAdministratorPasswordRequest, options?: RawAxiosRequestConfig): AxiosPromise<void> {
            return localVarFp.updateAdministratorPassword(requestParameters.administratorID, requestParameters.body, options).then((request) => request(axios, basePath));
        },
        /**
         * Update a custom administrator role
         * @summary Update an administrator role by name
         * @param {AdministratorApiUpdateAdministratorsRoleByNameRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateAdministratorsRoleByName(requestParameters: AdministratorApiUpdateAdministratorsRoleByNameRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminRole> {
            return localVarFp.updateAdministratorsRoleByName(requestParameters.roleName, requestParameters.adminRoleUpdate, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * AdministratorApi - interface
 * @export
 * @interface AdministratorApi
 */
export interface AdministratorApiInterface {
    /**
     * Assign a role to a specific administrator user
     * @summary Add a role to an administrator user
     * @param {AdministratorApiAddAdministratorsUserRoleRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    addAdministratorsUserRole(requestParameters: AdministratorApiAddAdministratorsUserRoleRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;

    /**
     * Add multiple permissions to a custom administrator role
     * @summary Batch add permissions to an administrator role
     * @param {AdministratorApiBatchAddAdministratorsRolePermissionsRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    batchAddAdministratorsRolePermissions(requestParameters: AdministratorApiBatchAddAdministratorsRolePermissionsRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;

    /**
     * Remove multiple permissions from a custom administrator role
     * @summary Batch remove permissions from an administrator role
     * @param {AdministratorApiBatchRemoveAdministratorsRolePermissionsRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    batchRemoveAdministratorsRolePermissions(requestParameters: AdministratorApiBatchRemoveAdministratorsRolePermissionsRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;

    /**
     * Create a new administrator
     * @summary Create a new administrator
     * @param {AdministratorApiCreateAdministratorRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    createAdministrator(requestParameters: AdministratorApiCreateAdministratorRequest, options?: RawAxiosRequestConfig): AxiosPromise<User>;

    /**
     * Create a custom administrator role
     * @summary Create an administrator role
     * @param {AdministratorApiCreateAdministratorsRoleRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    createAdministratorsRole(requestParameters: AdministratorApiCreateAdministratorsRoleRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminRole>;

    /**
     * delete administrator
     * @summary delete administrator
     * @param {AdministratorApiDeleteAdministratorRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    deleteAdministrator(requestParameters: AdministratorApiDeleteAdministratorRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;

    /**
     * Delete a custom administrator role
     * @summary Delete an administrator role by name
     * @param {AdministratorApiDeleteAdministratorsRoleByNameRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    deleteAdministratorsRoleByName(requestParameters: AdministratorApiDeleteAdministratorsRoleByNameRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;

    /**
     * Get detailed information about a specific administrator role
     * @summary Get an administrator role by name
     * @param {AdministratorApiGetAdministratorsRoleByNameRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    getAdministratorsRoleByName(requestParameters: AdministratorApiGetAdministratorsRoleByNameRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminRole>;

    /**
     * List administrators
     * @summary List administrators
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    listAdministrators(options?: RawAxiosRequestConfig): AxiosPromise<UserList>;

    /**
     * List all permissions available for administrator roles
     * @summary List all permissions for administrators
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    listAdministratorsPermissions(options?: RawAxiosRequestConfig): AxiosPromise<AdminPermissionList>;

    /**
     * List all permissions assigned to a specific administrator role
     * @summary List permissions of an administrator role
     * @param {AdministratorApiListAdministratorsRolePermissionsRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    listAdministratorsRolePermissions(requestParameters: AdministratorApiListAdministratorsRolePermissionsRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminPermissionList>;

    /**
     * List all administrator roles including built-in and custom roles
     * @summary List all administrator roles
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    listAdministratorsRoles(options?: RawAxiosRequestConfig): AxiosPromise<AdminRoleList>;

    /**
     * List all roles assigned to a specific administrator user
     * @summary List roles of an administrator user
     * @param {AdministratorApiListAdministratorsUserRolesRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    listAdministratorsUserRoles(requestParameters: AdministratorApiListAdministratorsUserRolesRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminRoleList>;

    /**
     * Update the information of the specified administrator
     * @summary Update the information of the specified administrator
     * @param {AdministratorApiPatchAdministratorRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    patchAdministrator(requestParameters: AdministratorApiPatchAdministratorRequest, options?: RawAxiosRequestConfig): AxiosPromise<User>;

    /**
     * Remove a specific role from an administrator user
     * @summary Remove a role from an administrator user
     * @param {AdministratorApiRemoveAdministratorsUserRoleRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    removeAdministratorsUserRole(requestParameters: AdministratorApiRemoveAdministratorsUserRoleRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;

    /**
     * Update administrator password
     * @summary Update administrator password
     * @param {AdministratorApiUpdateAdministratorPasswordRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    updateAdministratorPassword(requestParameters: AdministratorApiUpdateAdministratorPasswordRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;

    /**
     * Update a custom administrator role
     * @summary Update an administrator role by name
     * @param {AdministratorApiUpdateAdministratorsRoleByNameRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApiInterface
     */
    updateAdministratorsRoleByName(requestParameters: AdministratorApiUpdateAdministratorsRoleByNameRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminRole>;

}

/**
 * Request parameters for addAdministratorsUserRole operation in AdministratorApi.
 * @export
 * @interface AdministratorApiAddAdministratorsUserRoleRequest
 */
export interface AdministratorApiAddAdministratorsUserRoleRequest {
    /**
     * 
     * @type {string}
     * @memberof AdministratorApiAddAdministratorsUserRole
     */
    readonly administratorID: string

    /**
     * 
     * @type {AddAdministratorsUserRoleRequest}
     * @memberof AdministratorApiAddAdministratorsUserRole
     */
    readonly addAdministratorsUserRoleRequest?: AddAdministratorsUserRoleRequest
}

/**
 * Request parameters for batchAddAdministratorsRolePermissions operation in AdministratorApi.
 * @export
 * @interface AdministratorApiBatchAddAdministratorsRolePermissionsRequest
 */
export interface AdministratorApiBatchAddAdministratorsRolePermissionsRequest {
    /**
     * 
     * @type {string}
     * @memberof AdministratorApiBatchAddAdministratorsRolePermissions
     */
    readonly roleName: string

    /**
     * 
     * @type {Array<string>}
     * @memberof AdministratorApiBatchAddAdministratorsRolePermissions
     */
    readonly requestBody: Array<string>
}

/**
 * Request parameters for batchRemoveAdministratorsRolePermissions operation in AdministratorApi.
 * @export
 * @interface AdministratorApiBatchRemoveAdministratorsRolePermissionsRequest
 */
export interface AdministratorApiBatchRemoveAdministratorsRolePermissionsRequest {
    /**
     * 
     * @type {string}
     * @memberof AdministratorApiBatchRemoveAdministratorsRolePermissions
     */
    readonly roleName: string

    /**
     * 
     * @type {Array<string>}
     * @memberof AdministratorApiBatchRemoveAdministratorsRolePermissions
     */
    readonly requestBody: Array<string>
}

/**
 * Request parameters for createAdministrator operation in AdministratorApi.
 * @export
 * @interface AdministratorApiCreateAdministratorRequest
 */
export interface AdministratorApiCreateAdministratorRequest {
    /**
     * 
     * @type {UserCreate}
     * @memberof AdministratorApiCreateAdministrator
     */
    readonly userCreate: UserCreate
}

/**
 * Request parameters for createAdministratorsRole operation in AdministratorApi.
 * @export
 * @interface AdministratorApiCreateAdministratorsRoleRequest
 */
export interface AdministratorApiCreateAdministratorsRoleRequest {
    /**
     * 
     * @type {AdminRoleCreate}
     * @memberof AdministratorApiCreateAdministratorsRole
     */
    readonly adminRoleCreate: AdminRoleCreate
}

/**
 * Request parameters for deleteAdministrator operation in AdministratorApi.
 * @export
 * @interface AdministratorApiDeleteAdministratorRequest
 */
export interface AdministratorApiDeleteAdministratorRequest {
    /**
     * ID of the administrator
     * @type {string}
     * @memberof AdministratorApiDeleteAdministrator
     */
    readonly administratorID: string
}

/**
 * Request parameters for deleteAdministratorsRoleByName operation in AdministratorApi.
 * @export
 * @interface AdministratorApiDeleteAdministratorsRoleByNameRequest
 */
export interface AdministratorApiDeleteAdministratorsRoleByNameRequest {
    /**
     * 
     * @type {string}
     * @memberof AdministratorApiDeleteAdministratorsRoleByName
     */
    readonly roleName: string
}

/**
 * Request parameters for getAdministratorsRoleByName operation in AdministratorApi.
 * @export
 * @interface AdministratorApiGetAdministratorsRoleByNameRequest
 */
export interface AdministratorApiGetAdministratorsRoleByNameRequest {
    /**
     * 
     * @type {string}
     * @memberof AdministratorApiGetAdministratorsRoleByName
     */
    readonly roleName: string
}

/**
 * Request parameters for listAdministratorsRolePermissions operation in AdministratorApi.
 * @export
 * @interface AdministratorApiListAdministratorsRolePermissionsRequest
 */
export interface AdministratorApiListAdministratorsRolePermissionsRequest {
    /**
     * 
     * @type {string}
     * @memberof AdministratorApiListAdministratorsRolePermissions
     */
    readonly roleName: string
}

/**
 * Request parameters for listAdministratorsUserRoles operation in AdministratorApi.
 * @export
 * @interface AdministratorApiListAdministratorsUserRolesRequest
 */
export interface AdministratorApiListAdministratorsUserRolesRequest {
    /**
     * 
     * @type {string}
     * @memberof AdministratorApiListAdministratorsUserRoles
     */
    readonly administratorID: string
}

/**
 * Request parameters for patchAdministrator operation in AdministratorApi.
 * @export
 * @interface AdministratorApiPatchAdministratorRequest
 */
export interface AdministratorApiPatchAdministratorRequest {
    /**
     * ID of the administrator
     * @type {string}
     * @memberof AdministratorApiPatchAdministrator
     */
    readonly administratorID: string

    /**
     * 
     * @type {UserUpdate}
     * @memberof AdministratorApiPatchAdministrator
     */
    readonly userUpdate: UserUpdate
}

/**
 * Request parameters for removeAdministratorsUserRole operation in AdministratorApi.
 * @export
 * @interface AdministratorApiRemoveAdministratorsUserRoleRequest
 */
export interface AdministratorApiRemoveAdministratorsUserRoleRequest {
    /**
     * 
     * @type {string}
     * @memberof AdministratorApiRemoveAdministratorsUserRole
     */
    readonly administratorID: string

    /**
     * 
     * @type {string}
     * @memberof AdministratorApiRemoveAdministratorsUserRole
     */
    readonly roleName: string
}

/**
 * Request parameters for updateAdministratorPassword operation in AdministratorApi.
 * @export
 * @interface AdministratorApiUpdateAdministratorPasswordRequest
 */
export interface AdministratorApiUpdateAdministratorPasswordRequest {
    /**
     * ID of the administrator
     * @type {string}
     * @memberof AdministratorApiUpdateAdministratorPassword
     */
    readonly administratorID: string

    /**
     * 
     * @type {Password}
     * @memberof AdministratorApiUpdateAdministratorPassword
     */
    readonly body: Password
}

/**
 * Request parameters for updateAdministratorsRoleByName operation in AdministratorApi.
 * @export
 * @interface AdministratorApiUpdateAdministratorsRoleByNameRequest
 */
export interface AdministratorApiUpdateAdministratorsRoleByNameRequest {
    /**
     * 
     * @type {string}
     * @memberof AdministratorApiUpdateAdministratorsRoleByName
     */
    readonly roleName: string

    /**
     * 
     * @type {AdminRoleUpdate}
     * @memberof AdministratorApiUpdateAdministratorsRoleByName
     */
    readonly adminRoleUpdate: AdminRoleUpdate
}

/**
 * AdministratorApi - object-oriented interface
 * @export
 * @class AdministratorApi
 * @extends {BaseAPI}
 */
export class AdministratorApi extends BaseAPI implements AdministratorApiInterface {
    /**
     * Assign a role to a specific administrator user
     * @summary Add a role to an administrator user
     * @param {AdministratorApiAddAdministratorsUserRoleRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public addAdministratorsUserRole(requestParameters: AdministratorApiAddAdministratorsUserRoleRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).addAdministratorsUserRole(requestParameters.administratorID, requestParameters.addAdministratorsUserRoleRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Add multiple permissions to a custom administrator role
     * @summary Batch add permissions to an administrator role
     * @param {AdministratorApiBatchAddAdministratorsRolePermissionsRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public batchAddAdministratorsRolePermissions(requestParameters: AdministratorApiBatchAddAdministratorsRolePermissionsRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).batchAddAdministratorsRolePermissions(requestParameters.roleName, requestParameters.requestBody, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Remove multiple permissions from a custom administrator role
     * @summary Batch remove permissions from an administrator role
     * @param {AdministratorApiBatchRemoveAdministratorsRolePermissionsRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public batchRemoveAdministratorsRolePermissions(requestParameters: AdministratorApiBatchRemoveAdministratorsRolePermissionsRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).batchRemoveAdministratorsRolePermissions(requestParameters.roleName, requestParameters.requestBody, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Create a new administrator
     * @summary Create a new administrator
     * @param {AdministratorApiCreateAdministratorRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public createAdministrator(requestParameters: AdministratorApiCreateAdministratorRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).createAdministrator(requestParameters.userCreate, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Create a custom administrator role
     * @summary Create an administrator role
     * @param {AdministratorApiCreateAdministratorsRoleRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public createAdministratorsRole(requestParameters: AdministratorApiCreateAdministratorsRoleRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).createAdministratorsRole(requestParameters.adminRoleCreate, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * delete administrator
     * @summary delete administrator
     * @param {AdministratorApiDeleteAdministratorRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public deleteAdministrator(requestParameters: AdministratorApiDeleteAdministratorRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).deleteAdministrator(requestParameters.administratorID, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete a custom administrator role
     * @summary Delete an administrator role by name
     * @param {AdministratorApiDeleteAdministratorsRoleByNameRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public deleteAdministratorsRoleByName(requestParameters: AdministratorApiDeleteAdministratorsRoleByNameRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).deleteAdministratorsRoleByName(requestParameters.roleName, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get detailed information about a specific administrator role
     * @summary Get an administrator role by name
     * @param {AdministratorApiGetAdministratorsRoleByNameRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public getAdministratorsRoleByName(requestParameters: AdministratorApiGetAdministratorsRoleByNameRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).getAdministratorsRoleByName(requestParameters.roleName, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List administrators
     * @summary List administrators
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public listAdministrators(options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).listAdministrators(options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List all permissions available for administrator roles
     * @summary List all permissions for administrators
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public listAdministratorsPermissions(options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).listAdministratorsPermissions(options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List all permissions assigned to a specific administrator role
     * @summary List permissions of an administrator role
     * @param {AdministratorApiListAdministratorsRolePermissionsRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public listAdministratorsRolePermissions(requestParameters: AdministratorApiListAdministratorsRolePermissionsRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).listAdministratorsRolePermissions(requestParameters.roleName, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List all administrator roles including built-in and custom roles
     * @summary List all administrator roles
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public listAdministratorsRoles(options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).listAdministratorsRoles(options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List all roles assigned to a specific administrator user
     * @summary List roles of an administrator user
     * @param {AdministratorApiListAdministratorsUserRolesRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public listAdministratorsUserRoles(requestParameters: AdministratorApiListAdministratorsUserRolesRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).listAdministratorsUserRoles(requestParameters.administratorID, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update the information of the specified administrator
     * @summary Update the information of the specified administrator
     * @param {AdministratorApiPatchAdministratorRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public patchAdministrator(requestParameters: AdministratorApiPatchAdministratorRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).patchAdministrator(requestParameters.administratorID, requestParameters.userUpdate, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Remove a specific role from an administrator user
     * @summary Remove a role from an administrator user
     * @param {AdministratorApiRemoveAdministratorsUserRoleRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public removeAdministratorsUserRole(requestParameters: AdministratorApiRemoveAdministratorsUserRoleRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).removeAdministratorsUserRole(requestParameters.administratorID, requestParameters.roleName, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update administrator password
     * @summary Update administrator password
     * @param {AdministratorApiUpdateAdministratorPasswordRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public updateAdministratorPassword(requestParameters: AdministratorApiUpdateAdministratorPasswordRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).updateAdministratorPassword(requestParameters.administratorID, requestParameters.body, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update a custom administrator role
     * @summary Update an administrator role by name
     * @param {AdministratorApiUpdateAdministratorsRoleByNameRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdministratorApi
     */
    public updateAdministratorsRoleByName(requestParameters: AdministratorApiUpdateAdministratorsRoleByNameRequest, options?: RawAxiosRequestConfig) {
        return AdministratorApiFp(this.configuration).updateAdministratorsRoleByName(requestParameters.roleName, requestParameters.adminRoleUpdate, options).then((request) => request(this.axios, this.basePath));
    }
}

