openapi-tui
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
Other Feature Animations
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
Arch Linux
You can install using pacman as follows:
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
| Key | Action |
|---|---|
→, l |
Move to next pane |
←, h |
Move to previous pane |
↓, j |
Move down in lists |
↑, k |
Move up in lists |
1...9 |
Move between tabs |
] |
Move to next tab |
[ |
Move to previous tab |
f |
Toggle fullscreen pane |
g |
Go in nested items in lists |
q |
Quit |
/ |
Filter apis |
: |
Run commands |
Backspace, b |
Get out of nested items in lists |
Commands Main Page
| Command | Description |
|---|---|
q |
Quit |
request, r |
Go to request page |
history |
Request history |
Commands Request Page
| Command | Description |
|---|---|
q |
Quit |
send, s |
Send request |
query, q |
Add or remove query strings. sub-commands are add or rm. e.g. query add page |
header, h |
Add or remove headers. sub-commands are add or rm. e.g. header add x-api-key |
request, r |
Load request payload. e.g. request open /home/hamed/payload.json |
response, s |
Save response payload e.g/ response save /home/hamed/result.json |
Environment Variables
| Variable | Description |
|---|---|
OPENAPI_TUI_DEFAULT_SERVER |
Add a custom server url to the list of servers |
Implemented Features
- Viewer
- OpenAPI v3.1
- Display Webhooks
- Display Info and Version
- Filter APIs
- Remote API specification
- Merge Parameters Based on
in - Pane Fullscreen Mode
- Nested Components
- Status Line
- Phone Page
- Call History
- Request Plain Editor
- Header Input (No Validation)
- Path Input (No Validation)
- Calling
- Plain Response Viewer (Status + Headers + Body)
- History viewer
- Refactor footer, add flash footer messages
- Import request body file
- Save response body and header
- Command history with ↑/↓
- Support array query strings
- Suppert extra headers
- Support multiple servers
Backlog
- Schema Types (openapi-31)
- Display Key Mappings in Popup
- Read Spec from STDIN
- Request progress bar







