REST API Interface

Advanced users may want to query IceProd from automated scripts or other programs. This is possible through a REST API.

See IceProd REST API for available urls.

Authentication

To view datasets, call actions on datasets, or submit new datasets, authentication with a token is required.

An authentication token can be obtained using the python package wipac-rest-tools. For example:

python3 -m venv venv
. venv/bin/activate
pip install wipac-rest-tools
curl -o get_token.py https://raw.githubusercontent.com/WIPACrepo/rest-tools/master/examples/get_device_credentials_token.py
python get_device_credentials_token.py iceprod-public

The access token will be valid for 1 hour.

This can be added to requests as the Authorization header. As an example, here is a query to get the list of all datasets:

curl -XGET -H 'Authorization: bearer XXXXXXXX-your-token-here-XXXXX' https://iceprod2-api.icecube.wisc.edu/datasets

Danger

Anyone with the authentication token is basically you. Be careful with the token!

Scripting

When writing a python script, you can use our rest client to automatically manage tokens for you. Just install wipac-rest-tools as shown above. There are also sync and async code options:

Sync:

from rest_tools.client import SavedDeviceGrantAuth
api = SavedDeviceGrantAuth(
    address='https://api.iceprod.wisc.edu',
    token_url='https://keycloak.icecube.wisc.edu/auth/realms/IceCube',
    filename='.iceprod-auth',
    client_id'iceprod-public'
)
# get a list of datasets
result = api.request_seq('GET', '/datasets', {})
for dataset, metadata in result.items():
    # do something with the dataset

Async:

from rest_tools.client import SavedDeviceGrantAuth
api = SavedDeviceGrantAuth(
    address='https://api.iceprod.wisc.edu',
    token_url='https://keycloak.icecube.wisc.edu/auth/realms/IceCube',
    filename='.iceprod-auth',
    client_id'iceprod-public'
)
# get a list of datasets
result = await api.request('GET', '/datasets', {})
for dataset, metadata in result.items():
    # do something with the dataset