Package Exports
- ramldt2jsonschema
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 (ramldt2jsonschema) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
ramldt2jsonschema
This repository contains a node implementation that converts a RAML data type into JSON schema, and back.
Usage
Global (CLI)
npm install -g ramldt2jsonschemaThis will install two command-line tools:
dt2js: RAML data type <> JSON schemajs2dt: JSON schema <> RAML data type
dt2js
dt2js <ramlFile> <ramlTypeName>Options
<ramlFile>Path to a file containing at least one RAML data type (e.g.path/to/api.raml)<ramlTypeName>RAML type name to convert to JSON schema
js2dt
js2dt <jsonFile> <ramlTypeName>Options
<jsonFile>Path to a JSON schema file (e.g.path/to/schema.json)<ramlTypeName>RAML type name to give to the exported RAML data type
Locally (JavaScript)
npm install ramldt2jsonschema --savedt2js
var raml2json = require('ramldt2jsonschema')
var join = require('path').join
var fs = require('fs')
var filePath = join(__dirname, 'api.raml')
var ramlData = fs.readFileSync(filePath).toString()
raml2json.dt2js(ramlData, 'Cat', function (err, schema) {
if (err) {
console.log(err)
return
}
console.log(JSON.stringify(schema, null, 2))
})NOTE: when the inputed RAML contains !includes and those includes are not in the same directory as the script it is being ran from, you can use dt2js.setBasePath() to specify a different base path.
var raml2json = require('ramldt2jsonschema')
var join = require('path').join
var fs = require('fs')
var filePath = join(__dirname, 'api.raml')
var includesPath = '/different/path/to/includes/'
var ramlData = fs.readFileSync(filePath).toString()
raml2json.setBasePath(includesPath)
raml2json.dt2js(ramlData, 'Cat', function (err, schema) {
if (err) {
console.log(err)
return
}
console.log(JSON.stringify(schema, null, 2))
})js2dt
var raml2json = require('ramldt2jsonschema')
var join = require('path').join
var fs = require('fs')
var filePath = join(__dirname, 'schema.json')
var jsonData = fs.readFileSync(filePath).toString()
raml2json.js2dt(jsonData, 'Person', function (err, raml) {
if (err) {
console.log(err)
return
}
console.log('#%RAML 1.0 Library\n')
console.log(raml)
})Limitations
in js2dt,
- the following JSON schema properties are not supported and as a result, will not be converted:
not- number and integer's
exclusiveMaximumandexclusiveMinimum - object's
dependencies - array's
additionalItems
- the JSON schema
oneOfproperty is processed the same way as the JSON schemaanyOfproperty, it is converted to the RAMLuniontype - the JSON schema
type: 'string'withmediaandbinaryEncoding: 'binary'is converted to the RAMLfiletype - the JSON schema
type: stringwith apatternthat matches exactly one of the RAML date types will be converted in the matching RAML date type - the JSON schema
mediaproperty withanyOf, elements of which have the propertymediaTypewill be converted tofileTypesin RAML
- the following JSON schema properties are not supported and as a result, will not be converted:
in dt2js,
- the following RAML properties are not supported/converted:
- annotations
- the following RAML properties are not supported/converted:
License
Apache 2.0