The modern API client that lives in your terminal.
Project description
Posting.
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.
It's still a work in progress and not yet feature complete!
Installation
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.
Collections
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 directory, Posting will use the default collection directory.
You can check where this is by running posting locate collection
.
To save the currently open request, press ctrl+s.
Navigation
Posting can be navigated using either mouse or keyboard.
Jump mode
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.
https://github.com/darrenburns/posting/assets/5740731/5e7cdf57-90b2-4dba-b468-0057c6ef1806
Tab navigation
tab and shift+tab will move focus between widgets, and j/k will move around within a widget.
Keyboard shortcuts
Important keyboard shortcuts are displayed at the bottom of the screen.
However, there are many other shortcuts available - these will be documented soon.
Command palette
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.
https://github.com/darrenburns/posting/assets/5740731/a199e5f2-5621-42e6-b239-a796d1dc144a
Configuration
Posting can be configured using a configuration file, environment variables, and/or .env
files.
Configuration values are loaded in the following order of precedence (highest to lowest):
- Configuration file
- Environment variables
.env
files
Configuration file
You can write configuration for Posting using YAML.
The location of the config file can be checked using the command posting locate config
.
Here's an example configuration file:
theme: galaxy
layout: horizontal
Environment variables
All configuration values can also be set as environment variables.
Simply prefix the name of the environment variable with POSTING_
.
For example, to set the theme to galaxy
, you can set the environment variable POSTING_THEME=galaxy
.
dotenv (.env
) files
Posting also supports .env
(dotenv) files, which are useful if you want to keep your configuration in a file rather than in your shell's environment variables.
You can tell Posting to use a .env
file using the --env-file
option.
Here's an example .env
file:
POSTING_THEME="cobalt"
POSTING_LAYOUT="vertical"
Available configuration options
Config Key | Environment Variable | Possible Values | Default | Description |
---|---|---|---|---|
theme |
POSTING_THEME |
"posting" , "galaxy" , "monokai" , "solarized-light" , "nautilus" , "nebula" , "alpine" , "cobalt" , "twilight" , "hacker" |
"posting" |
Sets the theme of the application. |
layout |
POSTING_LAYOUT |
"vertical" , "horizontal" |
"horizontal" |
Sets the layout of the application. |
Animation
You can turn off animations by setting the environment variable TEXTUAL_ANIMATIONS=none
.
Planned Features
- 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!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for posting-1.0.0b28-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36c59c9df85bed9e496d1a7f2f45455b0bf29e711edf9f7a736c2efcac70fc5b |
|
MD5 | bbe75c9e08b6138c8e8b78ce30296671 |
|
BLAKE2b-256 | 786b1b9ab2ea0a4983712aaddac7f16afcab8691e814786f48a17795e75c5512 |