Package Exports
- open-api-to-schema
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (open-api-to-schema) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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 expectoptionalFields
none
// 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"
}
}
}
}