Skip to main content

HDX CLI Toolkit

Overview

This toolkit provides a commandline interface to the Humanitarian Data Exchange (HDX) to allow for bulk modification operations and other administrative activities such as getting id values for users and organization. It is useful for those managing HDX and developers building data pipelines for HDX. The currently supported commands are as follows:

  configuration              Print configuration information to terminal
  data_quality_report        Compile a data quality report
  download                   Download dataset resources from HDX
  get_organization_metadata  Get an organization id and other metadata
  get_user_metadata          Get user id and other metadata
  list                       List datasets in HDX
  print                      Print datasets in HDX to the terminal
  remove_extras_key          Remove extras key from a dataset
  scan                       Scan all of HDX and perform an action
  showcase                   Upload showcase to HDX
  update                     Update datasets in HDX
  update_resource            Update a resource in HDX

In the most part it is a thin wrapper to the hdx-python-api library written by Mike Rans.

The library requires some configuration, described below, to authenticate to the HDX instance.

Installation

hdx-cli-toolkit is a Python application published to the PyPI package repository, therefore it can be installed easily with:

pip install hdx_cli_toolkit

Users may prefer to make a global, isolated installation using pipx which will make the hdx-toolkit commands available across their projects:

pipx install hdx_cli_toolkit

hdx-toolkit can then be updated with:

pipx install --force hdx_cli_toolkit

hdx-cli-toolkit uses the hdx-python-api library, this requires the following to be added to a file called .hdx_configuration.yaml in the user's home directory.

hdx_key_stage: "[an HDX API token from the staging HDX site]"
hdx_key: "[an HDX API token from the prod HDX site]"
default_organization: "[your organization]"

The default_organization is required for the configuration command and can be supplied using the --organization= commandline parament. If not defined it will default to hdx.

A user agent (hdx_cli_toolkit_*) is specified in the ~/.useragents.yaml file with the * replaced with the users initials.

hdx-cli-toolkit:
    preprefix: [YOUR_ORGANIZATION]
    user_agent: hdx_cli_toolkit_ih

Usage

The hdx-toolkit is built using the Python click library. Details of the currently implemented commands can be revealed by running hdx-toolkit --help, and details of the arguments for a command can be found using hdx-toolkit [COMMAND] --help

A detailed guide can be found in the USERGUIDE.md file

Changelog

Entries commence with 2026.2.1

2026.2.1 - this release removes the quickcharts command since HXL is to be removed from HDX and quickcharts depends on this. There are also a couple of removals of hxl_update=False from calls which should make no difference to the end user.

Maintenance

For the data_quality_report data on membership of Data Grid and HDX Signals is hard-coded. To update the coding for datasets in Data Grids:

  1. clone this repo: https://github.com/OCHA-DAP/data-grid-recipes
  2. Run the script scripts/data_grid_recipes_compiler.py script in the root of the data-grid-recipes repo
  3. copy the output datagrid-datasets.csv to src/hdx_cli_toolkit/data

To update the coding for datasets in HDX Signals, check the code at this path in the hdx-ckan repo: hdx-ckan/ckanext-hdx_theme/ckanext/hdx_theme/helpers/ui_constants/landing_pages/signals.py

for the DATA_COVERAGE_CONSTANTS note that the links in this constant are sometimes to datasets and sometimes to organizations. Copy the dataset and organization names to the SIGNALS_DATASETS and SIGNALS_ORGANIZATIONS constants in src\hdx_cli_toolkit\data_quality_utilities.py in this repo.

These are ugly methods for identifying Data Grid and HDX Signals datasets but with the current HDX implementation they are the most straightforward.

Contributions

For developers the code should be cloned installed from the GitHub repo, and a virtual enviroment created:

python -m venv venv
source venv/Scripts/activate

And then an editable installation created:

pip install -e .

The library is then configured, as described above.

This project uses a GitHub Action to run tests and linting. It requires the following environment variables/secrets to be set in the test environment:

HDX_KEY - secret. Value: fake secret
HDX_KEY_STAGE - secret. Value: a live API token for the stage server
HDX_SITE - environment variable. Value: stage
USER_AGENT - environment variable. Value: hdx_cli_toolkit_gha
PREPREFIX - - environment variable. Value: [YOUR_organization]

Most tests use mocking in place of HDX, although the test_integration.py suite runs against the stage server.

New features should be developed against a GitHub issue on a separate branch with a name starting GH[issue number]_. PULL_REQUEST_TEMPLATE.md should be used in preparing pull requests. Versioning is updated manually in pyproject.toml and is described in the template, in brief it is CalVer YYYY.MM.Micro.

Publication

Publication to PyPI is done automatically when a release is created.

Metadata

Release files for hdx-cli-toolkit 2026.2.1

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

Source distribution (sdist)

Source distribution for hdx-cli-toolkit 2026.2.1
File Size Uploaded Provenance Actions
hdx_cli_toolkit-2026.2.1.tar.gz 50.3 kB With provenance Details for hdx_cli_toolkit-2026.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for hdx-cli-toolkit 2026.2.1
File Interpreter ABI Platform Actions
hdx_cli_toolkit-2026.2.1-py3-none-any.whl Python 3 none any Details for hdx_cli_toolkit-2026.2.1-py3-none-any.whl

Total release size: 93.8 kB

Release files / hdx_cli_toolkit-2026.2.1.tar.gz

Download URL hdx_cli_toolkit-2026.2.1.tar.gz
Size 50.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e80ab46fd9ec955f0947a2429f31d7f52ade004750f6a51564b60e40daf04c07
BLAKE2b-256 checksum
How to use checksums
97adb67e773f5f233c48b03673377bc197e7697ca9fca4bfcb9d6b42c9f03ba6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 20, 2026.

Transparency log

Release files / hdx_cli_toolkit-2026.2.1-py3-none-any.whl

Download URL hdx_cli_toolkit-2026.2.1-py3-none-any.whl
Size 43.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8007f18a538344944d94d766746701c9168a40c35ffef79c248e8304f9fc0174
BLAKE2b-256 checksum
How to use checksums
e5c1448fc68956652f2c51fae3ffe28f933e796a52c3c20bdc26b51136335c64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 20, 2026.

Transparency log

Security for hdx-cli-toolkit 2026.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for hdx_cli_toolkit-2026.2.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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