/openapicmd

The CLI for all things OpenAPI and Swagger

Primary LanguageTypeScriptMIT LicenseMIT

OpenAPI Command Line Tool

CI npm version License Buy me a coffee

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]

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!