Awesome
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
<details> <summary>Show more</summary>Nested Components
Fullscreen
Webhooks
Filter
Call Endpoints
Multiple Server Support
</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> </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
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