15 releases (9 breaking)
0.10.0 | Oct 4, 2024 |
---|---|
0.9.4 | Jul 27, 2024 |
0.9.3 | May 12, 2024 |
0.6.1 | Mar 16, 2024 |
#638 in Web programming
455 downloads per month
6MB
5K
SLoC
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
Show more
Nested Components
Fullscreen
Webhooks
Filter
Call Endpoints
Multiple Server Support
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:
❯ 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
Dependencies
~29–46MB
~750K SLoC