@@ -341,11 +341,31 @@ class DefinitionGenerator {
341
341
if ( Object . keys ( documentation ) . includes ( 'deprecated' ) )
342
342
obj . deprecated = documentation . deprecated
343
343
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 )
346
365
. catch ( err => {
347
366
throw err
348
367
} )
368
+ }
349
369
350
370
if ( documentation . methodResponses )
351
371
obj . responses = await this . createResponses ( documentation )
@@ -488,13 +508,13 @@ class DefinitionGenerator {
488
508
return obj
489
509
}
490
510
491
- async createRequestBody ( documentation ) {
511
+ async createRequestBody ( requestBodyDetails ) {
492
512
const obj = {
493
- description : documentation . requestBody . description ,
494
- required : documentation . requestBody . required || false ,
513
+ description : requestBodyDetails . description ,
514
+ required : false
495
515
}
496
516
497
- obj . content = await this . createMediaTypeObject ( documentation . requestModels , 'requestBody' )
517
+ obj . content = await this . createMediaTypeObject ( requestBodyDetails . models )
498
518
. catch ( err => {
499
519
throw err
500
520
} )
@@ -548,6 +568,25 @@ class DefinitionGenerator {
548
568
Object . assign ( mediaTypeObj , { [ contentKey ] : obj } )
549
569
}
550
570
}
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
+
551
590
return mediaTypeObj
552
591
}
553
592
0 commit comments