Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dolegi/open-api-to-schema
Converts open-api / swagger files to json schema objects ready to use with json schema validation libraries.
https://github.com/dolegi/open-api-to-schema
json-schema open-api swagger
Last synced: 23 days ago
JSON representation
Converts open-api / swagger files to json schema objects ready to use with json schema validation libraries.
- Host: GitHub
- URL: https://github.com/dolegi/open-api-to-schema
- Owner: dolegi
- Created: 2019-02-05T23:05:50.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-02-07T22:35:20.000Z (over 5 years ago)
- Last Synced: 2024-04-25T18:22:29.081Z (6 months ago)
- Topics: json-schema, open-api, swagger
- Language: TypeScript
- Homepage:
- Size: 120 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
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````javascript
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](https://tools.ietf.org/html/draft-handrews-json-schema-01) object ready to be used with json validation libraries such as [ajv](https://www.npmjs.com/package/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- [X] Allof
- [ ] Oneof
- [ ] Anyof
- [X] Expose definitions
- [X] Expose paths
- [X] Override requiring## Example Response
```json
{
"/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"
}
}
}
}
```