UNPKG

ask-smapi-sdk

Version:
83 lines (82 loc) 2.38 kB
/** * Introspects on the Skill Management API (SMAPI) model. */ export declare class ModelIntrospector { private operations; private definitions; private modelJson; private customizationProcessor; constructor(modelJson?: any, customizationProcessor?: CustomizationProcessor); /** * Returns the operation definition for a given Skill Management API (SMAPI) operation. * @param operationName operation name */ getOperationDefinition(operationName: string): ApiOperation; /** * Returns a Map of all Skill Management API (SMAPI) operations */ getOperations(): Map<string, ApiOperation>; private processModel; } /** * Customization processors are executed while processing a specification and can apply custom logic. */ export interface CustomizationProcessor { /** * Processes an API operation name * @param operationName operation name */ processOperationName(operationName: string): string; /** * Processes an API operation * @param operationName processed operation name * @param operation operation definition * @param definitions map of modeled API definitions */ processOperation(operationName: string, operation: ApiOperation, definitions: Map<string, TypeDefinition>): void; /** * Processes an API parameter * @param parameter parameter definition * @param parentOperation operation this parameter belongs to * @param definitions map of modeled API definitions */ processParameter(parameter: ApiParameter, parentOperation: ApiOperation, definitions: Map<string, TypeDefinition>): void; } /** * Represents an API operation. */ export interface ApiOperation { apiOperationName: string; apiVersion: number; description: string; params: ApiParameter[]; customizationMetadata: { [key: string]: any; }; } /** * Represents an API type definition. */ export interface TypeDefinition { type: string; description: string; required: boolean; enum: string[]; items: {}; properties: { [key: string]: ApiParameter; }; } /** * Represents an API parameter. */ export interface ApiParameter extends TypeDefinition { name: string; schema: { $ref: string; }; $ref: string; customizationMetadata: { [key: string]: any; }; }