Skip to main content
*********************************************
JSONRPCake: a CLI JSON-RPC client for humans.
*********************************************


JSONRPCake is a **command line JSON-RPC client**
that wraps the jsonrpc-ns library.
It is a fork of `HTTPie`_ written by `Jakub Roztocil`_.
Its goal is to make CLI interaction
with `JSON-RPC`_ 2.0 services as **human-friendly** as possible. It provides a
simple ``jsonrpc`` command that allows for sending arbitrary `JSON-RPC`_ requests using a
simple and natural syntax, and displays colorized responses. JSONRPCake can be used
for **testing, debugging**, and generally **interacting** with `JSON-RPC`_ servers.

JSONRPCake is written in Python, and under the hood it uses the
`jsonrpc-ns`_ and `Pygments`_ libraries.


**Table of Contents**


.. contents::
:local:
:depth: 1
:backlinks: none


=============
Main Features
=============

* Expressive and intuitive syntax
* Formatted and colorized terminal output
* Built-in JSON support
* Arbitrary request data


============
Installation
============

The latest **stable version** of JSONRPCake can always be installed or updated
to via `pip`_:

.. code-block:: bash

$ pip install --upgrade jsonrpcake


=====
Usage
=====


Hello World:


.. code-block:: bash

$ jsonrpc example.org:3000 hello


Synopsis:

.. code-block:: bash

$ jsonrpc ADDRESS:PORT METHOD [PARAMETER [PARAMETER [...]]]

See also ``jsonrpc --help``.


--------
Examples
--------

`JSON`_ params:

.. code-block:: bash

$ jsonrpc example.org:3000 update name=John uid:=1234


=========================
JSON-RPC Address and Port
=========================

The address and port are separated by a ':'.
The TCP port is **required**. When the address **omitted**,
the default address is ``localhost``.

.. code-block:: bash

$ jsonrpc :3000 users

Is equivalent to:

.. code-block:: bash

$ jsonrpc localhost:3000 users


===============
JSON-RPC Method
===============

The name of the JSON-RPC method comes right after the address and port:

.. code-block:: bash

$ jsonrpc example.org:3000 users


The ``METHOD`` argument is **required**.


=============
Parameters
=============

JSON parameters are key/value pairs specified after the ```METHOD```.
The parameter type is distinguished only by the separator used:
``:``, ``=``, ``:=``, ``==``, ``@``, ``=@``, and ``:=@``. The ones with an
``@`` expect a file path as value.

+-----------------------+-----------------------------------------------------+
| Item Type | Description |
+=======================+=====================================================+
| Data Fields | Request data fields to be serialized as a JSON |
| ``field=value``, | object (default). |
+-----------------------+-----------------------------------------------------+
| Raw JSON fields | Useful when sending JSON and one or |
| ``field:=json``, | more fields need to be a ``Boolean``, ``Number``, |
| ``field:=@file.json`` | nested ``Object``, or an ``Array``, e.g., |
| | ``meals:='["ham","spam"]'`` or ``pies:=[1,2,3]`` |
| | (note the quotes). |
+-----------------------+-----------------------------------------------------+


================
Redirected Input
================

**A universal method for passing request parameters is through redirected** ``stdin``
(standard input). Such data is buffered and then with no further processing
used as the request body. There are multiple useful ways to use piping:

Redirect from a file:

.. code-block:: bash

$ jsonrpc example.com:7080 add.user < person.json


You can use ``echo`` for simple data:

.. code-block:: bash

$ echo '{"uid": 1234, "name": "John"}' | jsonrpc example.com:3000 update.userinfo


You can use ``cat`` to enter multiline data on the terminal:

.. code-block:: bash

$ cat | jsonrpc example.com:3000 update
<paste>
^D


To prevent JSONRPCake from reading ``stdin`` data you can use the
``--ignore-stdin`` option.


=================
Terminal Output
=================

JSONRPCake does several things by default in order to make its terminal output
easy to read.


---------------------
Colors and Formatting
---------------------

Syntax highlighting is applied to the response (where it makes
sense). You can choose your prefered color scheme via the ``--style`` option
if you don't like the default one (see ``$ jsonrpc --help`` for the possible
values).

Also, the following formatting is applied:

* JSON data is indented, sorted by keys, and unicode escapes are converted
to the characters they represent.

One of these options can be used to control output processing:

==================== ========================================================
``--pretty=all`` Apply both colors and formatting.
Default for terminal output.
``--pretty=colors`` Apply colors.
``--pretty=format`` Apply formatting.
``--pretty=none`` Disables output processing.
Default for redirected output.
==================== ========================================================


=================
Redirected Output
=================

JSONRPCake uses **different defaults** for redirected output than for
`terminal output`_:

* Formatting and colors aren't applied (unless ``--pretty`` is specified).
* Only the response message is printed.

Force colorizing and formatting, and show both the request and the response in
``less`` pager:

.. code-block:: bash

$ jsonrpc --pretty=all --verbose example.org:7080 info | less -R


The ``-R`` flag tells ``less`` to interpret color escape sequences included
JSONRPCake`s output.


=======
Authors
=======

Forked by `Joe Hillenbrand`_

`Jakub Roztocil`_ created `HTTPie`_ and `these fine people`_
have contributed.

=======
Licence
=======

Please see `LICENSE`_.


------------


.. _JSON-RPC: http://www.jsonrpc.org/specification
.. _JSON: http://www.json.org/
.. _HTTPie: https://github.com/jkbr/httpie
.. _these fine people: https://github.com/jkbr/httpie/contributors
.. _jsonrpc-ns: https://github.com/flowroute/jsonrpc-ns
.. _Pygments: http://pygments.org/
.. _pip: http://www.pip-installer.org/en/latest/index.html
.. _Jakub Roztocil: http://subtleapps.com
.. _Joe Hillenbrand: http://joehillen.org
.. _LICENSE: https://github.com/joehillen/jsonrpcake/blob/master/LICENSE

Release files for jsonrpcake 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jsonrpcake 1.1.0
File Size Uploaded
jsonrpcake-1.1.0.tar.gz 14.8 kB Details

Release files / jsonrpcake-1.1.0.tar.gz

Download URL jsonrpcake-1.1.0.tar.gz
Size 14.8 kB
Tags Source
SHA-256 checksum
How to use checksums
3f400c8ef1041b14fab1ec74ff4c9ac6562abcd2fb9be3b85b809d6bd8e46d94
BLAKE2b-256 checksum
How to use checksums
ab7f0d335f988756ac65762324807d543f18215035b845484e09fadd6cab5edb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.1.0 This release

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page