1.0.12 • Published 5 years ago

open-api-to-schema v1.0.12

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

Open api schema converter

Converts open-api / swagger files to json schema objects ready to use with json schema validation libraries.

Usage

npm install --save open-api-to-schema

import openApiToSchema from 'open-api-to-schema'
import Ajv from 'ajv'

const config = {
  required: 'all',
  optionalFields: {
    Pet: [ 'id' ]
  }
}

const jsonSchemas = openApiToSchema('./test/fixtures/petstore-expanded.yaml', config)

const ajv = new Ajv()
const validator = ajv.compile(jsonSchema.paths['/pet'].get[200])

const valid = validator(response.data)

if (!valid) {
  console.error(validator.errors)
}
...

Returns

Returns a valid JSON Schema draft 7 object ready to be used with json validation libraries such as ajv.

Definitions and paths are root objects.

See Example Response(##Example Response)

Config

required

required is on of :-

  • respect // required fields from schema are used
  • all // all fields are required expect optionalFields
  • none // no fields are required expect requiredFields

optionalFields

Only used when required is set to all. Defines the fields that should not be set to required. Has definition name as key with array of optional fields

{
  [definitionName]: [ 'unrequired' ]
}

requiredFields

Only used when required is set to none. Defines the fields that should be set to required. Has definition name as key with array of required fields

{
  [definitionName]: [ 'required' ]
}

Features

  • Allof
  • Oneof
  • Anyof
  • Expose definitions
  • Expose paths
  • Override requiring

Example Response

{
  "/pets": {
    "get": {
      "200": {
        "type": "array",
        "items": {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "$name": "Pet",
          "properties": {
            "name": {
              "type": "string"
            },
            "tag": {
              "type": "string"
            },
            "id": {
              "type": "integer",
              "format": "int64"
            }
          },
          "required": [
            "name",
            "tag"
          ],
          "additionalProperties": false
        }
      },
      "default": {
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          }
        },
        "$schema": "http://json-schema.org/draft-07/schema#",
        "$name": "Error"
      }
    },
    "post": {
      "200": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "$name": "Pet",
        "properties": {
          "name": {
            "type": "string"
          },
          "tag": {
            "type": "string"
          },
          "id": {
            "type": "integer",
            "format": "int64"
          }
        },
        "required": [
          "name",
          "tag"
        ],
        "additionalProperties": false
      },
      "default": {
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          }
        },
        "$schema": "http://json-schema.org/draft-07/schema#",
        "$name": "Error"
      }
    }
  },
  "/pets/{id}": {
    "get": {
      "200": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "$name": "Pet",
        "properties": {
          "name": {
            "type": "string"
          },
          "tag": {
            "type": "string"
          },
          "id": {
            "type": "integer",
            "format": "int64"
          }
        },
        "required": [
          "name",
          "tag"
        ],
        "additionalProperties": false
      },
      "default": {
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          }
        },
        "$schema": "http://json-schema.org/draft-07/schema#",
        "$name": "Error"
      }
    },
    "delete": {
      "204": {},
      "default": {
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          }
        },
        "$schema": "http://json-schema.org/draft-07/schema#",
        "$name": "Error"
      }
    }
  }
}
1.0.12

5 years ago

1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago