/* 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 { ClusterTags } from '../models';
// @ts-ignore
import type { OrgTagsList } from '../models';
// @ts-ignore
import type { Tag } from '../models';
// @ts-ignore
import type { TagCreate } from '../models';
// @ts-ignore
import type { TagUpdate } from '../models';
/**
 * ClusterTagApi - axios parameter creator
 * @export
 */
export const ClusterTagApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * create tag
         * @summary Create cluster tags
         * @param {string} orgName 
         * @param {TagCreate} body 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createTag: async (orgName: string, body: TagCreate, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'orgName' is not null or undefined
            assertParamExists('createTag', 'orgName', orgName)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('createTag', 'body', body)
            const localVarPath = `/api/v1/organizations/{orgName}/tags`
                .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: '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(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * delete cluster tag
         * @summary Delete tag
         * @param {string} orgName 
         * @param {string} tagId 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteTag: async (orgName: string, tagId: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'orgName' is not null or undefined
            assertParamExists('deleteTag', 'orgName', orgName)
            // verify required parameter 'tagId' is not null or undefined
            assertParamExists('deleteTag', 'tagId', tagId)
            const localVarPath = `/api/v1/organizations/{orgName}/tags/{tagId}`
                .replace(`{${"orgName"}}`, encodeURIComponent(String(orgName)))
                .replace(`{${"tagId"}}`, encodeURIComponent(String(tagId)));
            // 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,
            };
        },
        /**
         * 
         * @summary Get cluster tags
         * @param {string} orgName name of the Org
         * @param {string} clusterIds Comma-separated list of cluster IDs
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTags: async (orgName: string, clusterIds: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'orgName' is not null or undefined
            assertParamExists('getTags', 'orgName', orgName)
            // verify required parameter 'clusterIds' is not null or undefined
            assertParamExists('getTags', 'clusterIds', clusterIds)
            const localVarPath = `/api/v1/organizations/{orgName}/clusterTags`
                .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 (clusterIds !== undefined) {
                localVarQueryParameter['clusterIds'] = clusterIds;
            }


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List tags by organization name.
         * @summary List tags by organization name
         * @param {string} orgName name of the Org
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listOrgTags: async (orgName: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'orgName' is not null or undefined
            assertParamExists('listOrgTags', 'orgName', orgName)
            const localVarPath = `/api/v1/organizations/{orgName}/tags`
                .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)


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

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update cluster tags
         * @param {string} orgName 
         * @param {string} tagId 
         * @param {TagUpdate} tagUpdate 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateTag: async (orgName: string, tagId: string, tagUpdate: TagUpdate, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'orgName' is not null or undefined
            assertParamExists('updateTag', 'orgName', orgName)
            // verify required parameter 'tagId' is not null or undefined
            assertParamExists('updateTag', 'tagId', tagId)
            // verify required parameter 'tagUpdate' is not null or undefined
            assertParamExists('updateTag', 'tagUpdate', tagUpdate)
            const localVarPath = `/api/v1/organizations/{orgName}/tags/{tagId}`
                .replace(`{${"orgName"}}`, encodeURIComponent(String(orgName)))
                .replace(`{${"tagId"}}`, encodeURIComponent(String(tagId)));
            // 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(tagUpdate, localVarRequestOptions, configuration)

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

/**
 * ClusterTagApi - functional programming interface
 * @export
 */
export const ClusterTagApiFp = function(configuration?: Configuration) {
    const localVarAxiosParamCreator = ClusterTagApiAxiosParamCreator(configuration)
    return {
        /**
         * create tag
         * @summary Create cluster tags
         * @param {string} orgName 
         * @param {TagCreate} body 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async createTag(orgName: string, body: TagCreate, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TagCreate>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.createTag(orgName, body, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['ClusterTagApi.createTag']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * delete cluster tag
         * @summary Delete tag
         * @param {string} orgName 
         * @param {string} tagId 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async deleteTag(orgName: string, tagId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.deleteTag(orgName, tagId, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['ClusterTagApi.deleteTag']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * 
         * @summary Get cluster tags
         * @param {string} orgName name of the Org
         * @param {string} clusterIds Comma-separated list of cluster IDs
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getTags(orgName: string, clusterIds: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<ClusterTags>>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getTags(orgName, clusterIds, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['ClusterTagApi.getTags']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * List tags by organization name.
         * @summary List tags by organization name
         * @param {string} orgName name of the Org
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async listOrgTags(orgName: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<OrgTagsList>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.listOrgTags(orgName, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['ClusterTagApi.listOrgTags']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
        /**
         * Update cluster tags
         * @param {string} orgName 
         * @param {string} tagId 
         * @param {TagUpdate} tagUpdate 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async updateTag(orgName: string, tagId: string, tagUpdate: TagUpdate, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Tag>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.updateTag(orgName, tagId, tagUpdate, options);
            const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
            const localVarOperationServerBasePath = operationServerMap['ClusterTagApi.updateTag']?.[localVarOperationServerIndex]?.url;
            return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
        },
    }
};

/**
 * ClusterTagApi - factory interface
 * @export
 */
export const ClusterTagApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = ClusterTagApiFp(configuration)
    return {
        /**
         * create tag
         * @summary Create cluster tags
         * @param {ClusterTagApiCreateTagRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createTag(requestParameters: ClusterTagApiCreateTagRequest, options?: RawAxiosRequestConfig): AxiosPromise<TagCreate> {
            return localVarFp.createTag(requestParameters.orgName, requestParameters.body, options).then((request) => request(axios, basePath));
        },
        /**
         * delete cluster tag
         * @summary Delete tag
         * @param {ClusterTagApiDeleteTagRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteTag(requestParameters: ClusterTagApiDeleteTagRequest, options?: RawAxiosRequestConfig): AxiosPromise<void> {
            return localVarFp.deleteTag(requestParameters.orgName, requestParameters.tagId, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Get cluster tags
         * @param {ClusterTagApiGetTagsRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTags(requestParameters: ClusterTagApiGetTagsRequest, options?: RawAxiosRequestConfig): AxiosPromise<Array<ClusterTags>> {
            return localVarFp.getTags(requestParameters.orgName, requestParameters.clusterIds, options).then((request) => request(axios, basePath));
        },
        /**
         * List tags by organization name.
         * @summary List tags by organization name
         * @param {ClusterTagApiListOrgTagsRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listOrgTags(requestParameters: ClusterTagApiListOrgTagsRequest, options?: RawAxiosRequestConfig): AxiosPromise<OrgTagsList> {
            return localVarFp.listOrgTags(requestParameters.orgName, options).then((request) => request(axios, basePath));
        },
        /**
         * Update cluster tags
         * @param {ClusterTagApiUpdateTagRequest} requestParameters Request parameters.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateTag(requestParameters: ClusterTagApiUpdateTagRequest, options?: RawAxiosRequestConfig): AxiosPromise<Tag> {
            return localVarFp.updateTag(requestParameters.orgName, requestParameters.tagId, requestParameters.tagUpdate, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * ClusterTagApi - interface
 * @export
 * @interface ClusterTagApi
 */
export interface ClusterTagApiInterface {
    /**
     * create tag
     * @summary Create cluster tags
     * @param {ClusterTagApiCreateTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ClusterTagApiInterface
     */
    createTag(requestParameters: ClusterTagApiCreateTagRequest, options?: RawAxiosRequestConfig): AxiosPromise<TagCreate>;

    /**
     * delete cluster tag
     * @summary Delete tag
     * @param {ClusterTagApiDeleteTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ClusterTagApiInterface
     */
    deleteTag(requestParameters: ClusterTagApiDeleteTagRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;

    /**
     * 
     * @summary Get cluster tags
     * @param {ClusterTagApiGetTagsRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ClusterTagApiInterface
     */
    getTags(requestParameters: ClusterTagApiGetTagsRequest, options?: RawAxiosRequestConfig): AxiosPromise<Array<ClusterTags>>;

    /**
     * List tags by organization name.
     * @summary List tags by organization name
     * @param {ClusterTagApiListOrgTagsRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ClusterTagApiInterface
     */
    listOrgTags(requestParameters: ClusterTagApiListOrgTagsRequest, options?: RawAxiosRequestConfig): AxiosPromise<OrgTagsList>;

    /**
     * Update cluster tags
     * @param {ClusterTagApiUpdateTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ClusterTagApiInterface
     */
    updateTag(requestParameters: ClusterTagApiUpdateTagRequest, options?: RawAxiosRequestConfig): AxiosPromise<Tag>;

}

/**
 * Request parameters for createTag operation in ClusterTagApi.
 * @export
 * @interface ClusterTagApiCreateTagRequest
 */
export interface ClusterTagApiCreateTagRequest {
    /**
     * 
     * @type {string}
     * @memberof ClusterTagApiCreateTag
     */
    readonly orgName: string

    /**
     * 
     * @type {TagCreate}
     * @memberof ClusterTagApiCreateTag
     */
    readonly body: TagCreate
}

/**
 * Request parameters for deleteTag operation in ClusterTagApi.
 * @export
 * @interface ClusterTagApiDeleteTagRequest
 */
export interface ClusterTagApiDeleteTagRequest {
    /**
     * 
     * @type {string}
     * @memberof ClusterTagApiDeleteTag
     */
    readonly orgName: string

    /**
     * 
     * @type {string}
     * @memberof ClusterTagApiDeleteTag
     */
    readonly tagId: string
}

/**
 * Request parameters for getTags operation in ClusterTagApi.
 * @export
 * @interface ClusterTagApiGetTagsRequest
 */
export interface ClusterTagApiGetTagsRequest {
    /**
     * name of the Org
     * @type {string}
     * @memberof ClusterTagApiGetTags
     */
    readonly orgName: string

    /**
     * Comma-separated list of cluster IDs
     * @type {string}
     * @memberof ClusterTagApiGetTags
     */
    readonly clusterIds: string
}

/**
 * Request parameters for listOrgTags operation in ClusterTagApi.
 * @export
 * @interface ClusterTagApiListOrgTagsRequest
 */
export interface ClusterTagApiListOrgTagsRequest {
    /**
     * name of the Org
     * @type {string}
     * @memberof ClusterTagApiListOrgTags
     */
    readonly orgName: string
}

/**
 * Request parameters for updateTag operation in ClusterTagApi.
 * @export
 * @interface ClusterTagApiUpdateTagRequest
 */
export interface ClusterTagApiUpdateTagRequest {
    /**
     * 
     * @type {string}
     * @memberof ClusterTagApiUpdateTag
     */
    readonly orgName: string

    /**
     * 
     * @type {string}
     * @memberof ClusterTagApiUpdateTag
     */
    readonly tagId: string

    /**
     * 
     * @type {TagUpdate}
     * @memberof ClusterTagApiUpdateTag
     */
    readonly tagUpdate: TagUpdate
}

/**
 * ClusterTagApi - object-oriented interface
 * @export
 * @class ClusterTagApi
 * @extends {BaseAPI}
 */
export class ClusterTagApi extends BaseAPI implements ClusterTagApiInterface {
    /**
     * create tag
     * @summary Create cluster tags
     * @param {ClusterTagApiCreateTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ClusterTagApi
     */
    public createTag(requestParameters: ClusterTagApiCreateTagRequest, options?: RawAxiosRequestConfig) {
        return ClusterTagApiFp(this.configuration).createTag(requestParameters.orgName, requestParameters.body, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * delete cluster tag
     * @summary Delete tag
     * @param {ClusterTagApiDeleteTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ClusterTagApi
     */
    public deleteTag(requestParameters: ClusterTagApiDeleteTagRequest, options?: RawAxiosRequestConfig) {
        return ClusterTagApiFp(this.configuration).deleteTag(requestParameters.orgName, requestParameters.tagId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Get cluster tags
     * @param {ClusterTagApiGetTagsRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ClusterTagApi
     */
    public getTags(requestParameters: ClusterTagApiGetTagsRequest, options?: RawAxiosRequestConfig) {
        return ClusterTagApiFp(this.configuration).getTags(requestParameters.orgName, requestParameters.clusterIds, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List tags by organization name.
     * @summary List tags by organization name
     * @param {ClusterTagApiListOrgTagsRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ClusterTagApi
     */
    public listOrgTags(requestParameters: ClusterTagApiListOrgTagsRequest, options?: RawAxiosRequestConfig) {
        return ClusterTagApiFp(this.configuration).listOrgTags(requestParameters.orgName, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update cluster tags
     * @param {ClusterTagApiUpdateTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ClusterTagApi
     */
    public updateTag(requestParameters: ClusterTagApiUpdateTagRequest, options?: RawAxiosRequestConfig) {
        return ClusterTagApiFp(this.configuration).updateTag(requestParameters.orgName, requestParameters.tagId, requestParameters.tagUpdate, options).then((request) => request(this.axios, this.basePath));
    }
}

