UNPKG

@apistudio/apim-cli

Version:

CLI for API Management Products

137 lines 12 kB
/** * Copyright Super iPaaS Integration LLC, an IBM Company 2024 */ import { OpenAPIV2, OpenAPIV3_1, OpenAPIV3 } from "openapi-types"; import { VCSFileInfo } from "../../vcs/models/vcs-file-info.model.js"; import { OpenApiTypesEnum } from "../models/openapi-types.enum.js"; export type OpenApiV3Types = OpenApiTypesEnum.OPENAPI_V3 | OpenApiTypesEnum.OPENAPI_V3_1; export type OpenApiSpecInfo = OpenAPIV2.InfoObject | OpenAPIV3.InfoObject | OpenAPIV3_1.InfoObject; export type OpenApiSpecServer = OpenAPIV3.ServerObject | OpenAPIV3_1.ServerObject; export type OpenApiSpecServerVariable = OpenAPIV3.ServerVariableObject | OpenAPIV3_1.ServerVariableObject; export type OpenApiPathItemObject = OpenAPIV3.PathItemObject | OpenAPIV3_1.PathItemObject; export type OpenApiPathObject = OpenAPIV3.PathsObject | OpenAPIV3_1.PathsObject; export type OpenApiTagObject = OpenAPIV3.TagObject | OpenAPIV3_1.TagObject; export type OpenApiDocumentObject = OpenAPIV3.ExternalDocumentationObject | OpenAPIV3_1.ExternalDocumentationObject; export type FileAccessType = FileSystemFileHandle | VCSFileInfo; export type OpenAPISpecV3ComponentsSchema = OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject; export type OpenAPISpecV3_1ComponentsSchema = OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject; export type OpenAPISpecSchema = OpenAPISpecV3ComponentsSchema | OpenAPISpecV3_1ComponentsSchema; export type OpenAPISpecComponentsSchemaObject = OpenAPISpecV3ComponentsSchema | OpenAPIV3_1.SchemaObject; export type OpenAPISpecComponentsSchema = Record<string, OpenAPISpecV3ComponentsSchema | OpenAPIV3_1.SchemaObject>; export type OpenApiSpecReference = OpenAPIV3.ReferenceObject | OpenAPIV3_1.ReferenceObject; export type OpenAPISpecV3Parameter = OpenAPIV3.ParameterObject | OpenAPIV3.ReferenceObject; export type OpenAPISpecV3_1Parameter = OpenAPIV3_1.ParameterObject | OpenAPIV3_1.ReferenceObject; export type OpenAPISpecParameter = OpenAPISpecV3Parameter | OpenAPISpecV3_1Parameter; export type OpenApiSpecDocument = OpenAPIV3.Document | OpenAPIV3_1.Document; export type ApiSpecDocument = OpenAPIV2.Document | OpenApiSpecDocument; export type OpenApiSpecV3_1Components = OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ResponseObject | OpenAPIV3_1.ParameterObject | OpenAPIV3_1.ExampleObject | OpenAPIV3_1.RequestBodyObject | OpenAPIV3_1.HeaderObject | OpenAPIV3_1.SecuritySchemeObject | OpenAPIV3_1.LinkObject | OpenAPIV3_1.PathItemObject | OpenAPIV3_1.ReferenceObject; export type OpenApiSpecV3Components = OpenAPIV3.SchemaObject | OpenAPIV3.ResponseObject | OpenAPIV3.ParameterObject | OpenAPIV3.ExampleObject | OpenAPIV3.RequestBodyObject | OpenAPIV3.HeaderObject | OpenAPIV3.SecuritySchemeObject | OpenAPIV3.LinkObject | OpenAPIV3.ReferenceObject; export type OpenApiSpecComponents = OpenApiSpecV3Components | OpenApiSpecV3_1Components; export type OpenApiSpecComponentsKey = keyof OpenAPIV3.ComponentsObject | keyof OpenAPIV3_1.ComponentsObject; export type OpenAPISecurityRequirement = OpenAPIV3.SecurityRequirementObject | OpenAPIV3_1.SecurityRequirementObject; export type OpenApiSpecResponseWithoutReference = OpenAPIV3.ResponseObject | OpenAPIV3_1.ResponseObject; export type OpenApiSpecResponse = OpenApiSpecResponseWithoutReference | OpenApiSpecReference; export type OpenApiSpecResponses = Record<string, OpenApiSpecResponseWithoutReference | OpenApiSpecReference>; export type OpenApiSpecHeaderWithoutReference = OpenAPIV3.HeaderObject | OpenAPIV3_1.HeaderObject; export type OpenApiSpecHeader = OpenApiSpecHeaderWithoutReference | OpenApiSpecReference; export type OpenApiSpecHeaders = Record<string, OpenApiSpecHeaderWithoutReference | OpenApiSpecReference>; export type OpenApiSpecLinkWithoutReference = OpenAPIV3.LinkObject | OpenAPIV3_1.LinkObject; export type OpenApiSpecLink = OpenApiSpecLinkWithoutReference | OpenApiSpecReference; export type OpenApiSpecLinks = Record<string, OpenApiSpecLinkWithoutReference | OpenApiSpecReference>; export type OpenApiSpecMediaType = OpenAPIV3.MediaTypeObject | OpenAPIV3_1.MediaTypeObject; export type OpenApiSpecExampleObj = OpenAPIV3.ExampleObject | OpenAPIV3_1.ExampleObject | OpenAPIV3.ReferenceObject | OpenAPIV3_1.ReferenceObject; export type OpenAPIExamples = { [key: string]: OpenApiSpecExampleObj; }; export interface IApiSpecHandler { /** * Overwrites the info object in given file with info object passed in as parameter. * @param openApiSpecType Identifier to denote the type of open api spec * @param file FileHandle or VCSFileInfo using which we'll access the file * @param info Updated info object that needs to be set in the file */ setInfo(openApiSpecType: OpenApiTypesEnum, file: FileAccessType, info: OpenApiSpecInfo): Promise<OpenApiSpecInfo>; /** * Adds a server to the existing list of servers. * Note: This method is only applicable for OpenAPI v3 and v3.1 * @param openApiSpecType Identifier to denote the type of open api spec (v3 or v3.1) * @param file FileHandle or VCSFileInfo using which we'll access the file * @param newServer New server object that needs to be added to existing list of servers */ addServer(openApiSpecType: OpenApiV3Types, file: FileAccessType, newServer: OpenApiSpecServer): Promise<OpenApiSpecServer[]>; /** * Finds and updates the matching server object from the existing list of servers, with the new server object. * Note: This method is only applicable for OpenAPI v3 and v3.1 * @param openApiSpecType Identifier to denote the type of open api spec (v3 or v3.1) * @param file FileHandle or VCSFileInfo using which we'll access the file * @param prevServer Previous server object * @param newServer New server object that will be replaced in place of prevServer */ updateServer(openApiSpecType: OpenApiV3Types, file: FileAccessType, prevServer: OpenApiSpecServer, newServer: OpenApiSpecServer): Promise<OpenApiSpecServer[]>; /** * Finds and deletes the matching server object from the existing list of servers. * @param openApiSpecType Identifier to denote the type of open api spec (v3 or v3.1) * @param file FileHandle or VCSFileInfo using which we'll access the file * @param server Server object that has to be deleted */ deleteServer(openApiSpecType: OpenApiV3Types, file: FileAccessType, server: OpenApiSpecServer): Promise<OpenApiSpecServer[]>; addComponentsSchema(openApiSpecType: OpenApiTypesEnum, file: FileAccessType, key: string, newSchema: OpenAPISpecComponentsSchemaObject): Promise<OpenAPISpecComponentsSchema>; deleteComponentsSchema(openApiSpecType: OpenApiTypesEnum, file: FileAccessType, key: string): Promise<OpenAPISpecComponentsSchema>; updateComponentsSchema(openApiSpecType: OpenApiTypesEnum, file: FileAccessType, prevKey: string, newkey: string, updatedSchema: OpenAPISpecComponentsSchemaObject): Promise<OpenAPISpecComponentsSchema>; addComponentExample(openApiSpecType: OpenApiV3Types, file: FileAccessType, key: string, exampleObject: OpenApiSpecExampleObj): Promise<OpenAPIExamples>; updateComponentExample(openApiSpecType: OpenApiV3Types, file: FileAccessType, prevKey: string, currentKey: string, exampleObject: OpenApiSpecExampleObj): Promise<OpenAPIExamples>; deleteComponentExample(openApiSpecType: OpenApiV3Types, file: FileAccessType, key: string): Promise<OpenAPIExamples>; addPath(openApiSpecType: OpenApiV3Types, file: FileAccessType, key: string, newPath: OpenApiPathItemObject): Promise<OpenApiSpecDocument>; updatePath(openApiSpecType: OpenApiV3Types, file: FileAccessType, prevKey: string, newKey: string, newPath: OpenApiPathItemObject): Promise<OpenApiSpecDocument>; deletePath(openApiSpecType: OpenApiV3Types, file: FileAccessType, path: string): Promise<OpenApiSpecDocument>; addTag(openApiSpecType: OpenApiTypesEnum, file: FileAccessType, tag: OpenApiTagObject): Promise<OpenApiTagObject[]>; updateTag(openApiSpecType: OpenApiTypesEnum, file: FileAccessType, prevKey: string, tag: OpenApiTagObject): Promise<OpenApiTagObject[]>; deleteTag(openApiSpecType: OpenApiTypesEnum, file: FileAccessType, tag: string): Promise<OpenApiTagObject[]>; addOrUpdateDocument(openApiSpecType: OpenApiTypesEnum, file: FileAccessType, document: OpenApiDocumentObject): Promise<OpenApiDocumentObject>; deleteDocument(openApiSpecType: OpenApiTypesEnum, file: FileAccessType): Promise<undefined>; getOpenApiType(document: any): OpenApiTypesEnum; /** * Overwrites the info object in given file with info object passed in as parameter. * @param openApiSpecType Identifier to denote the type of open api spec * @param file FileHandle or VCSFileInfo using which we'll access the file * @param object New object that needs to be added to existing list * @param typeOfComponent Key of Component (eg) examples, parameters */ addComponent(openApiSpecType: OpenApiV3Types, file: FileAccessType, key: string, object: OpenApiSpecComponents, typeOfComponent: keyof OpenAPIV3.ComponentsObject | keyof OpenAPIV3_1.ComponentsObject): Promise<OpenApiSpecComponents>; /** * Finds and updates the matching object from the existing list, with the new object. * @param openApiSpecType Identifier to denote the type of open api spec (v3 or v3.1) * @param file FileHandle or VCSFileInfo using which we'll access the file * @param prevKey Previous key of the object * @param currentKey New key that will be replaced in place of prevKey * @param object New object that will be replaced in the place of prevKey * @param typeOfComponent Key of Component (eg) examples, parameters */ updateComponent(openApiSpecType: OpenApiV3Types, file: FileAccessType, prevKey: string, currentKey: string, object: OpenApiSpecComponents, typeOfComponent: keyof OpenAPIV3.ComponentsObject | keyof OpenAPIV3_1.ComponentsObject): Promise<OpenApiSpecComponents>; /** * Finds and deletes the matching object from the existing list. * @param openApiSpecType Identifier to denote the type of open api spec (v3 or v3.1) * @param file FileHandle or VCSFileInfo using which we'll access the file * @param key Key of the object that has to be deleted * @param typeOfComponent Key of Component (eg) examples, parameters */ deleteComponent(openApiSpecType: OpenApiV3Types, file: FileAccessType, key: string, typeOfComponent: keyof OpenAPIV3.ComponentsObject | keyof OpenAPIV3_1.ComponentsObject): Promise<OpenApiSpecComponents>; /** * Updates the given record of data * @param openApiSpecType Identifier to denote the type of open api spec (v3 or v3.1) * @param data New record to update in the component * @param typeOfComponent Key of Component (eg) examples, parameters * @returns Returns the whole specification document object */ setComponent: (openApiSpecType: OpenApiV3Types, file: FileAccessType, data: Record<string, OpenApiSpecComponents>, typeOfComponent: keyof OpenAPIV3.ComponentsObject | keyof OpenAPIV3_1.ComponentsObject) => Promise<OpenApiSpecDocument>; addSecurityRequirement(openApiSpecType: OpenApiTypesEnum, file: FileAccessType, securityRequirementObj: OpenAPISecurityRequirement[]): Promise<OpenAPISecurityRequirement[]>; updateSecurityRequirement(openApiSpecType: OpenApiTypesEnum, file: FileAccessType, prevsecurityRequirementName: string, securityRequirementObj: OpenAPISecurityRequirement): Promise<OpenAPISecurityRequirement[]>; deleteSecurityRequirement(openApiSpecType: OpenApiTypesEnum, file: FileAccessType, securityRequirementName: string): Promise<OpenAPISecurityRequirement[]>; /** * Returns a list of the HTTP Methods for the given pathItem object for OpenAPI spec versions 3.0 & 3.1 * @param pathItem The path item object * @returns A list of HTTPMethods from the given path item object */ getPresentHttpMethods(pathItem: OpenApiPathItemObject): OpenAPIV3.HttpMethods[]; } //# sourceMappingURL=api-spec-handler.interface.d.ts.map