UNPKG

@scalar/oas-utils

Version:

Open API spec and Yaml handling utilities

45 lines (42 loc) 1.65 kB
import { getExampleFromSchema } from './get-example-from-schema.js'; /** * Get the query parameters from an operation. * * Example: [ { name: 'foobar', value: '' } ] * * - OpenAPI 3.x: Possible values are “query”, “header”, “path” or “cookie”. * - Swagger 2.0: Possible values are "query", "header", "path", "formData" or "body". */ function getParametersFromOperation(operation, where, requiredOnly = true) { const parameters = [...(operation.pathParameters || []), ...(operation.information?.parameters || [])]; const params = parameters // query, path, header, cookie? .filter((parameter) => parameter.in === where) // don’t add optional parameters .filter((parameter) => (requiredOnly && parameter.required) || !requiredOnly) // transform them .map((parameter) => ({ name: parameter.name, description: parameter.description ?? null, value: parameter.example ? parameter.example : parameter.schema ? getExampleFromSchema(parameter.schema, { mode: 'write' }) : '', required: parameter.required ?? false, enabled: parameter.required ?? false, })); return params.sort((a, b) => { // Move a up if a is required and b is not if (a.required && !b.required) { return -1; } // Move b up if b is required and a is not if (!a.required && b.required) { return 1; } // Keep original order if both have the same required status return 0; }); } export { getParametersFromOperation };