Extract any entities defined via a schema within OpenAPI (a.k.a. Swagger) schemas as standard JSON schemas:
Entity schemas are extracted from:
Input
Input OpenAPI schemas can be supplied as:
- file paths,
- URLs (http or https),
- strings,
- native JavaScript objects.
Furthermore:
- both OpenAPI 2 and OpenAPI 3 specifications are supported,
- both JSON and YAML formats are supported.
Output
Extracted JSON schemas are:
- plain schemas, i.e. no
$ref
orallOf
elements, - returned as native JavaScript objects,
- compliant with JSON schema Draft 04.
Known limitations
- currently schemas split over several files are not supported
Installation
yarn add openapi-json-schemextractor
Code example
const SchemExtractor = { let schFromFile = await SchemExtractor let schFromUrl = await SchemExtractor let schFromString = await SchemExtractor let schFromObject = await SchemExtractor }
CLI example
node node_modules/openapi-json-schemextractor/bin/run.js \ https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore.yaml# or node node_modules/openapi-json-schemextractor/bin/run.js path/to/openapi.yaml
Pet: type: "object" required: "id" "name" properties: id: type: "integer" format: "int64" name: type: "string" tag: type: "string" $schema: "http://json-schema.org/draft-04/schema#" Pets: type: "array" items: type: "object" required: "id" "name" properties: id: type: "integer" format: "int64" name: type: "string" tag: type: "string" $schema: "http://json-schema.org/draft-04/schema#" Error: type: "object" required: "code" "message" properties: code: type: "integer" format: "int32" message: type: "string" $schema: "http://json-schema.org/draft-04/schema#" // Schemas related to parameters are given unique identifiers. "/pets/{petId}_get_petId": $schema: "http://json-schema.org/draft-04/schema#" type: "string" "/pets_get_limit": $schema: "http://json-schema.org/draft-04/schema#" format: "int32" type: "integer"
Test
yarn test # or (Linux/Mac) docker run --rm -v $(pwd):/app -w /app node:10 yarn testdocker run --rm -v $(pwd):/app -w /app node:12 yarn testdocker run --rm -v $(pwd):/app -w /app node:14 yarn test # or (Windows) docker run --rm -v %cd%:/app -w /app node:10 yarn testdocker run --rm -v %cd%:/app -w /app node:12 yarn testdocker run --rm -v %cd%:/app -w /app node:14 yarn test
Check code style
yarn run style:check