OpenAPI-TUI: Terminal UI to list, browse and run APIs defined with OpenAPI spec
GitHub - zaghaghi/openapi-tui: Terminal UI to list, browse and run APIs defined with openapi spec.

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

  Packaging status


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

