Skip to content

lts-beratung/json-to-openapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

json-to-openapi install size Build Status XO code style

A small cli application to convert json schemas to openapi schemas.

Using both json-schema-ref-parser and json-schema-to-openapi schema.

Features

Please read the documentation for json-schema-ref-parser and json-schema-to-openapi schema to get a complete list of all the features available.

Install

$ npm install --global json-to-openapi
$ json-to-openapi --help

Usage
json-to-openapi filename

Examples
$ json-to-openapi schema.json
// > Converts the json schema stored under schema.json to an openapi schema.

Examples

Basic use case where one wants to convert a json schema stored under schema.json to an openapi schema:

// schema.json
{
	"$schema": "http://json-schema.org/draft-06/schema#",
	"description": "A customer schema",
	"type": "object",
	"required": [
		"id"
	],
	"properties": {
		"id": {
			"type": "string",
			"description": "Customer ID"
		},
		"firstName": {
			"type": "string",
			"description": "First name of a customer"
		},
		"lastName": {
			"type": "string",
			"description": "Last name of a customer"
		}
	}
}

After conversion with json-to-openapi schema.json:

{
	"description": "A customer schema",
	"type": "object",
	"required": [
		"id"
	],
	"properties": {
		"id": {
			"type": "string",
			"description": "Customer ID"
		},
		"firstName": {
			"type": "string",
			"description": "First name of a customer"
		},
		"lastName": {
			"type": "string",
			"description": "Last name of a customer"
		}
	}
}

It also dereferences $ref keywords, thanks to json-schema-ref-parser. An example of how would that work can be found below:

// schema.json
{
	// ...
	"properties": {
		// ...
		"emails": {
			"type": "array",
			"description": "All emails of the customer",
			"items": {
				"$ref": "#/definitions/email"
			}
		}
	},
	"definitions": {
		"email": {
			"type": "object",
			"additionalProperties": false,
			"properties": {
				"id": {
					"type": "string",
					"description": "Identifier of the email"
				},
				"mail": {
					"type": "string",
					"description": "Mail address"
				}
			}
		}
	}
}

After the conversion:

{
	// ...
	"properties": {
		// ...
		"emails": {
			"type": "array",
			"description": "All emails of the customer",
			"items": {
				"type": "object",
				"additionalProperties": false,
				"properties": {
					"id": {
						"type": "string",
						"description": "Identifier of the email"
					},
					"mail": {
						"type": "string",
						"description": "Mail address"
					}
				}
			}
		}
	},
	"definitions": {
		"email": {
			// ...
		}
	}
}

See also

License

MIT © vikepic