UNPKG

@cap-js/openapi

Version:

CAP tool for OpenAPI

117 lines (95 loc) 2.56 kB
type StringSchema = { type: 'string' format?: 'base64url' | 'uuid' | 'time' | 'date' | 'date-time' | 'duration' maxLength?: number example?: string pattern?: string } type NumberSchema = { type: 'number' | 'integer' format?: 'float' | 'double' | 'decimal' | 'uint8' | 'int8' | 'int16' | 'int32' | 'int64' multipleOf?: number example?: number, minimum?: number maximum?: number exclusiveMinimum?: boolean exclusiveMaximum?: boolean } type BooleanSchema = { type: 'boolean' } type ArraySchema = { type: 'array', items: Schema } type ObjectSchema = { type: 'object', properties: { value: any } & {}, } // for responses that only contain meta information type EmptySchema = {} type Meta = { nullable?: boolean default?: unknown example?: string | number, description?: string '$ref'?: unknown } type SingleSchema = (StringSchema | NumberSchema | BooleanSchema | ArraySchema | ObjectSchema | EmptySchema) & Meta type AnyOf = { anyOf: Schema[] } & Meta type AllOf = { allOf: Schema[] } & Meta type MultiSchema = AnyOf | AllOf export type Schema = (SingleSchema | MultiSchema) export type TargetRestrictions = { Countable?: boolean Expandable?: boolean } // despite how CSDL is defined in the standard, // we assume to be working with its .properties field // throughout our conversion import type { CSDL as CSDL_ } from './csdl-types'; export type CSDL = CSDL_['properties']; export type PathItem = { get?: Request, post?: Request, put?: Request, patch?: Request, delete?: Request, } | Request type MIMEType = 'multipart/mixed' | 'application/json' export type Parameter = { name?: string, in?: 'path' | 'query' | 'header', description?: string, required?: boolean, schema?: Schema, example?: string | number, explode?: boolean } type Request = { summary?: string, description?: string, tags?: string[], parameters?: Parameter[], responses?: Record<string, Response>, requestBody?: RequestBody, } type Response = { required?: boolean, description?: string, content?: {[mime in MIMEType]?: { schema?: SingleSchema & { title?: string }, example?: string }}, responses?: Record<string, { $ref: string }>, $ref?: string } type RequestBody = { required: boolean, description: string, content: Record<string, { schema: { type: string }, example: string }>, } export type Paths = { [path: string]: PathItem }