For backend and frontend development, it can be useful to send manual queries to the Gramps Web API. Using HTTPie and jq, this can be done conveniently including JWT authentication.

Installation

HTTPie is installed with pip:

python3 -m pip install httpie

You will need HTTPie version 3.0.0 or newer.

jq can be installed in Ubuntu via

sudo apt install jq

Fetching an access token

To fetch an access token, query the token endpoint. Assuming your development instance is running on localhost:5555, you can use the command

http POST http://localhost:5555/api/token/ username=owner password=owner

You will see the JSON tokens as output.

Using jq, you can also store the access token in an environment variable:

export ACCESS_TOKEN=$(http POST http://localhost:5555/api/token/ \
  username=owner password=owner | jq -r '.access_token')

You can now use this token in all API calls that require authentication, e.g.

http -A bearer -a $ACCESS_TOKEN GET http://localhost:5555/api/metadata/

Note that, by default, access tokens will expire after 15 minutes.