/* tslint:disable */ /* eslint-disable */ /** * Sonatype Lifecycle Public REST API * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) * * The version of the OpenAPI document: 1.207.0-01 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ import * as runtime from '../runtime'; import type { ApiBulkComponentRemediationRequestDTO, ApiComponentDTOV2, ApiComponentDetailsRequestDTOV2, ApiComponentDetailsResultDTOV2, ApiComponentOrPurlIdentifierDTOV2, GetSuggestedRemediationForComponent200Response, } from '../models/index'; import { ApiBulkComponentRemediationRequestDTOFromJSON, ApiBulkComponentRemediationRequestDTOToJSON, ApiComponentDTOV2FromJSON, ApiComponentDTOV2ToJSON, ApiComponentDetailsRequestDTOV2FromJSON, ApiComponentDetailsRequestDTOV2ToJSON, ApiComponentDetailsResultDTOV2FromJSON, ApiComponentDetailsResultDTOV2ToJSON, ApiComponentOrPurlIdentifierDTOV2FromJSON, ApiComponentOrPurlIdentifierDTOV2ToJSON, GetSuggestedRemediationForComponent200ResponseFromJSON, GetSuggestedRemediationForComponent200ResponseToJSON, } from '../models/index'; export interface ComponentsApiDeleteComponentLabelRequest { ownerType: DeleteComponentLabelOwnerTypeEnum; internalOwnerId: string; componentHash: string; labelName: string; } export interface ComponentsApiGetComponentDetailsRequest { apiComponentDetailsRequestDTOV2: ApiComponentDetailsRequestDTOV2; } export interface ComponentsApiGetComponentVersionsRequest { apiComponentOrPurlIdentifierDTOV2?: ApiComponentOrPurlIdentifierDTOV2; } export interface ComponentsApiGetSuggestedRemediationForComponentRequest { ownerType: GetSuggestedRemediationForComponentOwnerTypeEnum; ownerId: string; stageId?: string; identificationSource?: string; scanId?: string; includeParentRemediation?: boolean; apiComponentDTOV2?: ApiComponentDTOV2; } export interface ComponentsApiGetSuggestedRemediationForComponentsRequest { ownerType: GetSuggestedRemediationForComponentsOwnerTypeEnum; ownerId: string; stageId?: string; identificationSource?: string; scanId?: string; includeParentRemediation?: boolean; apiBulkComponentRemediationRequestDTO?: ApiBulkComponentRemediationRequestDTO; } export interface ComponentsApiSetComponentLabelRequest { ownerType: SetComponentLabelOwnerTypeEnum; internalOwnerId: string; componentHash: string; labelName: string; } /** * ComponentsApi - interface * * @export * @interface ComponentsApiInterface */ export interface ComponentsApiInterface { /** * Use this method to un-assign a label from a component. * @param {'application' | 'organization'} ownerType Possible values: application or organization * @param {string} internalOwnerId Possible values : applicationId or organizationId * @param {string} componentHash Enter the SHA1 hash of the component. * @param {string} labelName Enter the label name to un-assign from this component. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ComponentsApiInterface */ deleteComponentLabelRaw(requestParameters: ComponentsApiDeleteComponentLabelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** * Use this method to un-assign a label from a component. */ deleteComponentLabel(requestParameters: ComponentsApiDeleteComponentLabelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** * Use this method to retrieve data related to a component. * @param {ApiComponentDetailsRequestDTOV2} apiComponentDetailsRequestDTOV2 You can retrieve component data in any one of the 3 ways via: 1. Component identifier 2. Package URL 3. Hash * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ComponentsApiInterface */ getComponentDetailsRaw(requestParameters: ComponentsApiGetComponentDetailsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** * Use this method to retrieve data related to a component. */ getComponentDetails(requestParameters: ComponentsApiGetComponentDetailsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** * Use this method to retrieve all known versions of a component. * @param {ApiComponentOrPurlIdentifierDTOV2} [apiComponentOrPurlIdentifierDTOV2] Possible values: Component identifier or packageURL (pURL) identifier in the correct format. Use a-name for JavaScript components. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ComponentsApiInterface */ getComponentVersionsRaw(requestParameters: ComponentsApiGetComponentVersionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; /** * Use this method to retrieve all known versions of a component. */ getComponentVersions(requestParameters: ComponentsApiGetComponentVersionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** * Use this method to obtain remediation suggestions for policy violations on a component basis. Remediations obtained from this method are same as those appearing on the Component Details Page in the UI. * @param {'application' | 'organization' | 'repository'} ownerType Possible values: application, organization, repository. * @param {string} ownerId Possible values: applicationId, organizationId or repositoryId. * @param {string} [stageId] Enter the stageId to obtain next-non-failing and next-non-failing-with-dependencies remediation types in the response. Possible values are develop, build, stage-release, release and operate. * @param {string} [identificationSource] Enter the identification source if you want the remediation result based on third-party scan information (non-Sonatype). The identification source can be obtained from the Component Details Page in the UI. * @param {string} [scanId] Enter the scanId (reportId) if you want the remediation result based on third-party scan information (non-Sonatype). * @param {boolean} [includeParentRemediation] Enter true if you want to include parent remediation for transitive dependency in the response based on your application policy scan. * @param {ApiComponentDTOV2} [apiComponentDTOV2] * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ComponentsApiInterface */ getSuggestedRemediationForComponentRaw(requestParameters: ComponentsApiGetSuggestedRemediationForComponentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** * Use this method to obtain remediation suggestions for policy violations on a component basis. Remediations obtained from this method are same as those appearing on the Component Details Page in the UI. */ getSuggestedRemediationForComponent(requestParameters: ComponentsApiGetSuggestedRemediationForComponentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** * Bulk variant of the component remediation endpoint. Accepts a list of components and returns a per-component result for each. This is intended for callers (such as the ServiceNow AppVR integration) that need remediations for many components against the same owner/stage and would otherwise have to make one call per component. The batch is capped at 200 components; larger requests return 400. * @param {'application' | 'organization' | 'repository'} ownerType Possible values: application, organization, repository. * @param {string} ownerId Possible values: applicationId, organizationId or repositoryId. * @param {string} [stageId] Enter the stageId to obtain next-non-failing and next-non-failing-with-dependencies remediation types in the response. Possible values are develop, build, stage-release, release and operate. * @param {string} [identificationSource] Enter the identification source if you want the remediation result based on third-party scan information (non-Sonatype). The identification source can be obtained from the Component Details Page in the UI. * @param {string} [scanId] Enter the scanId (reportId) if you want the remediation result based on third-party scan information (non-Sonatype). * @param {boolean} [includeParentRemediation] Enter true if you want to include parent remediation for transitive dependency in the response based on your application policy scan. * @param {ApiBulkComponentRemediationRequestDTO} [apiBulkComponentRemediationRequestDTO] * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ComponentsApiInterface */ getSuggestedRemediationForComponentsRaw(requestParameters: ComponentsApiGetSuggestedRemediationForComponentsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** * Bulk variant of the component remediation endpoint. Accepts a list of components and returns a per-component result for each. This is intended for callers (such as the ServiceNow AppVR integration) that need remediations for many components against the same owner/stage and would otherwise have to make one call per component. The batch is capped at 200 components; larger requests return 400. */ getSuggestedRemediationForComponents(requestParameters: ComponentsApiGetSuggestedRemediationForComponentsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** * Use this method to assign an existing label to a component. * @param {'application' | 'organization'} ownerType Possible values: application or organization * @param {string} internalOwnerId Possible values : applicationId or organizationId * @param {string} componentHash Enter the SHA1 hash of the component. * @param {string} labelName Enter the label name to assign to this component. * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof ComponentsApiInterface */ setComponentLabelRaw(requestParameters: ComponentsApiSetComponentLabelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** * Use this method to assign an existing label to a component. */ setComponentLabel(requestParameters: ComponentsApiSetComponentLabelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; } /** * */ export class ComponentsApi extends runtime.BaseAPI implements ComponentsApiInterface { /** * Use this method to un-assign a label from a component. */ async deleteComponentLabelRaw(requestParameters: ComponentsApiDeleteComponentLabelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { if (requestParameters['ownerType'] == null) { throw new runtime.RequiredError( 'ownerType', 'Required parameter "ownerType" was null or undefined when calling deleteComponentLabel().' ); } if (requestParameters['internalOwnerId'] == null) { throw new runtime.RequiredError( 'internalOwnerId', 'Required parameter "internalOwnerId" was null or undefined when calling deleteComponentLabel().' ); } if (requestParameters['componentHash'] == null) { throw new runtime.RequiredError( 'componentHash', 'Required parameter "componentHash" was null or undefined when calling deleteComponentLabel().' ); } if (requestParameters['labelName'] == null) { throw new runtime.RequiredError( 'labelName', 'Required parameter "labelName" was null or undefined when calling deleteComponentLabel().' ); } const queryParameters: any = {}; const headerParameters: runtime.HTTPHeaders = {}; if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); } if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; const tokenString = await token("BearerAuth", []); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; } } let urlPath = `/api/v2/components/{componentHash}/labels/{labelName}/{ownerType}s/{internalOwnerId}`; urlPath = urlPath.replace(`{${"ownerType"}}`, encodeURIComponent(String(requestParameters['ownerType']))); urlPath = urlPath.replace(`{${"internalOwnerId"}}`, encodeURIComponent(String(requestParameters['internalOwnerId']))); urlPath = urlPath.replace(`{${"componentHash"}}`, encodeURIComponent(String(requestParameters['componentHash']))); urlPath = urlPath.replace(`{${"labelName"}}`, encodeURIComponent(String(requestParameters['labelName']))); const response = await this.request({ path: urlPath, method: 'DELETE', headers: headerParameters, query: queryParameters, }, initOverrides); return new runtime.VoidApiResponse(response); } /** * Use this method to un-assign a label from a component. */ async deleteComponentLabel(requestParameters: ComponentsApiDeleteComponentLabelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { await this.deleteComponentLabelRaw(requestParameters, initOverrides); } /** * Use this method to retrieve data related to a component. */ async getComponentDetailsRaw(requestParameters: ComponentsApiGetComponentDetailsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { if (requestParameters['apiComponentDetailsRequestDTOV2'] == null) { throw new runtime.RequiredError( 'apiComponentDetailsRequestDTOV2', 'Required parameter "apiComponentDetailsRequestDTOV2" was null or undefined when calling getComponentDetails().' ); } const queryParameters: any = {}; const headerParameters: runtime.HTTPHeaders = {}; headerParameters['Content-Type'] = 'application/json'; if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); } if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; const tokenString = await token("BearerAuth", []); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; } } let urlPath = `/api/v2/components/details`; const response = await this.request({ path: urlPath, method: 'POST', headers: headerParameters, query: queryParameters, body: ApiComponentDetailsRequestDTOV2ToJSON(requestParameters['apiComponentDetailsRequestDTOV2']), }, initOverrides); return new runtime.JSONApiResponse(response, (jsonValue) => ApiComponentDetailsResultDTOV2FromJSON(jsonValue)); } /** * Use this method to retrieve data related to a component. */ async getComponentDetails(requestParameters: ComponentsApiGetComponentDetailsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { const response = await this.getComponentDetailsRaw(requestParameters, initOverrides); return await response.value(); } /** * Use this method to retrieve all known versions of a component. */ async getComponentVersionsRaw(requestParameters: ComponentsApiGetComponentVersionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { const queryParameters: any = {}; const headerParameters: runtime.HTTPHeaders = {}; headerParameters['Content-Type'] = 'application/json'; if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); } if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; const tokenString = await token("BearerAuth", []); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; } } let urlPath = `/api/v2/components/versions`; const response = await this.request({ path: urlPath, method: 'POST', headers: headerParameters, query: queryParameters, body: ApiComponentOrPurlIdentifierDTOV2ToJSON(requestParameters['apiComponentOrPurlIdentifierDTOV2']), }, initOverrides); return new runtime.JSONApiResponse(response); } /** * Use this method to retrieve all known versions of a component. */ async getComponentVersions(requestParameters: ComponentsApiGetComponentVersionsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { const response = await this.getComponentVersionsRaw(requestParameters, initOverrides); return await response.value(); } /** * Use this method to obtain remediation suggestions for policy violations on a component basis. Remediations obtained from this method are same as those appearing on the Component Details Page in the UI. */ async getSuggestedRemediationForComponentRaw(requestParameters: ComponentsApiGetSuggestedRemediationForComponentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { if (requestParameters['ownerType'] == null) { throw new runtime.RequiredError( 'ownerType', 'Required parameter "ownerType" was null or undefined when calling getSuggestedRemediationForComponent().' ); } if (requestParameters['ownerId'] == null) { throw new runtime.RequiredError( 'ownerId', 'Required parameter "ownerId" was null or undefined when calling getSuggestedRemediationForComponent().' ); } const queryParameters: any = {}; if (requestParameters['stageId'] != null) { queryParameters['stageId'] = requestParameters['stageId']; } if (requestParameters['identificationSource'] != null) { queryParameters['identificationSource'] = requestParameters['identificationSource']; } if (requestParameters['scanId'] != null) { queryParameters['scanId'] = requestParameters['scanId']; } if (requestParameters['includeParentRemediation'] != null) { queryParameters['includeParentRemediation'] = requestParameters['includeParentRemediation']; } const headerParameters: runtime.HTTPHeaders = {}; headerParameters['Content-Type'] = 'application/json'; if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); } if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; const tokenString = await token("BearerAuth", []); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; } } let urlPath = `/api/v2/components/remediation/{ownerType}/{ownerId}`; urlPath = urlPath.replace(`{${"ownerType"}}`, encodeURIComponent(String(requestParameters['ownerType']))); urlPath = urlPath.replace(`{${"ownerId"}}`, encodeURIComponent(String(requestParameters['ownerId']))); const response = await this.request({ path: urlPath, method: 'POST', headers: headerParameters, query: queryParameters, body: ApiComponentDTOV2ToJSON(requestParameters['apiComponentDTOV2']), }, initOverrides); return new runtime.JSONApiResponse(response, (jsonValue) => GetSuggestedRemediationForComponent200ResponseFromJSON(jsonValue)); } /** * Use this method to obtain remediation suggestions for policy violations on a component basis. Remediations obtained from this method are same as those appearing on the Component Details Page in the UI. */ async getSuggestedRemediationForComponent(requestParameters: ComponentsApiGetSuggestedRemediationForComponentRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { const response = await this.getSuggestedRemediationForComponentRaw(requestParameters, initOverrides); return await response.value(); } /** * Bulk variant of the component remediation endpoint. Accepts a list of components and returns a per-component result for each. This is intended for callers (such as the ServiceNow AppVR integration) that need remediations for many components against the same owner/stage and would otherwise have to make one call per component. The batch is capped at 200 components; larger requests return 400. */ async getSuggestedRemediationForComponentsRaw(requestParameters: ComponentsApiGetSuggestedRemediationForComponentsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { if (requestParameters['ownerType'] == null) { throw new runtime.RequiredError( 'ownerType', 'Required parameter "ownerType" was null or undefined when calling getSuggestedRemediationForComponents().' ); } if (requestParameters['ownerId'] == null) { throw new runtime.RequiredError( 'ownerId', 'Required parameter "ownerId" was null or undefined when calling getSuggestedRemediationForComponents().' ); } const queryParameters: any = {}; if (requestParameters['stageId'] != null) { queryParameters['stageId'] = requestParameters['stageId']; } if (requestParameters['identificationSource'] != null) { queryParameters['identificationSource'] = requestParameters['identificationSource']; } if (requestParameters['scanId'] != null) { queryParameters['scanId'] = requestParameters['scanId']; } if (requestParameters['includeParentRemediation'] != null) { queryParameters['includeParentRemediation'] = requestParameters['includeParentRemediation']; } const headerParameters: runtime.HTTPHeaders = {}; headerParameters['Content-Type'] = 'application/json'; if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); } if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; const tokenString = await token("BearerAuth", []); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; } } let urlPath = `/api/v2/components/remediation/{ownerType}/{ownerId}/bulk`; urlPath = urlPath.replace(`{${"ownerType"}}`, encodeURIComponent(String(requestParameters['ownerType']))); urlPath = urlPath.replace(`{${"ownerId"}}`, encodeURIComponent(String(requestParameters['ownerId']))); const response = await this.request({ path: urlPath, method: 'POST', headers: headerParameters, query: queryParameters, body: ApiBulkComponentRemediationRequestDTOToJSON(requestParameters['apiBulkComponentRemediationRequestDTO']), }, initOverrides); return new runtime.VoidApiResponse(response); } /** * Bulk variant of the component remediation endpoint. Accepts a list of components and returns a per-component result for each. This is intended for callers (such as the ServiceNow AppVR integration) that need remediations for many components against the same owner/stage and would otherwise have to make one call per component. The batch is capped at 200 components; larger requests return 400. */ async getSuggestedRemediationForComponents(requestParameters: ComponentsApiGetSuggestedRemediationForComponentsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { await this.getSuggestedRemediationForComponentsRaw(requestParameters, initOverrides); } /** * Use this method to assign an existing label to a component. */ async setComponentLabelRaw(requestParameters: ComponentsApiSetComponentLabelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { if (requestParameters['ownerType'] == null) { throw new runtime.RequiredError( 'ownerType', 'Required parameter "ownerType" was null or undefined when calling setComponentLabel().' ); } if (requestParameters['internalOwnerId'] == null) { throw new runtime.RequiredError( 'internalOwnerId', 'Required parameter "internalOwnerId" was null or undefined when calling setComponentLabel().' ); } if (requestParameters['componentHash'] == null) { throw new runtime.RequiredError( 'componentHash', 'Required parameter "componentHash" was null or undefined when calling setComponentLabel().' ); } if (requestParameters['labelName'] == null) { throw new runtime.RequiredError( 'labelName', 'Required parameter "labelName" was null or undefined when calling setComponentLabel().' ); } const queryParameters: any = {}; const headerParameters: runtime.HTTPHeaders = {}; if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); } if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; const tokenString = await token("BearerAuth", []); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; } } let urlPath = `/api/v2/components/{componentHash}/labels/{labelName}/{ownerType}s/{internalOwnerId}`; urlPath = urlPath.replace(`{${"ownerType"}}`, encodeURIComponent(String(requestParameters['ownerType']))); urlPath = urlPath.replace(`{${"internalOwnerId"}}`, encodeURIComponent(String(requestParameters['internalOwnerId']))); urlPath = urlPath.replace(`{${"componentHash"}}`, encodeURIComponent(String(requestParameters['componentHash']))); urlPath = urlPath.replace(`{${"labelName"}}`, encodeURIComponent(String(requestParameters['labelName']))); const response = await this.request({ path: urlPath, method: 'POST', headers: headerParameters, query: queryParameters, }, initOverrides); return new runtime.VoidApiResponse(response); } /** * Use this method to assign an existing label to a component. */ async setComponentLabel(requestParameters: ComponentsApiSetComponentLabelRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { await this.setComponentLabelRaw(requestParameters, initOverrides); } } /** * @export */ export const DeleteComponentLabelOwnerTypeEnum = { Application: 'application', Organization: 'organization' } as const; export type DeleteComponentLabelOwnerTypeEnum = typeof DeleteComponentLabelOwnerTypeEnum[keyof typeof DeleteComponentLabelOwnerTypeEnum]; /** * @export */ export const GetSuggestedRemediationForComponentOwnerTypeEnum = { Application: 'application', Organization: 'organization', Repository: 'repository' } as const; export type GetSuggestedRemediationForComponentOwnerTypeEnum = typeof GetSuggestedRemediationForComponentOwnerTypeEnum[keyof typeof GetSuggestedRemediationForComponentOwnerTypeEnum]; /** * @export */ export const GetSuggestedRemediationForComponentsOwnerTypeEnum = { Application: 'application', Organization: 'organization', Repository: 'repository' } as const; export type GetSuggestedRemediationForComponentsOwnerTypeEnum = typeof GetSuggestedRemediationForComponentsOwnerTypeEnum[keyof typeof GetSuggestedRemediationForComponentsOwnerTypeEnum]; /** * @export */ export const SetComponentLabelOwnerTypeEnum = { Application: 'application', Organization: 'organization' } as const; export type SetComponentLabelOwnerTypeEnum = typeof SetComponentLabelOwnerTypeEnum[keyof typeof SetComponentLabelOwnerTypeEnum];