open-api

An api framework that forces versioning, simplifies data validation, and automates documentation.

Open API

An API server that forces versioning, simplifies deprecation, and automates documentation and data validation.

var v1 = api.version({
    name:"something-for-a-url",
    envs:["list", "of", "envs", "this", "is", "active", "for"]
});
 
var v2 = api.version({
    name:"v2",
    envs:["development"]
});
v1.addValidator(
    "data-validator-name",
    "desc for docs",
    "example for docs", 
    function(value){ 
        return value=="is valid";
    }
);
var opts = {
    validate: {
        request: "data-validator-name",
        response: "data-validator-name"
    },
    desc: "Some explanation for the docs"
}
 
v1.get("route-path", opts, function(req, res){
    res.json({"the":"payload"});
});
 
v2.get("route-path", {discontinued:true});
var openApi = require("../../");
var api = openApi();
 
//create a version of your api
var v1 = api.version({
    name: "v1",
    envs: ["development", "staging", "production"]
});
 
//add an endpoint
v1.get("foo", {
    validate: {
        request: "empty",
        response: "object"
    },
    desc: "Returns the message foo"
}, function(req, res) {
    res.json({"message":"foo"});
});
 
//create another version
var v2 = api.version({
    name: "v2",
    envs: ["development", "staging"]
});
 
//add another endpoint
v2.get("bar", {
    validate: {
        request: "empty",
        response: "object"
    },
    desc: "Returns the message bar"
}, function(req, res) {
    res.json({"message":"bar"});
});
 
//create a thrid version!
var v3 = api.version({
    name: "v3",
    envs: ["development"]
});
 
//remove an endpoint
v3.get("foo", {discontinued:true});
 
 
var http = require("http");
http.createServer(api).listen(3000);