API Specification Converter
raw JSON →The `api-spec-converter` package provides a utility for transforming API descriptions between various popular formats, including OpenAPI (formerly Swagger), RAML, API Blueprint, I/O Docs, Google Discovery, and WADL. As of its current stable version, 2.12.0, its core functionality is robust for conversions *to* OpenAPI 2.0 and *from* OpenAPI 2.0 to OpenAPI 3.x. This specialized focus means it does not offer full bidirectional conversion support for all listed formats. The library offers both a command-line interface (CLI) for quick conversions and a programmatic API for Node.js and browser environments, supporting both traditional callback and modern Promise-based asynchronous patterns. While a specific release cadence isn't explicitly stated, the version numbering indicates ongoing development and maintenance, making it a reliable choice for its specific conversion strengths within the API ecosystem.
Common errors
error TypeError: Converter.convert is not a function ↓
import Converter from 'api-spec-converter';. For CommonJS, use const Converter = require('api-spec-converter');. error ReferenceError: APISpecConverter is not defined ↓
require() or import the module using const Converter = require('api-spec-converter');. The APISpecConverter global is only available in browsers after including the UMD build script. error Error: Unknown format 'unsupported_format' ↓
swagger_1, swagger_2, openapi_3, api_blueprint, io_docs, google, raml, wadl. Also, verify the conversion path (e.g., from raml to openapi_3) is supported. Warnings
breaking The library has significant limitations on the types of conversions it supports. It primarily supports converting *to* OpenAPI (fka Swagger) 2.0 and *from* OpenAPI 2.0 to OpenAPI 3.x. Full bidirectional conversion between all listed formats (RAML, API Blueprint, WADL, etc.) is not supported, and attempting conversions outside the documented paths will fail. ↓
gotcha Users installing the global CLI tool (`npm install -g api-spec-converter`) may encounter issues, particularly on Windows or with certain Node.js/NPM configurations. A known issue (GitHub issue #132) highlights potential problems during global installation. ↓
gotcha This package requires Node.js version 6.0.0 or higher. Running it with older Node.js versions may lead to unexpected errors or silent failures due to incompatible syntax or missing APIs. ↓
Install
npm install api-spec-converter yarn add api-spec-converter pnpm add api-spec-converter Imports
- Converter wrong
import { Converter } from 'api-spec-converter';correctconst Converter = require('api-spec-converter'); - APISpecConverter wrong
const APISpecConverter = require('api-spec-converter').APISpecConverter;correctAPISpecConverter.convert(...); // after <script src="..."></script> - Converter (ESM) wrong
import { convert } from 'api-spec-converter';correctimport Converter from 'api-spec-converter';
Quickstart
const Converter = require('api-spec-converter');
const fs = require('fs');
Converter.convert({
from: 'swagger_1',
to: 'swagger_2',
source: 'https://raw.githubusercontent.com/LucyBot-Inc/api-spec-converter/master/test/input/swagger_1/petstore/pet.json',
})
.then(function(converted) {
// Optionally fill missing required fields with dummy data
converted.fillMissing();
// Validate the converted specification
return converted.validate()
.then(function (result) {
if (result.errors && result.errors.length > 0)
return console.error('Validation Errors:', JSON.stringify(result.errors, null, 2));
if (result.warnings && result.warnings.length > 0)
console.warn('Validation Warnings:', JSON.stringify(result.warnings, null, 2));
// Save the converted spec to a file
fs.writeFileSync('converted-swagger2.json', converted.stringify({ syntax: 'json', order: 'openapi' }));
console.log('Converted spec saved to converted-swagger2.json');
})
.catch(function(validationErr) {
console.error('Validation failed:', validationErr);
});
})
.catch(function(conversionErr) {
console.error('Conversion failed:', conversionErr);
});