iri-client
Rust client + Python bindings for the NERSC IRI API OpenAPI 3.1
spec in openapi/openapi.json.
Python Bindings
Install from PyPI:
pip install iri-client
or build the extension module locally:
# Use maturin >= 1.9.4
maturin develop --features python
Python operation examples
import json
from iri_client import Client
client = Client(base_url="https://api.iri.nersc.gov")
# List operation ids
operations = Client.operations()
print(f"Loaded {len(operations)} operations from generated catalog")
print("First 10 operations:")
for operation in operations[:10]:
print(f" - {operation.operation_id} ({operation.method} {operation.path_template})")
# Public operation
print(client.call_operation("getFacility"))
# Path params
print(
client.call_operation(
"getSite",
path_params_json=json.dumps({"site_id": "dd7f822a-3ad2-54ae-bddb-796ee07bd206"}),
)
)
# Auth-required operation
# access_token = "<token from GlobusAuth>"
# auth_client = Client(base_url="https://api.iri.nersc.gov", access_token=access_token)
# print(auth_client.call_operation("getProjects"))
Full runnable Python operation script:
examples/python_module_example.pyexamples/python_async_module_example.py(async withAsyncClient)examples/submit_job.py(submit a job to IRI api and monitor status)
Authentication Model
This API uses header Authorization with the raw access token value:
Authorization: <access_token>
This client follows that behavior when you call with_authorization_token(...)
or pass access_token=... to the client's constructor in Python.
Runnable Cargo Examples
These are checked-in Rust examples you can run directly:
# Lists generated operation ids/methods/paths (no network calls)
cargo run --example blocking_list_operations
# Calls getResources with query parameters
cargo run --example blocking_get_resources
# Same example with custom base URL and limit
IRI_BASE_URL=https://api.iri.nersc.gov IRI_RESOURCE_LIMIT=10 \
cargo run --example blocking_get_resources
# Calls auth-required getProjects
IRI_ACCESS_TOKEN=<access-token> cargo run --example blocking_get_projects
# Async IriClient examples
cargo run --example async_get_resources
IRI_ACCESS_TOKEN=<access-token> cargo run --example async_get_projects
# Async ApiClient example (raw path + query)
cargo run --example async_api_client_sites
CLI Tool
A small CLI binary iri-cli is included. One can install it through cargo. It is
currently not distributed in the python package.
cargo install iri-client --features cli
Here are a few examples on how to use the cli client.
# Show generated operations
iri-cli operations
# Filter operation ids
iri-cli operations --filter Job
# Call by OpenAPI operation id with query params
iri-cli call getResources --query group=perlmutter --query resource_type=compute
# Call operation with path params
iri-cli call getSite --path-param site_id=<site-id>
# Raw method/path request
iri-cli request GET /api/v1/facility/sites --query limit=5
# Authenticated operation
IRI_ACCESS_TOKEN=<access-token> \
iri-cli call getProjects
Rust Examples (OpenAPI Operation Client)
Use IriClient when calling by OpenAPI operationId.
Public endpoint: getFacility
use iri_client::IriClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = IriClient::from_openapi_default_server()?;
let facility = client
.call_operation("getFacility", &[], &[], None)
.await?;
println!("{facility}");
Ok(())
}
Query parameters: getResources
use iri_client::IriClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = IriClient::new("https://api.iri.nersc.gov")?;
let resources = client
.call_operation(
"getResources",
&[],
&[("limit", "10"), ("offset", "0"), ("resource_type", "compute")],
None,
)
.await?;
println!("{resources}");
Ok(())
}
Path parameter: getSite
use iri_client::IriClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = IriClient::new("https://api.iri.nersc.gov")?;
let site = client
.call_operation("getSite", &[("site_id", "dd7f822a-3ad2-54ae-bddb-796ee07bd206")], &[], None)
.await?;
println!("{site}");
Ok(())
}
Auth-required endpoint: getProjects
use iri_client::IriClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let access_token = std::env::var("IRI_ACCESS_TOKEN")?;
let client = IriClient::new("https://api.iri.nersc.gov")?
.with_authorization_token(access_token);
let projects = client
.call_operation("getProjects", &[], &[], None)
.await?;
println!("{projects}");
Ok(())
}
Rust Examples (Generic REST Client)
Use ApiClient when you want direct method/path control.
use iri_client::ApiClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = ApiClient::new("https://api.iri.nersc.gov")?;
let sites = client
.get_json_with_query("/api/v1/facility/sites", &[("limit", "5"), ("offset", "0")])
.await?;
println!("{sites}");
Ok(())
}
Metadata
Release files for iri-client 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| iri_client-0.1.4.tar.gz | 46.3 kB | Details |
Built distributions (wheels)
Total release size: 39.9 MB
Release files / iri_client-0.1.4.tar.gz
| Download URL | iri_client-0.1.4.tar.gz |
|---|---|
| Size | 46.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8196c49feb8e1689841f663501c7dacc45a6eea7c03dbf3e53a50235ab033a3c
|
|
BLAKE2b-256 checksum How to use checksums |
e568483b6ff804990320a04115c74b7e15040a20731422d05e79614dadb05d90
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-win_arm64.whl
| Download URL | iri_client-0.1.4-cp39-abi3-win_arm64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.9 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
24e569579f374331cedee7b119e32ddc3ad24ffa39629c19d62195df63d5ccb2
|
|
BLAKE2b-256 checksum How to use checksums |
0bf7eff3995492944df00f4854d9eb4ec16979227aa0c20eb32e156c40af4b06
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-win_amd64.whl
| Download URL | iri_client-0.1.4-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 2.2 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
3b0909f9f750f9e6adeae27a8189179097d4efa49e45c5d10331a1f26797b4a5
|
|
BLAKE2b-256 checksum How to use checksums |
c3f05078bdcb788c4921ff1ad9acb2fe279841814774a3811f788aecf4b2863f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-win32.whl
| Download URL | iri_client-0.1.4-cp39-abi3-win32.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.9 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
80cf91fb5e0ad1c0270a2eb69b90b43bd4ad6abb9c220f88f430c91eefb1c472
|
|
BLAKE2b-256 checksum How to use checksums |
be010e8a0eb6a78100fa216485012441cb431c805b5e8ef7632bc5e2fe8784db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-musllinux_1_2_x86_64.whl
| Download URL | iri_client-0.1.4-cp39-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 3.2 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
c229bbd7b4c03c9334b89d897206e7df026e68f0c964033a0694d1f77590ea8c
|
|
BLAKE2b-256 checksum How to use checksums |
77dc14237aab9f2861652a7c599b1ed42fe91a4fb9305239383026f5356682e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-musllinux_1_2_i686.whl
| Download URL | iri_client-0.1.4-cp39-abi3-musllinux_1_2_i686.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
071d8d1b6271523f8fc05721da38eeb76297d88a05816851b33edec6868805fc
|
|
BLAKE2b-256 checksum How to use checksums |
380f52b3843453386862fce5414ff2e701a3d0084b05119cc9eacbe1a2910362
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-musllinux_1_2_armv7l.whl
| Download URL | iri_client-0.1.4-cp39-abi3-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 2.6 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
8b38f288b988a48e545c6cd2c2411949d0e03a37915f255024530e149e6f2a2b
|
|
BLAKE2b-256 checksum How to use checksums |
ee8100037e193949f9021013bbea1e8aea000ba6d9ee25df04a230b9960b9ff8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-musllinux_1_2_aarch64.whl
| Download URL | iri_client-0.1.4-cp39-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
fd8de5096f91ad6b3dbdcc0213772ff1bee410b77adab14cfcd028c307ddd50b
|
|
BLAKE2b-256 checksum How to use checksums |
d765db13f6179e8a2f6c805f33a826e7ddea58c9ab6b199249a287307e316962
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-manylinux_2_28_x86_64.whl
| Download URL | iri_client-0.1.4-cp39-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
3eb09729becb3e8c48d29e0449fd45a4c1948be0f080e1fef9c6aa14fe387664
|
|
BLAKE2b-256 checksum How to use checksums |
92f3d9d3083fe918d6f124e8c418b3a9f14d86ee6a348ac54f7689d23c1d5f99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-manylinux_2_28_s390x.whl
| Download URL | iri_client-0.1.4-cp39-abi3-manylinux_2_28_s390x.whl |
|---|---|
| Size | 2.5 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ IBM System/390x abi3 |
|
SHA-256 checksum How to use checksums |
fabc41bca8f1aeb072e11e583b5f73f1baaecab61eac76bac292423459c4e7ee
|
|
BLAKE2b-256 checksum How to use checksums |
00b2825a300edea509058696f2f2517db09022c8757834405c808b54f28103e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-manylinux_2_28_ppc64le.whl
| Download URL | iri_client-0.1.4-cp39-abi3-manylinux_2_28_ppc64le.whl |
|---|---|
| Size | 3.1 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ PowerPC 64-le abi3 |
|
SHA-256 checksum How to use checksums |
50b1da689cb0ae5a357cd8cb1cb89c00460c73675c445c7b1deffde6a998a4bd
|
|
BLAKE2b-256 checksum How to use checksums |
4af954cf02902dd3d315261c2f77145cb9040ec3f2b3c019202ccec7c09f642b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-manylinux_2_28_i686.whl
| Download URL | iri_client-0.1.4-cp39-abi3-manylinux_2_28_i686.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
c4d914e794557290af6a42f393e1df94f5bfc5f9879dd0d97cd3f433c490c9da
|
|
BLAKE2b-256 checksum How to use checksums |
319b0e049f59f7051c35c25bf9fa3d9d87c588bbfaa43bf10e48b8f652167186
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-manylinux_2_28_armv7l.whl
| Download URL | iri_client-0.1.4-cp39-abi3-manylinux_2_28_armv7l.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
19eb7fee7b590b36b52694c4e30d8476afc1af8e83f5be3b0d8a45bf6e2ee063
|
|
BLAKE2b-256 checksum How to use checksums |
ab61cc741bed43e4ace882457b104faa75d1aa2efe4ae38cbab4176b0250a74a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-manylinux_2_28_aarch64.whl
| Download URL | iri_client-0.1.4-cp39-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
38a3c4a2142b72694f6741e1168067c9f34d4f9835a695c0a9c0d8cc062add72
|
|
BLAKE2b-256 checksum How to use checksums |
550cf8436514ac3685d8fc7bad8477e14e03c1a60bbe0704dde969b5cff5cf50
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | iri_client-0.1.4-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.7 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
eaf6e0535ea852d93f54997149c75e710d3891cb79e49dcb2a7de80afafbb53e
|
|
BLAKE2b-256 checksum How to use checksums |
2a2655989d3f378f6d09aa9612046a443f496e245f402d2b54adb40572389c70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / iri_client-0.1.4-cp39-abi3-macosx_10_12_x86_64.whl
| Download URL | iri_client-0.1.4-cp39-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.9 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
6a82b9dbc1e6ad3bd9dea4d239e6703ab27d264eb97ca91328a998c7df546404
|
|
BLAKE2b-256 checksum How to use checksums |
534178c5205d04623f7b376f1af04951909fde7eb7a1e94a9a6d2fe57618b580
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|