francescozanoni / openapi-json-schemextractor

Extract standard JSON schemas from OpenAPI definitions

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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:

  • 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 schemeFromString = await SchemExtractor.fromString("...")
  let schemeFromObject = await SchemExtractor.fromObject({/* ... */})

})()

Output

{

  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

About

Extract standard JSON schemas from OpenAPI definitions

License:MIT License


Languages

Language:JavaScript 100.0%