/* tslint:disable */
/* eslint-disable */
/**
 * KubeBlocks Cloud API
 * KubeBlocks Cloud API is a RESTful API for managing KubeBlocks Cloud resources.  The API is organized around REST.  Our API has predictable resource-oriented URLs, accepts `JSON-encoded` request bodies, returns `JSON-encoded` responses, and uses standard HTTP response codes, authentication, and verbs.  We use standard HTTP authentication and provide API keys to identify who you are. Your API keys carry many privileges, so be sure to keep them secret! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth. 
 *
 * 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 { Environment } from '../models';
// @ts-ignore
import type { EnvironmentList } from '../models';
// @ts-ignore
import type { EnvironmentModuleInfo } from '../models';
// @ts-ignore
import type { NodeGroup } from '../models';
/**
 * EnvironmentApi - axios parameter creator
 * @export
 */
export const EnvironmentApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * 
         * @summary Get environment
         * @param {string} orgName name of the Org
         * @param {string} environmentName name of the Environment
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getEnvironment: async (orgName: string, environmentName: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'orgName' is not null or undefined
            assertParamExists('getEnvironment', 'orgName', orgName)
            // verify required parameter 'environmentName' is not null or undefined
            assertParamExists('getEnvironment', 'environmentName', environmentName)
            const localVarPath = `/api/v1/organizations/{orgName}/environments/{environmentName}`
                .replace(`{${"orgName"}}`, encodeURIComponent(String(orgName)))
                .replace(`{${"environmentName"}}`, encodeURIComponent(String(environmentName)));
            // 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,
            };
        },
        /**
         * 
         * @summary Get environment module information in an environment
         * @param {string} environmentName Environment Name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getEnvironmentModuleInfo: async (environmentName: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'environmentName' is not null or undefined
            assertParamExists('getEnvironmentModuleInfo', 'environmentName', environmentName)
            const localVarPath = `/api/v1/environments/{environmentName}/modules`
                .replace(`{${"environmentName"}}`, encodeURIComponent(String(environmentName)));
            // 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 available zones of an environment
         * @summary List the availability zones where the environment\'s nodes are located
         * @param {string} orgName name of the Org
         * @param {string} environmentName name of the Environment
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listEnvNodeZone: async (orgName: string, environmentName: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'orgName' is not null or undefined
            assertParamExists('listEnvNodeZone', 'orgName', orgName)
            // verify required parameter 'environmentName' is not null or undefined
            assertParamExists('listEnvNodeZone', 'environmentName', environmentName)
            const localVarPath = `/api/v1/organizations/{orgName}/environments/{environmentName}/availableZones`
                .replace(`{${"orgName"}}`, encodeURIComponent(String(orgName)))
                .replace(`{${"environmentName"}}`, encodeURIComponent(String(environmentName)));
            // 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 environments
         * @summary List environments
         * @param {string} orgName name of the Org
         * @param {string} [engine] engine name
         * @param {string} [version] version of the engine
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listEnvironment: async (orgName: string, engine?: string, version?: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'orgName' is not null or undefined
            assertParamExists('listEnvironment', 'orgName', orgName)
            const localVarPath = `/api/v1/organizations/{orgName}/environments`
                .replace(`{${"orgName"}}`, encodeURIComponent(String(orgName)));
            // 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)

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

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


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary List environment node group
         * @param {string} environmentName name of the environment
         * @param {Array<string>} [zones] available zone for filtering node groups
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listNodeGroup: async (environmentName: string, zones?: Array<string>, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'environmentName' is not null or undefined
            assertParamExists('listNodeGroup', 'environmentName', environmentName)
            const localVarPath = `/api/v1/environments/{environmentName}/nodeGroups`
                .replace(`{${"environmentName"}}`, encodeURIComponent(String(environmentName)));
            // 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)

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


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

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

/**
 * EnvironmentApi - functional programming interface
 * @export
 */
export const EnvironmentApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = EnvironmentApiAxiosParamCreator(configuration)
    return {
        /**
         * 
         * @summary Get environment
         * @param {string} orgName name of the Org
         * @param {string} environmentName name of the Environment
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getEnvironment(orgName: string, environmentName: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Environment>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getEnvironment(orgName, environmentName, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['EnvironmentApi.getEnvironment']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * 
         * @summary Get environment module information in an environment
         * @param {string} environmentName Environment Name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getEnvironmentModuleInfo(environmentName: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<EnvironmentModuleInfo>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getEnvironmentModuleInfo(environmentName, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['EnvironmentApi.getEnvironmentModuleInfo']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * List available zones of an environment
         * @summary List the availability zones where the environment\'s nodes are located
         * @param {string} orgName name of the Org
         * @param {string} environmentName name of the Environment
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async listEnvNodeZone(orgName: string, environmentName: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<string>>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.listEnvNodeZone(orgName, environmentName, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['EnvironmentApi.listEnvNodeZone']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * List environments
         * @summary List environments
         * @param {string} orgName name of the Org
         * @param {string} [engine] engine name
         * @param {string} [version] version of the engine
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async listEnvironment(orgName: string, engine?: string, version?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<EnvironmentList>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.listEnvironment(orgName, engine, version, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['EnvironmentApi.listEnvironment']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * 
         * @summary List environment node group
         * @param {string} environmentName name of the environment
         * @param {Array<string>} [zones] available zone for filtering node groups
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async listNodeGroup(environmentName: string, zones?: Array<string>, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<NodeGroup>>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.listNodeGroup(environmentName, zones, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['EnvironmentApi.listNodeGroup']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
    }
};

/**
 * EnvironmentApi - factory interface
 * @export
 */
export const EnvironmentApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = EnvironmentApiFp(configuration)
    return {
        /**
         * 
         * @summary Get environment
         * @param {EnvironmentApiGetEnvironmentRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getEnvironment(requestParameters: EnvironmentApiGetEnvironmentRequest, options?: RawAxiosRequestConfig): AxiosPromise<Environment> {
            return localVarFp.getEnvironment(requestParameters.orgName, requestParameters.environmentName, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Get environment module information in an environment
         * @param {EnvironmentApiGetEnvironmentModuleInfoRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getEnvironmentModuleInfo(requestParameters: EnvironmentApiGetEnvironmentModuleInfoRequest, options?: RawAxiosRequestConfig): AxiosPromise<EnvironmentModuleInfo> {
            return localVarFp.getEnvironmentModuleInfo(requestParameters.environmentName, options).then((request) => request(axios, basePath));
        },
        /**
         * List available zones of an environment
         * @summary List the availability zones where the environment\'s nodes are located
         * @param {EnvironmentApiListEnvNodeZoneRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listEnvNodeZone(requestParameters: EnvironmentApiListEnvNodeZoneRequest, options?: RawAxiosRequestConfig): AxiosPromise<Array<string>> {
            return localVarFp.listEnvNodeZone(requestParameters.orgName, requestParameters.environmentName, options).then((request) => request(axios, basePath));
        },
        /**
         * List environments
         * @summary List environments
         * @param {EnvironmentApiListEnvironmentRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listEnvironment(requestParameters: EnvironmentApiListEnvironmentRequest, options?: RawAxiosRequestConfig): AxiosPromise<EnvironmentList> {
            return localVarFp.listEnvironment(requestParameters.orgName, requestParameters.engine, requestParameters.version, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary List environment node group
         * @param {EnvironmentApiListNodeGroupRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listNodeGroup(requestParameters: EnvironmentApiListNodeGroupRequest, options?: RawAxiosRequestConfig): AxiosPromise<Array<NodeGroup>> {
            return localVarFp.listNodeGroup(requestParameters.environmentName, requestParameters.zones, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * EnvironmentApi - interface
 * @export
 * @interface EnvironmentApi
 */
export interface EnvironmentApiInterface {
    /**
     * 
     * @summary Get environment
     * @param {EnvironmentApiGetEnvironmentRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentApiInterface
     */
    getEnvironment(requestParameters: EnvironmentApiGetEnvironmentRequest, options?: RawAxiosRequestConfig): AxiosPromise<Environment>;

    /**
     * 
     * @summary Get environment module information in an environment
     * @param {EnvironmentApiGetEnvironmentModuleInfoRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentApiInterface
     */
    getEnvironmentModuleInfo(requestParameters: EnvironmentApiGetEnvironmentModuleInfoRequest, options?: RawAxiosRequestConfig): AxiosPromise<EnvironmentModuleInfo>;

    /**
     * List available zones of an environment
     * @summary List the availability zones where the environment\'s nodes are located
     * @param {EnvironmentApiListEnvNodeZoneRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentApiInterface
     */
    listEnvNodeZone(requestParameters: EnvironmentApiListEnvNodeZoneRequest, options?: RawAxiosRequestConfig): AxiosPromise<Array<string>>;

    /**
     * List environments
     * @summary List environments
     * @param {EnvironmentApiListEnvironmentRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentApiInterface
     */
    listEnvironment(requestParameters: EnvironmentApiListEnvironmentRequest, options?: RawAxiosRequestConfig): AxiosPromise<EnvironmentList>;

    /**
     * 
     * @summary List environment node group
     * @param {EnvironmentApiListNodeGroupRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentApiInterface
     */
    listNodeGroup(requestParameters: EnvironmentApiListNodeGroupRequest, options?: RawAxiosRequestConfig): AxiosPromise<Array<NodeGroup>>;

}

/**
 * Request parameters for getEnvironment operation in EnvironmentApi.
 * @export
 * @interface EnvironmentApiGetEnvironmentRequest
 */
export interface EnvironmentApiGetEnvironmentRequest {
    /**
     * name of the Org
     * @type {string}
     * @memberof EnvironmentApiGetEnvironment
     */
    readonly orgName: string

    /**
     * name of the Environment
     * @type {string}
     * @memberof EnvironmentApiGetEnvironment
     */
    readonly environmentName: string
}

/**
 * Request parameters for getEnvironmentModuleInfo operation in EnvironmentApi.
 * @export
 * @interface EnvironmentApiGetEnvironmentModuleInfoRequest
 */
export interface EnvironmentApiGetEnvironmentModuleInfoRequest {
    /**
     * Environment Name
     * @type {string}
     * @memberof EnvironmentApiGetEnvironmentModuleInfo
     */
    readonly environmentName: string
}

/**
 * Request parameters for listEnvNodeZone operation in EnvironmentApi.
 * @export
 * @interface EnvironmentApiListEnvNodeZoneRequest
 */
export interface EnvironmentApiListEnvNodeZoneRequest {
    /**
     * name of the Org
     * @type {string}
     * @memberof EnvironmentApiListEnvNodeZone
     */
    readonly orgName: string

    /**
     * name of the Environment
     * @type {string}
     * @memberof EnvironmentApiListEnvNodeZone
     */
    readonly environmentName: string
}

/**
 * Request parameters for listEnvironment operation in EnvironmentApi.
 * @export
 * @interface EnvironmentApiListEnvironmentRequest
 */
export interface EnvironmentApiListEnvironmentRequest {
    /**
     * name of the Org
     * @type {string}
     * @memberof EnvironmentApiListEnvironment
     */
    readonly orgName: string

    /**
     * engine name
     * @type {string}
     * @memberof EnvironmentApiListEnvironment
     */
    readonly engine?: string

    /**
     * version of the engine
     * @type {string}
     * @memberof EnvironmentApiListEnvironment
     */
    readonly version?: string
}

/**
 * Request parameters for listNodeGroup operation in EnvironmentApi.
 * @export
 * @interface EnvironmentApiListNodeGroupRequest
 */
export interface EnvironmentApiListNodeGroupRequest {
    /**
     * name of the environment
     * @type {string}
     * @memberof EnvironmentApiListNodeGroup
     */
    readonly environmentName: string

    /**
     * available zone for filtering node groups
     * @type {Array<string>}
     * @memberof EnvironmentApiListNodeGroup
     */
    readonly zones?: Array<string>
}

/**
 * EnvironmentApi - object-oriented interface
 * @export
 * @class EnvironmentApi
 * @extends {BaseAPI}
 */
export class EnvironmentApi extends BaseAPI implements EnvironmentApiInterface {
    /**
     * 
     * @summary Get environment
     * @param {EnvironmentApiGetEnvironmentRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentApi
     */
    public getEnvironment(requestParameters: EnvironmentApiGetEnvironmentRequest, options?: RawAxiosRequestConfig) {
        return EnvironmentApiFp(this.configuration).getEnvironment(requestParameters.orgName, requestParameters.environmentName, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Get environment module information in an environment
     * @param {EnvironmentApiGetEnvironmentModuleInfoRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentApi
     */
    public getEnvironmentModuleInfo(requestParameters: EnvironmentApiGetEnvironmentModuleInfoRequest, options?: RawAxiosRequestConfig) {
        return EnvironmentApiFp(this.configuration).getEnvironmentModuleInfo(requestParameters.environmentName, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List available zones of an environment
     * @summary List the availability zones where the environment\'s nodes are located
     * @param {EnvironmentApiListEnvNodeZoneRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentApi
     */
    public listEnvNodeZone(requestParameters: EnvironmentApiListEnvNodeZoneRequest, options?: RawAxiosRequestConfig) {
        return EnvironmentApiFp(this.configuration).listEnvNodeZone(requestParameters.orgName, requestParameters.environmentName, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List environments
     * @summary List environments
     * @param {EnvironmentApiListEnvironmentRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentApi
     */
    public listEnvironment(requestParameters: EnvironmentApiListEnvironmentRequest, options?: RawAxiosRequestConfig) {
        return EnvironmentApiFp(this.configuration).listEnvironment(requestParameters.orgName, requestParameters.engine, requestParameters.version, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary List environment node group
     * @param {EnvironmentApiListNodeGroupRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentApi
     */
    public listNodeGroup(requestParameters: EnvironmentApiListNodeGroupRequest, options?: RawAxiosRequestConfig) {
        return EnvironmentApiFp(this.configuration).listNodeGroup(requestParameters.environmentName, requestParameters.zones, options).then((request) => request(this.axios, this.basePath));
    }
}

