Home

Awesome

logo

openapi-tui

CI

Terminal UI to list, browse and run APIs defined with OpenAPI v3.0 and v3.1 spec.

Usage

❯ openapi-tui --help
This TUI allows you to list and browse APIs described by the openapi specification.

Usage: openapi-tui --input <PATH>

Options:
  -i, --input <PATH>  Input file or url, in json or yaml format with openapi specification
  -h, --help          Print help
  -V, --version       Print version

Examples

# open local yaml file
❯ openapi-tui -i examples/stripe/spec.yml

# open local json file
❯ openapi-tui -i examples/petstore.json

# open remote file
❯ openapi-tui -i https://raw.githubusercontent.com/github/rest-api-description/main/descriptions-next/api.github.com/api.github.com.yaml

Demo

demo

Other Feature Animations

<details> <summary>Show more</summary>

Nested Components

nested-refrences

Fullscreen

fullscreen

Webhooks

webhooks

Filter

filter

Call Endpoints

call

Multiple Server Support

call

</details> <br />

Installation

Install from source:

❯ cargo install openapi-tui

Or download pre-built artifact from release page.

Docker

Just run the application with docker.

# open local file
❯ docker run --rm -ti -v$(pwd)/examples:/opt zaghaghi/openapi-tui -i /opt/petstore.json

# open remote file
❯ docker run --rm -it zaghaghi/openapi-tui -i https://raw.githubusercontent.com/github/rest-api-description/main/descriptions-next/api.github.com/api.github.com.yaml

Distro Packages

<details> <summary>Packaging status</summary>

Packaging status

</details>

Arch Linux

You can install using pacman as follows:

❯ pacman -S openapi-tui

NixOS

You can install the openapi-tui package directly with the following command:

nix profile install github:zaghaghi/openapi-tui

You can also install openapi-tui by adding it to your configuration.nix file.

# flake.nix

{
  inputs.openapi-tui.url = "github:zaghaghi/openapi-tui";
  # ...

  outputs = {nixpkgs, ...} @ inputs: {
    nixosConfigurations.<your-hostname> = nixpkgs.lib.nixosSystem {
      specialArgs = { inherit inputs; }; # this is the important part
      modules = [
        ./configuration.nix
      ];
    };
  }
}

Then, add openapi-tui to your configuration.nix

# configuration.nix

{inputs, pkgs, ...}: {
  environment.systemPackages = with pkgs; [
    inputs.openapi-tui.packages.${pkgs.system}.openapi-tui
  ];
}

Keybindings

KeyAction
, lMove to next pane
, hMove to previous pane
, jMove down in lists
, kMove up in lists
1...9Move between tabs
]Move to next tab
[Move to previous tab
fToggle fullscreen pane
gGo in nested items in lists
qQuit
/Filter apis
:Run commands
Backspace, bGet out of nested items in lists

Commands Main Page

CommandDescription
qQuit
request, rGo to request page
historyRequest history

Commands Request Page

CommandDescription
qQuit
send, sSend request
query, qAdd or remove query strings. sub-commands are add or rm. e.g. query add page
header, hAdd or remove headers. sub-commands are add or rm. e.g. header add x-api-key
request, rLoad request payload. e.g. request open /home/hamed/payload.json
response, sSave response payload e.g/ response save /home/hamed/result.json

Environment Variables

VariableDescription
OPENAPI_TUI_DEFAULT_SERVERAdd a custom server url to the list of servers

Implemented Features

Backlog