@@ -262,19 +262,29 @@ export namespace OpenAPIV3 {
262262 | 'string'
263263 | 'integer' ;
264264 export type ArraySchemaObjectType = 'array' ;
265- export type SchemaObject = ArraySchemaObject | NonArraySchemaObject ;
266265
267- export interface ArraySchemaObject extends BaseSchemaObject {
268- type : ArraySchemaObjectType ;
266+ export type SchemaObject = ArraySchemaObject | NonArraySchemaObject | CompositionSchemaObject ;
267+
268+ export interface ArraySchemaObject extends BaseSchemaObject < ArraySchemaObjectType > {
269269 items : ReferenceObject | SchemaObject ;
270270 }
271271
272- export interface NonArraySchemaObject extends BaseSchemaObject {
273- type : NonArraySchemaObjectType ;
272+ export interface NonArraySchemaObject extends BaseSchemaObject < NonArraySchemaObjectType > {
274273 }
275274
276- interface BaseSchemaObject {
275+ export interface CompositionSchemaObject extends BaseSchemaObject < undefined > {
277276 // JSON schema allowed properties, adjusted for OpenAPI
277+ allOf ?: Array < ReferenceObject | SchemaObject > ;
278+ oneOf ?: Array < ReferenceObject | SchemaObject > ;
279+ anyOf ?: Array < ReferenceObject | SchemaObject > ;
280+ not ?: ReferenceObject | SchemaObject ;
281+ // OpenAPI-specific properties
282+ discriminator ?: DiscriminatorObject ;
283+ }
284+
285+ interface BaseSchemaObject < T > {
286+ // JSON schema allowed properties, adjusted for OpenAPI
287+ type ?: T ;
278288 title ?: string ;
279289 description ?: string ;
280290 format ?: string ;
@@ -298,14 +308,9 @@ export namespace OpenAPIV3 {
298308 properties ?: {
299309 [ name : string ] : ReferenceObject | SchemaObject ;
300310 } ;
301- allOf ?: Array < ReferenceObject | SchemaObject > ;
302- oneOf ?: Array < ReferenceObject | SchemaObject > ;
303- anyOf ?: Array < ReferenceObject | SchemaObject > ;
304- not ?: ReferenceObject | SchemaObject ;
305311
306312 // OpenAPI-specific properties
307313 nullable ?: boolean ;
308- discriminator ?: DiscriminatorObject ;
309314 readOnly ?: boolean ;
310315 writeOnly ?: boolean ;
311316 xml ?: XMLObject ;
0 commit comments