@@ -341,11 +341,31 @@ class DefinitionGenerator {
341341 if ( Object . keys ( documentation ) . includes ( 'deprecated' ) )
342342 obj . deprecated = documentation . deprecated
343343
344- if ( documentation . requestBody )
345- obj . requestBody = await this . createRequestBody ( documentation )
344+ if ( documentation . requestBody || this . currentEvent ?. request ?. schemas ) {
345+ const requestModel = { }
346+ if ( documentation . requestBody ) {
347+ Object . assign (
348+ requestModel ,
349+ {
350+ description : documentation . requestBody . description ,
351+ models : documentation . requestModels
352+ }
353+ )
354+ } else {
355+ Object . assign (
356+ requestModel ,
357+ {
358+ description : '' ,
359+ models : this . currentEvent ?. request ?. schemas
360+ }
361+ )
362+ }
363+
364+ obj . requestBody = await this . createRequestBody ( requestModel )
346365 . catch ( err => {
347366 throw err
348367 } )
368+ }
349369
350370 if ( documentation . methodResponses )
351371 obj . responses = await this . createResponses ( documentation )
@@ -488,13 +508,13 @@ class DefinitionGenerator {
488508 return obj
489509 }
490510
491- async createRequestBody ( documentation ) {
511+ async createRequestBody ( requestBodyDetails ) {
492512 const obj = {
493- description : documentation . requestBody . description ,
494- required : documentation . requestBody . required || false ,
513+ description : requestBodyDetails . description ,
514+ required : false
495515 }
496516
497- obj . content = await this . createMediaTypeObject ( documentation . requestModels , 'requestBody' )
517+ obj . content = await this . createMediaTypeObject ( requestBodyDetails . models )
498518 . catch ( err => {
499519 throw err
500520 } )
@@ -548,6 +568,25 @@ class DefinitionGenerator {
548568 Object . assign ( mediaTypeObj , { [ contentKey ] : obj } )
549569 }
550570 }
571+
572+ if ( Object . keys ( mediaTypeObj ) . length === 0 ) {
573+ for ( const contentKey of Object . keys ( models ) ) {
574+ const obj = { }
575+ const schema = ( models [ contentKey ] ?. schema ) ? models [ contentKey ] . schema : models [ contentKey ]
576+ const name = ( models [ contentKey ] ?. name ) ? models [ contentKey ] . name : uuid ( )
577+ const schemaRef = await this . schemaHandler . createSchema ( name , schema )
578+ . catch ( err => {
579+ throw err
580+ } )
581+
582+ obj . schema = {
583+ $ref : schemaRef
584+ }
585+
586+ Object . assign ( mediaTypeObj , { [ contentKey ] : obj } )
587+ }
588+ }
589+
551590 return mediaTypeObj
552591 }
553592
0 commit comments