mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-17 08:05:19 +00:00
85ec1884e6
* Start methods to resolve refs * bun * Start package * Add code to resolve ref * Continue * Deref * Start monorepo * Continue * Fix ref resolver * Style a bit more * Start toggling section * Continue * Start displaying query/path/headers params * Hide respo se if empty * Fix recursive refs * Simplify interactive and styling * Display enums * Format * Improve type name being displayed * Improve naming * Render oneOf/anyOf/allOf * Handle circular references * Start variable in server url * Use client component for the spec part * Improve CSS sizing * Display open api blocks in aside * Make aside an overlay * Improve stickiness of openapi * Align document on the left when api page * Improve general layout * Better align * Fix padding in aside * Use syntax highlighting * Show sample of response * Improve code generation * Improve code generated * Format * Format * Rename to OpenAPI * Skip deprecated properties and handle additionalProperties * Use discriminator for naming * Better name enum * Make entire header toggeable * Format and lint * Add curl example * Improve curl * style pass * Start securities * Bun * Fix TS * Improve label * Start markdown * Improve code samples * Test * Use custom skeleton for api block * Format * Add support for redocly code samples * Fix api blocks in aside * Use typography for markdown * Format * Fix spacing in markdown * Render headers * Format * Format --------- Co-authored-by: Sebastian Graz <graz@live.se>
62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
import { InteractiveSection } from './InteractiveSection';
|
|
import { OpenAPIOperationData } from './fetchOpenAPIOperation';
|
|
import { generateSchemaExample } from './generateSchemaExample';
|
|
import { OpenAPIContextProps } from './types';
|
|
import { noReference } from './utils';
|
|
|
|
/**
|
|
* Display an example of the response content.
|
|
*/
|
|
export function OpenAPIResponseExample(props: {
|
|
data: OpenAPIOperationData;
|
|
context: OpenAPIContextProps;
|
|
}) {
|
|
const { data, context } = props;
|
|
|
|
const responses = Object.entries(data.operation.responses);
|
|
// Sort response to get 200, and 2xx first
|
|
responses.sort(([a], [b]) => {
|
|
if (a === 'default') {
|
|
return 1;
|
|
}
|
|
if (b === 'default') {
|
|
return -1;
|
|
}
|
|
if (a === '200') {
|
|
return -1;
|
|
}
|
|
if (b === '200') {
|
|
return 1;
|
|
}
|
|
return Number(a) - Number(b);
|
|
});
|
|
// Take the first one
|
|
const response = responses[0];
|
|
|
|
if (!response) {
|
|
return null;
|
|
}
|
|
|
|
const responseObject = noReference(response[1]);
|
|
|
|
const schema = noReference(
|
|
(
|
|
responseObject.content?.['application/json'] ??
|
|
responseObject.content?.[Object.keys(responseObject.content)[0]]
|
|
)?.schema,
|
|
);
|
|
|
|
if (!schema) {
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<InteractiveSection header="Response" className="openapi-response-example">
|
|
<context.CodeBlock
|
|
code={JSON.stringify(generateSchemaExample(schema), null, 2)}
|
|
syntax="json"
|
|
/>
|
|
</InteractiveSection>
|
|
);
|
|
}
|