#tui #openapi #specification #list #json-api #yaml #browse

app openapi-tui

This TUI allows you to list and browse APIs described by the openapi specification

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

#684 in Web programming

36 downloads per month

MIT license

6MB
5K SLoC

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

Show more

Nested Components

nested-refrences

Fullscreen

fullscreen

Webhooks

webhooks

Filter

filter

Call Endpoints

call

Multiple Server Support

call


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

Packaging status

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

~31–49MB
~780K SLoC