Extract any entities defined via a schema within OpenAPI (a.k.a. Swagger) schemas as standard JSON schemas:
Entity schemas are extracted from:
Input OpenAPI schemas can be supplied as:
- strings,
- native JavaScript objects.
Furthermore:
- both OpenAPI 2 and OpenAPI 3 specifications are supported,
- both JSON and YAML formats are supported.
Extracted JSON schemas are:
- plain schemas, i.e. no
$ref
orallOf
elements, - returned as native JavaScript objects,
- compliant with JSON schema Draft 04.
- currently schemas split over several files are not supported
yarn add openapi-json-schemextractor
const SchemExtractor = require("openapi-json-schemextractor")
(async function () {
let schemeFromString = await SchemExtractor.fromString("...")
let schemeFromObject = await SchemExtractor.fromObject({/* ... */})
})()
{
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"
}
}
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
yarn run style:check