OpenAPI Command Line Tool
openapicmd - The CLI for all things OpenAPI and Swagger
Install
npm install -g openapicmd
openapi help
Features
- [x] Read and convert local and remote JSON/YAML OpenAPI definition files
- [x] Use as CLI client to easily call API endpoints
- [x] Run Swagger UI locally
- [x] Bundle static Swagger UI sites
- [x] Run Swagger Editor locally
- [x] Convert Swagger 2.0 to OpenAPI 3.0.x
- [x] Run Local Mock APIs
Commands
openapi help
openapi read
openapi info
openapi swagger-ui
openapi swagger-editor
openapi call
openapi mock
openapi swagger2openapi
openapi init
openapi load
openapi unload
openapi auth
openapi help
display help for openapi
USAGE
$ openapi help [COMMAND]
ARGUMENTS
COMMAND command to show help for
OPTIONS
--all see all commands in CLI
openapi read
Read and manipulate definition files
USAGE
$ openapi read [DEFINITION]
ARGUMENTS
DEFINITION input definition file
OPTIONS
-B, --bundle resolve remote $ref pointers
-C, --strip=default|all|openapi_client_axios|openapi_backend Strip optional metadata such as examples and
descriptions from definition
-D, --dereference resolve $ref pointers
-H, --header=header add request headers when calling remote urls
-I, --inject={"info":{"version":"1.0.0"}} inject JSON to definition with deep merge
-R, --root=/ override API root path
-S, --server=http://localhost:9000 override servers definition
-V, --validate validate against openapi schema
-f, --format=(json|yaml|yml) [default: yaml] output format
-h, --help show CLI help
--json format as json (short for -f json)
--yaml format as yaml (short for -f yaml)
EXAMPLES
$ openapi read https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore.yaml
$ openapi read ./openapi.yml -f json > openapi.json
openapi info
Display API information
USAGE
$ openapi info [DEFINITION]
ARGUMENTS
DEFINITION input definition file
OPTIONS
-B, --bundle resolve remote $ref pointers
-C, --strip=default|all|openapi_client_axios|openapi_backend Strip optional metadata such as examples and
descriptions from definition
-D, --dereference resolve $ref pointers
-H, --header=header add request headers when calling remote urls
-I, --inject={"info":{"version":"1.0.0"}} inject JSON to definition with deep merge
-R, --root=/ override API root path
-S, --server=http://localhost:9000 override servers definition
-V, --validate validate against openapi schema
-h, --help show CLI help
--operations list operations in document
--schemas list schemas in document
--security list security schemes in document
EXAMPLES
$ openapi info https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore.yaml
$ openapi info ./openapi.yml
openapi swagger-ui
Start or bundle a Swagger UI instance
USAGE
$ openapi swagger-ui [DEFINITION]
ARGUMENTS
DEFINITION input definition file
OPTIONS
-B, --bundle=outDir bundle a static site to directory
-C, --strip=default|all|openapi_client_axios|openapi_backend Strip optional metadata such as examples and
descriptions from definition
-H, --header=header add request headers when calling remote urls
-I, --inject={"info":{"version":"1.0.0"}} inject JSON to definition with deep merge
-R, --root=/ override API root path
-S, --server=http://localhost:9000 override servers definition
-h, --help show CLI help
-p, --port=9000 [default: 9000] port
--[no-]deeplinks [default: true] allow deep linking
--expand=full|list|none [default: list] default expansion setting for the
operations and tags
--[no-]filter [default: true] enable filtering by tag
--[no-]logger [default: true] log requests
--[no-]operationids [default: true] display operationIds
--proxy set up a proxy for the api to avoid CORS issues
--[no-]requestduration [default: true] display request durations in "try it
now"
--[no-]withcredentials [default: true] send cookies in "try it now"
EXAMPLES
$ openapi swagger-ui
$ openapi swagger-ui ./openapi.yml
$ openapi swagger-ui ./openapi.yml --bundle outDir
openapi swagger-editor
Start a Swagger Editor instance
USAGE
$ openapi swagger-editor [DEFINITION]
ARGUMENTS
DEFINITION input definition file
OPTIONS
-H, --header=header add request headers when calling remote urls
-h, --help show CLI help
-p, --port=9000 [default: 9000] port
--[no-]logger [default: true] log requests
EXAMPLES
$ openapi swagger-editor
$ openapi swagger-editor ./openapi.yml
openapi call
Call API endpoints
USAGE
$ openapi call [DEFINITION]
ARGUMENTS
DEFINITION input definition file
OPTIONS
-B, --bundle resolve remote $ref pointers
-C, --strip=default|all|openapi_client_axios|openapi_backend Strip optional metadata such as examples and
descriptions from definition
-D, --dereference resolve $ref pointers
-H, --header=header add request headers when calling remote urls
-I, --inject={"info":{"version":"1.0.0"}} inject JSON to definition with deep merge
-R, --root=/ override API root path
-S, --server=http://localhost:9000 override servers definition
-V, --validate validate against openapi schema
-d, --data=data request body
-h, --help show CLI help
-i, --include include status code and response headers the output
-k, --apikey=apikey set api key
-o, --operation=operationId operationId
-p, --param=key=value parameter
-p, --password=password set basic auth password
-s, --security=security use security scheme
-t, --token=token set bearer token
-u, --username=username set basic auth username
-v, --verbose verbose mode
EXAMPLES
$ openapi call -o getPets
$ openapi call -o getPet -p id=1
$ openapi call -o createPet -d '{ "name": "Garfield" }'
openapi mock
Start a local mock API server
USAGE
$ openapi mock [DEFINITION]
ARGUMENTS
DEFINITION input definition file
OPTIONS
-C, --strip=default|all|openapi_client_axios|openapi_backend Strip optional metadata such as examples and
descriptions from definition
-H, --header=header add request headers when calling remote urls
-I, --inject={"info":{"version":"1.0.0"}} inject JSON to definition with deep merge
-R, --root=/ override API root path
-S, --server=http://localhost:9000 override servers definition
-U, --swagger-ui=docs Swagger UI endpoint
-h, --help show CLI help
-p, --port=9000 [default: 9000] port
--[no-]logger [default: true] log requests
--[no-]validate [default: true] validate requests according to schema
EXAMPLES
$ openapi mock ./openapi.yml
$ openapi mock https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore.yaml
openapi swagger2openapi
Convert Swagger 2.0 definitions to OpenAPI 3.0.x
USAGE
$ openapi swagger2openapi [DEFINITION]
ARGUMENTS
DEFINITION input definition file
OPTIONS
-B, --bundle resolve remote $ref pointers
-C, --strip=default|all|openapi_client_axios|openapi_backend Strip optional metadata such as examples and
descriptions from definition
-D, --dereference resolve $ref pointers
-H, --header=header add request headers when calling remote urls
-I, --inject={"info":{"version":"1.0.0"}} inject JSON to definition with deep merge
-R, --root=/ override API root path
-S, --server=http://localhost:9000 override servers definition
-V, --validate validate against openapi schema
-f, --format=(json|yaml|yml) [default: yaml] output format
-h, --help show CLI help
--json format as json (short for -f json)
--yaml format as yaml (short for -f yaml)
EXAMPLE
$ openapi swagger2openapi --yaml ./swagger.json > openapi.yml
openapi init
Initialise a definition file from scratch
USAGE
$ openapi init
OPTIONS
-I, --inject={"info":{"version":"1.0.0"}} inject JSON to definition with deep merge
-S, --server=http://localhost:9000 override servers definition
-T, --title=title [default: My API] The title for the API
-d, --description=description Description for the API
-f, --format=(json|yaml|yml) [default: yaml] output format
-h, --help show CLI help
-v, --version=version [default: 0.0.1] Version of the API
--json format as json (short for -f json)
--license=mit|apache2 The license for the API
--terms=terms A URL to the Terms of Service for the API.
--yaml format as yaml (short for -f yaml)
EXAMPLE
$ openapi init --title 'My API' > openapi.yml
openapi load
Set the default definition file for a workspace (writes to .openapiconfig)
USAGE
$ openapi load DEFINITION
ARGUMENTS
DEFINITION input definition file
OPTIONS
-V, --validate validate against openapi schema
-h, --help show CLI help
EXAMPLES
$ openapi load ./openapi.yml
$ openapi load https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore.yaml
openapi unload
Unset the default definition file for a workspace (writes to .openapiconfig)
USAGE
$ openapi unload
OPTIONS
-h, --help show CLI help
EXAMPLE
$ openapi unload
openapi auth
Authenticate with apis (writes to .openapiconfig)
USAGE
$ openapi auth [DEFINITION]
ARGUMENTS
DEFINITION input definition file
OPTIONS
-B, --bundle resolve remote $ref pointers
-C, --strip=default|all|openapi_client_axios|openapi_backend Strip optional metadata such as examples and
descriptions from definition
-D, --dereference resolve $ref pointers
-H, --header=header add request headers when calling remote urls
-I, --inject={"info":{"version":"1.0.0"}} inject JSON to definition with deep merge
-R, --root=/ override API root path
-S, --server=http://localhost:9000 override servers definition
-V, --validate validate against openapi schema
-h, --help show CLI help
-k, --apikey=apikey set api key
-p, --password=password set basic auth password
-s, --security=security use security scheme
-t, --token=token set bearer token
-u, --username=username set basic auth username
EXAMPLES
$ openapi auth
$ openapi auth --token eyJh...
$ openapi auth --security ApiKeyAuth --apikey secret123
$ openapi auth --security BasicAuth --username admin --password password
Contributing
openapicmd
is Free and Open Source Software. Issues and pull requests are more than welcome!