postman-to-openapi

Convert postman collection to OpenAPI spec

Usage no npm install needed!

<script type="module">
  import postmanToOpenapi from 'https://cdn.skypack.dev/postman-to-openapi';
</script>

README

logo

postman-to-openapi

🛸 Convert Postman Collection v2.1/v2.0 to OpenAPI v3.0.

Or in other words, transform this specification and also this to this one

build codecov npm version js-standard-style CodeQL

Installation

Using npm:

npm i postman-to-openapi

Using yarn:

yarn add postman-to-openapi

To install as a cli just

npm i postman-to-openapi -g

Quick Usage

As a library

// Require Package
const postmanToOpenApi = require('postman-to-openapi')

// Postman Collection Path
const postmanCollection = './path/to/postman/collection.json'
// Output OpenAPI Path
const outputFile = './api/collection.yml'

// Async/await
try {
    const result = await postmanToOpenApi(postmanCollection, outputFile, { defaultTag: 'General' })
    // Without save the result in a file
    const result2 = await postmanToOpenApi(postmanCollection, null, { defaultTag: 'General' })
    console.log(`OpenAPI specs: ${result}`)
} catch (err) {
    console.log(err)
}

// Promise callback style
postmanToOpenApi(postmanCollection, outputFile, { defaultTag: 'General' })
    .then(result => {
        console.log(`OpenAPI specs: ${result}`)
    })
    .catch(err => {
        console.log(err)
    })

As a cli

p2o ./path/to/PostmantoCollection.json -f ./path/to/result.yml -o ./path/to/options.json

Cli Demo

cli demo gif

Documentation

All features, usage instructions and help can be found in the Documentation page

Development

This project use for development:

Use the scripts in package.json:

  • test:unit: Run mocha unit test.
  • test: Execute test:lint plus code coverage.
  • lint: Execute standard lint to review errors in code.
  • lint:fix: Execute standard lint and automatically fix errors.
  • changelog: Update changelog automatically.

Steps to generate the gif demo:

  • Install terminalizer npm install -g terminalizer
  • Start a recording using terminalizer record demo -d 'zsh'
  • Stop recording with Ctrl+D
  • Check demo with terminalizer play demo
  • Adjust delays in demo.yml, change rows to 15 (is the height) and anonymize terminal session.
  • Generate the gif with terminalizer render demo

Husky is configured to avoid push incorrect content to git.

Tags

Nodejs Javascript OpenAPI Postman Newman Collection Transform Convert

License

See the LICENSE file.