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,
};
}
)}