1.0.12 • Published 7 years ago
open-api-to-schema v1.0.12
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 usedall// all fields are required expectoptionalFieldsnone// no fields are required expectrequiredFields
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"
}
}
}
}