Skip to content
Validates payloads against a specified JSON Schema within your API Blueprint
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib amends the way jsonschema throws an error Apr 27, 2016
test amends fixture Apr 27, 2016
.gitignore Promisifies and renames library Apr 26, 2016
LICENSE amended license Apr 26, 2016 amended license Apr 26, 2016
index.js Promisifies and renames library Apr 26, 2016
package.json updating lodash Jun 5, 2018


A lightweight promise-based library to validate payloads against a specified JSON Schema within your API Blueprint.


It encourages developers to utilise their API blueprint as a 'source of truth', creating synergy between documentation and source code. This ultimately improves quality and developer-experience for those using the API.

For example:

  • Validate request bodies in your routing middleware
  • Validate response bodies within tests


npm install bluth --save


var Bluth = require( 'bluth' );

 * A default error schema can be provided to catch any
 * response status codes that aren't listed in the Blueprint
var bluth = new Bluth( myBlueprintMarkdown, {
  defaultErrorSchema: myDefaultErrorSchema
} );
Finding a schema
bluth.find( {

  // 'request' or 'response'
  type: 'reponse',

  // URL path
  route: '/my/route',

  // HTTP method
  method: 'GET',

  // HTTP status code (required if type is 'response')
  statusCode: 200

} )
  .then( function( schema ) {
    // hooray!
  } );
Validating a payload

Uses jsonschema's built in validation method.

bluth.validate( myRequestData, {
  type: 'request',
  route: '/my/resource/:resourceId',
  method: 'GET'
} )
  .then( function() {
    // Success!
  } )
  .catch( function( error ) {
    // Error thrown from jsonschema, with validation errors listed
  } );
Retrieving the Blueprint object
  .then( function( blueprint ) {
    // hooray!
  } );

Why the name?

A pun on 'Blueprint' and 'source of truth', with Arrested Development references. I thought it was funny at the time.

You can’t perform that action at this time.