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: { export function OpenAPIResponse(props: {
response: OpenAPIV3.ResponseObject; response: OpenAPIV3.ResponseObject;
mediaType: OpenAPIV3.MediaTypeObject; mediaType: OpenAPIV3.MediaTypeObject | null;
context: OpenAPIClientContext; context: OpenAPIClientContext;
}) { }) {
const { response, context, mediaType } = props; const { response, context, mediaType } = props;
const headers = Object.entries(response.headers ?? {}).map( const headers = Object.entries(response.headers ?? {}).map(
([name, header]) => [name, header ?? {}] as const ([name, header]) => [name, header ?? {}] as const
); );
const content = Object.entries(mediaType.schema ?? {}); const content = Object.entries(mediaType?.schema ?? {});
const description = resolveDescription(response); const description = resolveDescription(response);
@@ -62,7 +62,7 @@ export function OpenAPIResponse(props: {
/> />
</OpenAPIDisclosure> </OpenAPIDisclosure>
) : null} ) : null}
{mediaType.schema && ( {mediaType?.schema && (
<div className="openapi-responsebody"> <div className="openapi-responsebody">
<OpenAPISchemaProperties <OpenAPISchemaProperties
id={`response-${context.blockKey}`} id={`response-${context.blockKey}`}
@@ -99,7 +99,7 @@ export function OpenAPIResponseExample(props: {
function OpenAPIResponse(props: { function OpenAPIResponse(props: {
context: OpenAPIContext; context: OpenAPIContext;
content: { content: {
[media: string]: OpenAPIV3.MediaTypeObject; [media: string]: OpenAPIV3.MediaTypeObject | null;
}; };
}) { }) {
const { context, content } = props; const { context, content } = props;
@@ -113,6 +113,15 @@ function OpenAPIResponse(props: {
const tabs = entries.map((entry) => { const tabs = entries.map((entry) => {
const [mediaType, mediaTypeObject] = entry; const [mediaType, mediaTypeObject] = entry;
if (!mediaTypeObject) {
return {
key: mediaType,
label: mediaType,
body: <OpenAPIEmptyExample context={context} />,
};
}
return { return {
key: mediaType, key: mediaType,
label: mediaType, label: mediaType,
@@ -19,9 +19,9 @@ export function OpenAPIWebhookExample(props: {
} }
return Object.entries( return Object.entries(
operation.requestBody.content as Record<string, OpenAPIV3.MediaTypeObject> operation.requestBody.content as Record<string, OpenAPIV3.MediaTypeObject | null>
).map(([key, value]) => { ).map(([key, value]) => {
const schema = value.schema; const schema = value?.schema;
if (!schema) { if (!schema) {
return { return {