import classNames from 'classnames';
import { OpenAPIV3 } from 'openapi-types';
import { OpenAPIRootSchema, OpenAPISchemaProperties } from './OpenAPISchema';
import { noReference } from './utils';
import { OpenAPIClientContext } from './types';
import { InteractiveSection } from './InteractiveSection';
import { Markdown } from './Markdown';
/**
* Display an interactive response body.
*/
export function OpenAPIResponse(props: {
response: OpenAPIV3.ResponseObject;
context: OpenAPIClientContext;
}) {
const { response, context } = props;
const content = Object.entries(response.content ?? {});
const headers = Object.entries(response.headers ?? {}).map(
([name, header]) => [name, noReference(header) ?? {}] as const,
);
if (content.length === 0 && !response.description && headers.length === 0) {
return null;
}
return (
<>
{response.description ? (
) : null}
{headers.length > 0 ? (
({
propertyName: name,
schema: noReference(header.schema) ?? {},
required: header.required,
}))}
context={context}
/>
) : null}
{content.length > 0 ? (
{
return {
key: contentType,
label: contentType,
body: (
),
};
})}
/>
) : null}
>
);
}