OpenAPI Command Line Tool
openapicmd - The CLI for all things OpenAPI and Swagger
Install
npm install -g openapicmd
openapi help
Features
- Read and convert local and remote JSON/YAML OpenAPI definition files
- Use as CLI client to easily call API endpoints
- Run Swagger UI locally
- Bundle static Swagger UI sites
- Run Swagger Editor locally
- Convert Swagger 2.0 to OpenAPI 3.0.x
- Run Local Mock APIs
Commands
openapi auth [DEFINITION]
openapi call [DEFINITION]
openapi help [COMMAND]
openapi info [DEFINITION]
openapi init
openapi load DEFINITION
openapi mock [DEFINITION]
openapi read [DEFINITION]
openapi swagger-editor [DEFINITION]
openapi swagger-ui [DEFINITION]
openapi swagger2openapi [DEFINITION]
openapi typegen [DEFINITION]
openapi unload
openapi auth [DEFINITION]
Authenticate with apis (writes to .openapiconfig)
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
See code: src/commands/auth.ts
openapi call [DEFINITION]
Call API endpoints
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" }'
See code: src/commands/call.ts
openapi help [COMMAND]
display help for openapi
display help for <%= config.bin %>
USAGE
$ openapi help [COMMAND]
ARGUMENTS
COMMAND command to show help for
OPTIONS
--all see all commands in CLI
See code: @oclif/plugin-help
openapi info [DEFINITION]
Display API information
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
See code: src/commands/info.ts
openapi init
Initialise a definition file from scratch
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
See code: src/commands/init.ts
openapi load DEFINITION
Set the default definition file for a workspace (writes to .openapiconfig)
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
See code: src/commands/load.ts
openapi mock [DEFINITION]
Start a local mock API server
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
See code: src/commands/mock.ts
openapi read [DEFINITION]
Read and manipulate definition files
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
See code: src/commands/read.ts
openapi swagger-editor [DEFINITION]
Start a Swagger Editor instance
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
See code: src/commands/swagger-editor.ts
openapi swagger-ui [DEFINITION]
Start or bundle a Swagger UI instance
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
See code: src/commands/swagger-ui.ts
openapi swagger2openapi [DEFINITION]
Convert Swagger 2.0 definitions to OpenAPI 3.0.x
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
See code: src/commands/swagger2openapi.ts
openapi typegen [DEFINITION]
Generate types from openapi definition
Generate types from openapi definition
USAGE
$ openapi typegen [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
EXAMPLE
$ openapi typegen ./openapi.yml > openapi.d.ts
See code: src/commands/typegen.ts
openapi unload
Unset the default definition file for a workspace (writes to .openapiconfig)
Unset the default definition file for a workspace (writes to .openapiconfig)
USAGE
$ openapi unload
OPTIONS
-h, --help show CLI help
EXAMPLE
$ openapi unload
See code: src/commands/unload.ts
Contributing
openapicmd
is Free and Open Source Software. Issues and pull requests are more than welcome!