openapi-json-schemextractor
v1.2.0
Published
Extract standard JSON schemas from OpenAPI definitions
Downloads
35
Maintainers
Readme
openapi-json-schemextractor
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:
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 = require("openapi-json-schemextractor")
(async function () {
let schFromFile = await SchemExtractor.fromFile("path/to/openapi.yaml")
let schFromUrl = await SchemExtractor.fromFile("http://example.com/openapi.yaml")
let schFromString = await SchemExtractor.fromString("...")
let schFromObject = await SchemExtractor.fromObject({/* ... */})
})()
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 test
docker run --rm -v $(pwd):/app -w /app node:12 yarn test
docker run --rm -v $(pwd):/app -w /app node:14 yarn test
# or (Windows)
docker run --rm -v %cd%:/app -w /app node:10 yarn test
docker run --rm -v %cd%:/app -w /app node:12 yarn test
docker run --rm -v %cd%:/app -w /app node:14 yarn test
Check code style
yarn run style:check