openapi-json-schemextractor

1.2.0 • Public • Published

openapi-json-schemextractor Build Status Coverage Status npm version

Extract any entities defined via a schema within OpenAPI (a.k.a. Swagger) schemas as standard JSON schemas:

Entity schemas are extracted from:

  • definitions section (OpenAPI 2),
  • both parameters and components.schemas sections (OpenAPI 3).

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 or allOf 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

Package Sidebar

Install

npm i openapi-json-schemextractor

Weekly Downloads

7

Version

1.2.0

License

MIT

Unpacked Size

24.5 kB

Total Files

16

Last publish

Collaborators

  • francescozanoni