UNPKG

@apistudio/apim-cli

Version:

CLI for API Management Products

130 lines 9.43 kB
/** * Copyright IBM Corp. 2024, 2025 */ import { Product } from '@apic/api-model/package/Product.js'; import { BaseAsset, Metadata, Ref } from '../../common/models/base-asset.model.js'; import { FileAccessType } from './api-spec-handler.interface.js'; import { Plan } from '@apic/api-model/package/Plan.js'; import { Project } from '../../lfs/models/project.model.js'; import { VCSProject } from '../../vcs/models/vcs-project.model.js'; import { AssetInfo } from '../../lfs/models/asset-info.model.js'; import { VCSAssetInfo } from '../../vcs/models/vcs-asset-info.model.js'; import { Quota } from '@apic/api-model/package/Quota.js'; import { AssemblyCountLimitViewTable } from '../store/api-plans-product.store.model.js'; import { AssemblyRateLimitViewTable } from '../store/api-plans-product.store.model.js'; import { OperationsMetadata } from '../../lfs/models/asset-metadata.model.js'; import { OverridePlanMetadata, RateLimitTable } from '../../component-models/models/add-override-plan-quota.model.js'; import { APICProject } from '../../apic-mode/models/apic-project.model.js'; import { APICAssetInfo } from '../../apic-mode/models/apic-asset-info.model.js'; import { SqlInjectionFilterAction, DpNanoGatewayConfig, Property, HostAlias, DpNanoEnvironment, CountLimitDefs } from '../../component-models/models/dp-nano-gateway.model.js'; import { FormViewTableData } from '../../component-models/models/form-view-table-data.model.js'; export type PlanInfo = { productContent?: Product; planContent: Plan; planFile: FileAccessType; }; export type QuotaInfo = { planContent: Plan; quotaContent: Quota; quotaFile: FileAccessType; }; export interface IApiPlansProductHandler { createProduct(metadata: Metadata, subFolderPath?: string): Promise<FileAccessType>; addExisitingAPI(metadata: Metadata[], productFile: FileAccessType): Promise<Product>; addExistingPlanAPI(metadata: Metadata[], planFile: FileAccessType): Promise<any>; removeAPI(productFile: FileAccessType, apiMetadata: Metadata): Promise<Product>; removePlanAPI(planFile: FileAccessType, apiMetadata: Metadata): Promise<any>; removeAllAPIList(planFile: FileAccessType): Promise<any>; updateAPIWithOperation(planFile: FileAccessType, apiMetadata: Metadata, selectedOperations: OperationsMetadata[]): Promise<any>; updatePlanApiWithRateLimits(planFile: FileAccessType, formData: OverridePlanMetadata): Promise<any>; updateNanoGatewayPlanApiWithRateLimits(planFile: FileAccessType, formData: OverridePlanMetadata, rateLimits?: RateLimitTable[]): Promise<any>; removeOverridePlanQuota(planFile: FileAccessType, apiMetadata?: Metadata, operationMethodAndPath?: string, gatewayType?: string): Promise<any>; addExisitingPlan(metadata: Metadata[], productFile: FileAccessType): Promise<Product>; addPlan(metadata: Metadata, productFile?: FileAccessType, subFolderPath?: string): Promise<PlanInfo>; removePlan(productFile: FileAccessType, apiMetadata: Metadata): Promise<Product>; getAPIInfoForProductAsset(productAsset: Product, projects: (Project | VCSProject | APICProject)[]): Promise<Array<AssetInfo | VCSAssetInfo | APICAssetInfo | Ref>>; getPlanInfoForProductAsset(productAsset: Product, projects: (Project | VCSProject | APICProject)[]): Promise<Array<AssetInfo | VCSAssetInfo | APICAssetInfo>>; getAPIInfoForPlanAsset(planAsset: Plan, projects: (Project | VCSProject | APICProject)[]): Promise<Array<AssetInfo | VCSAssetInfo | APICAssetInfo>>; updatePlanMetadata(oldPlanInfo: Metadata, newPlanInfo: Metadata, projects: (Project | VCSProject | APICProject)[], productFile?: FileAccessType): Promise<PlanInfo>; updatePlan(updatedPlanContent: string, planFile: FileAccessType): Promise<void>; addQuota(metadata: Metadata, spec: any, planFile?: FileAccessType, aliasName?: string): Promise<QuotaInfo>; addExisitingQuota(metadata: Metadata, projects: (Project | VCSProject | APICProject)[], planFile: FileAccessType, aliasName?: string): Promise<QuotaInfo>; removeRateLimitInline(planFile: FileAccessType, rateLimitName: string): Promise<Plan>; updateMetadata(newProductInfo: Metadata, productFile: FileAccessType): Promise<BaseAsset>; updateQuota(updatedQuotaContent: string, quotaFile: FileAccessType): Promise<void>; getRateLimitForPlan(projects: (Project | VCSProject | APICProject)[], planAsset: BaseAsset): Promise<any>; removeRateLimitInline(planFile: FileAccessType, rateLimitName: string): Promise<Plan>; updateQuotaMetadata(oldQuotaInfo: Metadata, newQuotaInfo: Metadata, projects: (Project | VCSProject | APICProject)[], planFile: FileAccessType): Promise<QuotaInfo>; removeQuotaList(planFile: FileAccessType, quotaMetadata: Metadata): Promise<Plan>; getAssemblyCountLimitsForPlan(projects: (Project | VCSProject | APICProject)[], planAsset: BaseAsset): Promise<any>; getAssemblyRateLimitsForPlan(projects: (Project | VCSProject | APICProject)[], planAsset: BaseAsset): Promise<any>; addAssemblyCountLimit(planFile: FileAccessType, data: AssemblyCountLimitViewTable[]): Promise<Plan>; addAssemblyRateLimit(planFile: FileAccessType, data: AssemblyRateLimitViewTable[]): Promise<Plan>; updateAssemblyCountLimit(planFile: FileAccessType, oldData: AssemblyCountLimitViewTable, newData: AssemblyCountLimitViewTable): Promise<Plan>; updateAssemblyRateLimit(planFile: FileAccessType, oldData: AssemblyRateLimitViewTable, newData: AssemblyRateLimitViewTable): Promise<Plan>; removeAssemblyCountLimit(planFile: FileAccessType, countLimitName: string): Promise<Plan>; removeAssemblyRateLimit(planFile: FileAccessType, rateLimitName: string): Promise<Plan>; removeRateLimit(planFile: FileAccessType, rateLimitMetadata: Metadata): Promise<Plan>; updateRatelimitMetadata(oldRateLimitInfo: Metadata, newRatelimitInfo: Metadata, projects: (Project | VCSProject | APICProject)[], planFile: FileAccessType): Promise<QuotaInfo>; updateProductInfo(updatedProductInfo: string, productFile: FileAccessType): Promise<void>; getQuotaListForPlan(projects: (Project | VCSProject | APICProject)[], planAsset: BaseAsset): Promise<any>; addSqlInjectionFilter(filterTypeId: string, actionId: SqlInjectionFilterAction, productFile: FileAccessType): Promise<Product>; removeSqlInjectionFilter(filterTypeId: string, productFile: FileAccessType): Promise<Product>; getSQLInjectionFiltersDataFromProduct(productAsset: Product): Promise<FormViewTableData[]>; /** * Updates the DataPower Nano Gateway configuration in a product * @param dpNanoGatewayConfig Configuration options for the gateway * @param productFile The product file to update * @returns Updated product */ updateDpNanoGatewayConfig(dpNanoGatewayConfig: DpNanoGatewayConfig, productFile: FileAccessType): Promise<Product>; /** * Adds a property to the dp-nano-gateway properties in a product * @param property The property to add * @param productFile The product file to update * @returns Updated product */ addProperty(property: Property, productFile: FileAccessType): Promise<Product>; /** * Removes a property from the dp-nano-gateway properties in a product * @param propertyKey The key of the property to remove * @param productFile The product file to update * @returns Updated product */ removeProperty(propertyKey: string, productFile: FileAccessType): Promise<Product>; /** * Gets properties data from a product * @param productAsset The product asset * @returns Array of properties */ getPropertiesFromProduct(productAsset: Product): Promise<Property[]>; addHostAlias(hostAlias: HostAlias, productFile: FileAccessType): Promise<Product>; removeHostAlias(ip: string, productFile: FileAccessType): Promise<Product>; getHostAliasesFromProduct(productAsset: Product): Promise<HostAlias[]>; addDpNanoEnvironment(environment: DpNanoEnvironment, productFile: FileAccessType): Promise<Product>; removeDpNanoEnvironment(envName: string, productFile: FileAccessType): Promise<Product>; getDpEnvironmentFromProduct(productAsset: Product): Promise<DpNanoEnvironment[]>; /** * Gets count limit definitions from a plan * @param planAsset The plan asset * @returns Array of count limit definitions */ getCountLimitDefListFromPlan(projects: (Project | VCSProject | APICProject)[], planAsset: Plan): Promise<CountLimitDefs[]>; /** * Add a count limit definition to the dp-nano-gateway configuration of a plan * @param countLimitDef The count limit definition metadata to add * @param aliasName The alias name for the count limit definition * @param planFile The plan file to update * @returns Updated plan */ addCountLimitDef(countLimitDef: Metadata[], aliasName: string, planFile: FileAccessType): Promise<Plan>; /** * Remove a count limit definition from the dp-nano-gateway configuration of a plan * @param countLimitName The name of the count limit definition to remove * @param aliasName The alias name for the count limit definition * @param planFile The plan file to update * @returns Updated plan */ removeCountLimitDef(countLimitDef: CountLimitDefs, aliasName: string, planFile: FileAccessType): Promise<Plan>; } //# sourceMappingURL=api-plans-product-handler.interface.d.ts.map