import * as React from 'react'; import classNames from 'classnames'; import { OpenAPIOperationData, toJSON } from './fetchOpenAPIOperation'; import { Markdown } from './Markdown'; import { OpenAPICodeSample } from './OpenAPICodeSample'; import { OpenAPIResponseExample } from './OpenAPIResponseExample'; import { getServersURL, OpenAPIServerURL } from './OpenAPIServerURL'; import { OpenAPISpec } from './OpenAPISpec'; import { OpenAPIClientContext, OpenAPIContextProps } from './types'; import { ScalarApiClient } from './ScalarApiButton'; /** * Display an interactive OpenAPI operation. */ export async function OpenAPIOperation(props: { className?: string; data: OpenAPIOperationData; context: OpenAPIContextProps; }) { const { className, data, context } = props; const { operation, servers, method, path } = data; const clientContext: OpenAPIClientContext = { defaultInteractiveOpened: context.defaultInteractiveOpened, icons: context.icons, blockKey: context.blockKey, enumSelectors: context.enumSelectors, }; const config = await getConfiguration(context); return (

{operation.summary}

{operation.description ? ( ) : null}
{method.toUpperCase()}
); } async function getConfiguration(context: OpenAPIContextProps) { const response = await fetch(context.specUrl); const doc = await response.json(); return { spec: { content: { ...doc, servers: [{ url: getServersURL(doc.servers, context.enumSelectors) }], }, }, }; }