Handle nullish OpenAPI mediaTypeObject (#3389)

This commit is contained in:
Nolann B.
2025-06-24 19:25:38 +02:00
committed by GitHub
parent 4a295e6db4
commit b4039627d9
4 changed files with 21 additions and 6 deletions
+6
View File
@@ -0,0 +1,6 @@
---
'@gitbook/react-openapi': patch
'gitbook': patch
---
Handle nullish OpenAPI mediaTypeObject
@@ -11,14 +11,14 @@ import { parameterToProperty, resolveDescription } from './utils';
*/
export function OpenAPIResponse(props: {
response: OpenAPIV3.ResponseObject;
mediaType: OpenAPIV3.MediaTypeObject;
mediaType: OpenAPIV3.MediaTypeObject | null;
context: OpenAPIClientContext;
}) {
const { response, context, mediaType } = props;
const headers = Object.entries(response.headers ?? {}).map(
([name, header]) => [name, header ?? {}] as const
);
const content = Object.entries(mediaType.schema ?? {});
const content = Object.entries(mediaType?.schema ?? {});
const description = resolveDescription(response);
@@ -62,7 +62,7 @@ export function OpenAPIResponse(props: {
/>
</OpenAPIDisclosure>
) : null}
{mediaType.schema && (
{mediaType?.schema && (
<div className="openapi-responsebody">
<OpenAPISchemaProperties
id={`response-${context.blockKey}`}
@@ -99,7 +99,7 @@ export function OpenAPIResponseExample(props: {
function OpenAPIResponse(props: {
context: OpenAPIContext;
content: {
[media: string]: OpenAPIV3.MediaTypeObject;
[media: string]: OpenAPIV3.MediaTypeObject | null;
};
}) {
const { context, content } = props;
@@ -113,6 +113,15 @@ function OpenAPIResponse(props: {
const tabs = entries.map((entry) => {
const [mediaType, mediaTypeObject] = entry;
if (!mediaTypeObject) {
return {
key: mediaType,
label: mediaType,
body: <OpenAPIEmptyExample context={context} />,
};
}
return {
key: mediaType,
label: mediaType,
@@ -19,9 +19,9 @@ export function OpenAPIWebhookExample(props: {
}
return Object.entries(
operation.requestBody.content as Record<string, OpenAPIV3.MediaTypeObject>
operation.requestBody.content as Record<string, OpenAPIV3.MediaTypeObject | null>
).map(([key, value]) => {
const schema = value.schema;
const schema = value?.schema;
if (!schema) {
return {