From da7b369ffd6047593dd0764797f34d9bde8e8b8f Mon Sep 17 00:00:00 2001 From: "Nolann B." <100787331+nolannbiron@users.noreply.github.com> Date: Tue, 1 Apr 2025 21:57:36 +0200 Subject: [PATCH] Fix missing headers in OpenAPIResponses (#3074) --- .changeset/afraid-impalas-bow.md | 6 +++ .../react-openapi/src/OpenAPIResponse.tsx | 16 +++--- .../react-openapi/src/OpenAPIResponses.tsx | 49 ++++++++++++++----- 3 files changed, 52 insertions(+), 19 deletions(-) create mode 100644 .changeset/afraid-impalas-bow.md diff --git a/.changeset/afraid-impalas-bow.md b/.changeset/afraid-impalas-bow.md new file mode 100644 index 000000000..2d875bbd8 --- /dev/null +++ b/.changeset/afraid-impalas-bow.md @@ -0,0 +1,6 @@ +--- +'@gitbook/react-openapi': patch +'gitbook': patch +--- + +Fix missing headers in OpenAPIResponses diff --git a/packages/react-openapi/src/OpenAPIResponse.tsx b/packages/react-openapi/src/OpenAPIResponse.tsx index 163d3eb8e..77f44d5dd 100644 --- a/packages/react-openapi/src/OpenAPIResponse.tsx +++ b/packages/react-openapi/src/OpenAPIResponse.tsx @@ -36,13 +36,15 @@ export function OpenAPIResponse(props: { /> ) : null} -
- -
+ {mediaType.schema && ( +
+ +
+ )} ); } diff --git a/packages/react-openapi/src/OpenAPIResponses.tsx b/packages/react-openapi/src/OpenAPIResponses.tsx index 4e06a781a..cc577e53d 100644 --- a/packages/react-openapi/src/OpenAPIResponses.tsx +++ b/packages/react-openapi/src/OpenAPIResponses.tsx @@ -21,7 +21,42 @@ export function OpenAPIResponses(props: { icon={context.icons.chevronRight} groups={Object.entries(responses).map( ([statusCode, response]: [string, OpenAPIV3.ResponseObject]) => { - const content = Object.entries(response.content ?? {}); + const tabs = (() => { + // If there is no content, but there are headers, we need to show the headers + if ( + (!response.content || !Object.keys(response.content).length) && + response.headers && + Object.keys(response.headers).length + ) { + return [ + { + id: 'default', + body: ( + + ), + }, + ]; + } + + return Object.entries(response.content ?? {}).map( + ([contentType, mediaType]) => ({ + id: contentType, + label: contentType, + body: ( + + ), + }) + ); + })(); + const description = response.description; return { @@ -39,17 +74,7 @@ export function OpenAPIResponses(props: { ) : null} ), - tabs: content.map(([contentType, mediaType]) => ({ - id: contentType, - label: contentType, - body: ( - - ), - })), + tabs, }; } )}