@apistudio/apim-cli
Version:
CLI for API Management Products
130 lines • 9.43 kB
TypeScript
/**
* 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