Posting is an powerful HTTP client which brings Postman-like functionality to your terminal.
It's designed for those who prefer working in a terminal environment and enjoy fast, keyboard-centric user interfaces.
![image](https://private-user-images.githubusercontent.com/5740731/341597256-54b500df-48ac-4a8a-84ad-e5f64dbdc023.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkwNzkxMTIsIm5iZiI6MTcxOTA3ODgxMiwicGF0aCI6Ii81NzQwNzMxLzM0MTU5NzI1Ni01NGI1MDBkZi00OGFjLTRhOGEtODRhZC1lNWY2NGRiZGMwMjMucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDYyMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA2MjJUMTc1MzMyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MGQ5OGMzMGVjMjE3MDY4MjA2MzJlMzYwYWEwOTY4NGMxZDA2YWE3MDQ4NjAwYzM4MmE3YWE0MmM0N2Y5YmMyYyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.JtpihgL_QOUkISiyV5OGFf4cbrPrfmQCcoRyxkjjxNc)
It's still a work in progress and far from feature complete. Please don't open any bug reports yet - although I'm happy to hear ideas/suggestions!
Posting can be installed via pipx
:
pipx install posting
Python 3.11 or later is required.
More installation methods (brew
, etc) will be added soon.
Requests can be stored inside "collections" on your file system. A collection is simply a directory containing one or more requests.
Each request is stored as a simple YAML file, suffixed with .posting.yaml
- easy to read, understand, and version control!
Here's a quick example of a *.posting.yaml
file.
name: Create user
description: Adds a new user to the system.
method: POST
url: https://jsonplaceholder.typicode.com/users
body: |-
{
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com"
}
headers:
- name: Content-Type
value: application/json
- name: Some-Header
value: Some value
enabled: false
params:
- name: sendWelcomeEmail
value: 'true'
To open a collection, simply pass the path to the --collection
option when launching Posting:
posting --collection path/to/collection
The supplied directory will be recursively searched for files matching **/*.posting.yaml
, and they'll appear in the sidebar.
If you don't supply a collection directory, the current working directory will be used.
To save the currently open request, press ctrl+s.
Posting can be navigated using either mouse or keyboard.
Jump mode is the fastest way to get around in Posting.
Press ctrl+o to enter jump mode.
A key overlay will appear on the screen, allowing you to jump to any widget by pressing the corresponding key.
jumpmode.mov
tab and shift+tab will move focus between widgets, and j/k will move around within a widget.
Important keyboard shortcuts are displayed at the bottom of the screen.
However, there are many other shortcuts available - these will be documented soon.
Some functionality in Posting doesn't warrant a dedicated keyboard shortcut (for example, switching to a specific theme), and can instead be accessed via the command palette.
To open the command palette, press ctrl+p.
posting-theme-switching-10jun24.mov
You can turn off animations by setting the environment variable TEXTUAL_ANIMATIONS=none
.
- Keyboard Friendly: Navigate and iterate on your APIs using simple keyboard shortcuts.
- File System Storage: Your collections are saved as files, meaning you can easily sync them using version control or your favorite cloud provider.
- Multiplatform: Run on MacOS, Linux and Windows.
- Template Variables: Define variables and substitute them into your requests.
- Powerful Text and JSON Editor: Offers tree-sitter powered syntax highlighting, undo/redo, copy/paste, and more.
- Runs Over SSH: Send requests from a remote host via SSH.
- Your Idea Here: Please let me know if you have opinions on the features above, or any other ideas!