This repository contains a node implementation that converts a RAML data type into JSON schema, and back.
npm install -g ramldt2jsonschema
This will install two command-line tools:
dt2js
: RAML data type <> JSON schemajs2dt
: JSON schema <> RAML data type
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 <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
npm install ramldt2jsonschema --save
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 !include
s 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))
})
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)
})
-
in js2dt,
- the following JSON schema properties are not supported and as a result, will not be converted:
not
- number and integer's
exclusiveMaximum
andexclusiveMinimum
- object's
dependencies
- array's
additionalItems
- the JSON schema
oneOf
property is processed the same way as the JSON schemaanyOf
property, it is converted to the RAMLunion
type - the JSON schema
type: 'string'
withmedia
andbinaryEncoding: 'binary'
is converted to the RAMLfile
type - the JSON schema
type: string
with apattern
that matches exactly one of the RAML date types will be converted in the matching RAML date type - the JSON schema
media
property withanyOf
, elements of which have the propertymediaType
will be converted tofileTypes
in 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:
Apache 2.0