Skip to main content

DTC-IS Query Client

This package provides a Python client for the DTC Ice Sheets Query API.

DTC Ice Sheets is a Digital Twin Component designed to provide an integrated, interactive, and holistic representation of the Greenland and Antarctic ice sheet systems and their two-way interaction with the Earth system: ocean, atmosphere and solid Earth. By combining Earth Observation data, numerical models, and data science and machine learning methods into a modular, executable framework, it enables users to analyse past and present conditions, simulate future scenarios, and explore the sensitivity, response, and impact of ice-sheets under different conditions. Developed under ESA's Digital Twin Earth programme, the platform delivers these capabilities as trusted, API-first services.

Queries require authentication via an API token, which can be obtained at https://query.dtc-ice-sheets.org/auth/get-token

Refer to the API documentation for a complete list of available endpoints and their parameters.

For more information about the project, please visit https://dtc-ice-sheets.org/.

Installation

Install this package from PyPI:

pip install dtc-query-client

Getting Started

Start by importing the dtc_query_client and creating a Configuration object, passing in your authentication token:

import dtc_query_client

configuration = dtc_query_client.Configuration(
    host="https://query.dtc-ice-sheets.org",
    access_token="[your private token here]"
)

API requests are made inside an async with block. For example, this snippet retrieves a list of available datasets:

async with dtc_query_client.ApiClient(configuration) as client:
    datasets = await dtc_query_client.GenericApi(client).dataset_overviews()

print(datasets)

Some endpoints start a long-running job and return a job ID. This job ID can be used to track how the job is progressing, and to obtain results once the job completes. It is recommended to use the wait_for_job() or iterate_job() helper functions to handle these endpoints gracefully.

The example snippet below uses the simpler wait_for_job(), which waits for the job to complete and returns the completed job state:

async with dtc_query_client.ApiClient(configuration) as client:
    # Start a job and get the job ID
    response = await dtc_query_client.StateAndFateApi(client).run_summary_zarr_to_json(
        ice_shelf_id="thwaites",
    )
    job_id = response.job_id
    print(f"Started job with ID {job_id}")
    
    # Wait for job to complete
    try:
        job_state = await dtc_query_client.wait_for_job(client, job_id)
    except RuntimeError as e:
        # Failed jobs will raise a RuntimeError
        print("Job has failed!")
        raise e
    
    # Job has completed! Print results
    print(f"Job completed successfully with status {job_state.status}.")
    output_url = job_state.outputs["timeseries-zarr-to-json-module"]["output_json"]
    print(f"Results URL: {output_url}")

Alternatively, the example snippet below uses the more advanced iterate_job(), which does the same thing but additionally provides live updates on job progress while it is running:

async with dtc_query_client.ApiClient(configuration) as client:
    # Start a job and get the job ID
    response = await dtc_query_client.StateAndFateApi(client).run_summary_zarr_to_json(
        ice_shelf_id="thwaites",
    )
    job_id = response.job_id
    print(f"Started job with ID {job_id}")
    
    # Wait for job to complete, printing information on the job state as it progresses
    try:
        async for job_state in dtc_query_client.iterate_job(client, job_id):
            print(
                f"Job has status {job_state.status}.\n"
                f"It has completed {job_state.progress_done} steps out of {job_state.progress_total}."
            )
    except RuntimeError as e:
        # Failed jobs will raise a RuntimeError
        print("Job has failed!")
        raise e
    
    # Job has completed! Print results
    print(f"Job completed successfully with status {job_state.status}.")
    output_url = job_state.outputs["timeseries-zarr-to-json-module"]["output_json"]
    print(f"Results URL: {output_url}")

Metadata

Release files for dtc-query-client 1.0.25

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

Source distribution (sdist)

Source distribution for dtc-query-client 1.0.25
File Size Uploaded
dtc_query_client-1.0.25.tar.gz 56.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dtc-query-client 1.0.25
File Interpreter ABI Platform
dtc_query_client-1.0.25-py3-none-any.whl Python 3 none any Details

Total release size: 156.1 kB

Release files / dtc_query_client-1.0.25.tar.gz

Download URL dtc_query_client-1.0.25.tar.gz
Size 56.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a9a9f40b1009f060d7440983276bcc73325e067149f984eb1810d955c99c1bfd
BLAKE2b-256 checksum
How to use checksums
da9f0a2261d443ffbad42b9af42e39d9a45c36314904815e7b05c31d1375ff94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 9, 2026.

Transparency log

Release files / dtc_query_client-1.0.25-py3-none-any.whl

Download URL dtc_query_client-1.0.25-py3-none-any.whl
Size 99.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c85965650661d0d101b219333c359634f394c966f6c83279c28235dc39e2a167
BLAKE2b-256 checksum
How to use checksums
501231f346d75d399faad7fcc95fd676e2a334d77f50ec5e15ee538d72aebf2f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 9, 2026.

Transparency log

Release history Release notifications | RSS feed

1.0.33

2 release files

1.0.32

2 release files

1.0.31

2 release files

This release

1.0.25 This release

2 release files

1.0.18

2 release files

1.0.15

2 release files

1.0.13

2 release files

1.0.12

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.4

2 release files

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