@@ -468,10 +468,10 @@ function buildMainContent() {
468468 }
469469 }
470470
471- // Add request body section if exists
472- if ( operation . requestBody ) {
473- sectionHTML += buildRequestBodySection ( operation , sectionId ) ;
474- }
471+ // Add request body section if exists
472+ if ( operation . requestBody ) {
473+ sectionHTML += buildRequestBodySection ( operation , sectionId ) ;
474+ }
475475
476476 // Add responses section
477477 sectionHTML += buildResponsesSection ( operation , sectionId ) ;
@@ -722,11 +722,15 @@ function addMainContentEventListeners(section) {
722722
723723// Add request body dropdown handling
724724function addRequestBodyHandlers ( operation , sectionId ) {
725+ // Use the utility function to get request body content, handling both direct content and $ref
726+ const resolvedRequestBody = window . utils . getRequestBodyContent ( operation . requestBody , swaggerData ) ;
727+
728+ if ( ! resolvedRequestBody || ! resolvedRequestBody . content ) {
729+ return ; // No request body content to handle
730+ }
731+
725732 // Add event listener for the request body dropdown after section is added to DOM
726- if (
727- operation . requestBody &&
728- Object . keys ( operation . requestBody . content ) . length > 0
729- ) {
733+ if ( Object . keys ( resolvedRequestBody . content || { } ) . length > 0 ) {
730734 const requestBodyIdBase = `request-body-${ sectionId } ` ;
731735 const selectElement = document . getElementById (
732736 `${ requestBodyIdBase } -content-type-select`
@@ -743,7 +747,7 @@ function addRequestBodyHandlers(operation, sectionId) {
743747
744748 if ( isSelectElement ) {
745749 // Set 'application/json' as default if available for select elements
746- const contentTypes = Object . keys ( operation . requestBody . content ) ;
750+ const contentTypes = Object . keys ( resolvedRequestBody . content || { } ) ;
747751 if ( contentTypes . includes ( "application/json" ) ) {
748752 selectElement . value = "application/json" ;
749753 }
@@ -761,11 +765,11 @@ function addRequestBodyHandlers(operation, sectionId) {
761765 selectedContentType ?. includes ( "json" ) ;
762766
763767 if (
764- operation . requestBody . content [ selectedContentType ] &&
765- operation . requestBody . content [ selectedContentType ] . schema
768+ resolvedRequestBody . content [ selectedContentType ] &&
769+ resolvedRequestBody . content [ selectedContentType ] . schema
766770 ) {
767771 const schema =
768- operation . requestBody . content [ selectedContentType ] . schema ;
772+ resolvedRequestBody . content [ selectedContentType ] . schema ;
769773
770774 // Update schema details
771775 const schemaDetailsElement = document . getElementById (
@@ -1067,7 +1071,16 @@ function buildRequestBodySection(operation, sectionId) {
10671071 <h3 class="text-gray-700 font-semibold mb-2 text-lg">Request Body</h3>
10681072 ` ;
10691073
1070- const contentTypes = Object . keys ( operation . requestBody . content ) ;
1074+ // Use the utility function to get request body content, handling both direct content and $ref
1075+ const resolvedRequestBody = window . utils . getRequestBodyContent ( operation . requestBody , swaggerData ) ;
1076+
1077+ if ( ! resolvedRequestBody || ! resolvedRequestBody . content ) {
1078+ sectionHTML += `<p class="text-sm text-gray-500">No request body definition found.</p>` ;
1079+ sectionHTML += `</div>` ;
1080+ return sectionHTML ;
1081+ }
1082+
1083+ const contentTypes = Object . keys ( resolvedRequestBody . content || { } ) ;
10711084 if ( contentTypes . length > 0 ) {
10721085 sectionHTML += `
10731086 <div class="flex items-center mb-4">` ;
@@ -1092,7 +1105,7 @@ function buildRequestBodySection(operation, sectionId) {
10921105
10931106 sectionHTML += `
10941107 ${
1095- operation . requestBody . required
1108+ resolvedRequestBody . required
10961109 ? '<span class="text-xs text-red-500">required</span>'
10971110 : ""
10981111 }
0 commit comments