WORKING WITH EGI DATAHUB

GET EGI access token

import requests, json

CLIENT_ID = "f33e824a-078d-497b-b700-25b0df7fc5b7"
CLIENT_SECRET= "B80vPK0LVbYuvwRj0Aexs8y0rKgk5XHwYRRq3BCr33ejj33385bzDVcPmSTUkqA2QjMiwWKJDTxvOou7yVV8EA"
REFRESH_TOKEN= "eyJhbGciOiJub25lIn0.eyJleHAiOjE2NzY1ODM2MTEsImp0aSI6IjFlZGFiOWYwLWJjMDktNDM5Mi05YWRkLTBiN2EwNDk3YmIyMSJ9."
# Retrieving an OIDC token from Check-in

data = {
  'client_id': CLIENT_ID,
  'client_secret': CLIENT_SECRET,
  'refresh_token': REFRESH_TOKEN,
  'scope': 'openid email profile',
  'grant_type': 'refresh_token'
}

response = requests.post('https://aai.egi.eu/oidc/token', data=data, auth=(CLIENT_ID, CLIENT_SECRET))

print(json.dumps(response.json(), indent=2))
rpalmaEGItoken=response.json()['access_token']
{
  "access_token": "eyJraWQiOiJvaWRjIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI0NDJmOGI0ZGRiYzY0NjM0NGIwMzNmODFkNTM5NzUwMjFjZWZjYWUxNjEwMmNlMzM3ZGFlNmNiN2I0MGNlODg5QGVnaS5ldSIsImF6cCI6ImYzM2U4MjRhLTA3OGQtNDk3Yi1iNzAwLTI1YjBkZjdmYzViNyIsImlzcyI6Imh0dHBzOlwvXC9hYWkuZWdpLmV1XC9vaWRjXC8iLCJleHAiOjE2NDI1MTYwNzcsImlhdCI6MTY0MjUxMjQ3NywianRpIjoiOGNhNzAyNDgtMmM3MS00MThjLWJhOTUtYTg3MzQ3ODhjZGU4In0.B3p-zp8L-hxcVDoGco-kz8iEuwJtRYNW-aaI26YZYg382kaSU261R_Hy_GZ7x9KuMzx3fqxHMWu-z9sd-_mlE1WNTUZlq0i8zxXmxSeN009w4Usi6mXLAdsoNez8texTiQmeQrtk4rTfw9xi7tkj1QM7rIxSQiD_fYZKCCpEpe3TAm19zIuxZTqou9cP5u5vZ1piANwe6vzM8z6noMcutrUNtClGMvO6i-FsC3UpT1ngkkkhn_dagw1hCS1nDGQFuYju05cLRpHZVL9KQotGFZgySdzY1ShMJ-Iy8R24RFsd83bScxQFu22Vl1nHwiC_Bt_Dn9vpQ5P3_Hy7PpzaWg",
  "token_type": "Bearer",
  "refresh_token": "eyJhbGciOiJub25lIn0.eyJleHAiOjE2NzY1ODM2MTEsImp0aSI6IjFlZGFiOWYwLWJjMDktNDM5Mi05YWRkLTBiN2EwNDk3YmIyMSJ9.",
  "expires_in": 3599,
  "scope": "openid profile email",
  "id_token": "eyJraWQiOiJvaWRjIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI0NDJmOGI0ZGRiYzY0NjM0NGIwMzNmODFkNTM5NzUwMjFjZWZjYWUxNjEwMmNlMzM3ZGFlNmNiN2I0MGNlODg5QGVnaS5ldSIsImF1ZCI6ImYzM2U4MjRhLTA3OGQtNDk3Yi1iNzAwLTI1YjBkZjdmYzViNyIsImtpZCI6Im9pZGMiLCJpc3MiOiJodHRwczpcL1wvYWFpLmVnaS5ldVwvb2lkY1wvIiwiZXhwIjoxNjQyNTEzMDc3LCJpYXQiOjE2NDI1MTI0NzcsIm5vbmNlIjoiMGE1NDk1NzczMzkzMmVjYWZiZWIwOTRiOTA0MzM2ZjAiLCJqdGkiOiJmNWIyZjNhYS1lNjg5LTRmZTItOTRmOS04NzJiM2FiZDBmNTcifQ.YGtI_4pXMF3POH5TC5Hb4kflg5KxmRcNDldy8GrkT8FYYZEALEJ8_fBbK8DyxJC4TDhdhK7GW9xPCbTmH7tMbnm17IMVqi1o7rlMnLF4yikAOkwzc8SyfXF-ns4jYxo3lOV-Ja1nnpsWY9vKU_L-tJSVV7k8_N-62ekITFCcrb8CE9mIrfa_s97WnXbx44TyGoxhuKoJZnNEvvLEghq9_ZU3IZWW4rHc0Ze1fkbBINYDghvYZUtbvzC9myCRL7NsAgQYvSmM8hrSIWuX34yNPMK8lIF8n7c-_MYo9-eXXqzN78dLIz1XRN7M6n514E-M3BjtObpIc9ly1arhkkF5DA"
}

GET DATAHUB_TOKEN

import requests, json

headers = {
    'X-Auth-Token': f"egi:"+rpalmaEGItoken,
    'Content-type': 'application/json',
}

data = json.dumps({ 
    'name': 'REST and CDMI access token4', 
    'type': { 
        'accessToken': {} 
    }, 
    'caveats': [ { 
        'type': 'interface', 
        'interface': 'rest' 
    }] 
})
#data = '{ "name": "REST and CDMI access token1", "type": { "accessToken": {} }, "caveats": [ {  "type": "interface",  "interface": "rest" } ] }'


response = requests.post('https://datahub.egi.eu/api/v3/onezone/user/tokens/named', headers=headers, data=data)
print(json.dumps(response.json(), indent=2))
DATAHUB_TOKEN=response.json()['token']
{
  "tokenId": "b5872fbac406cd94c01447374e405e99ch65fd",
  "token": "MDAxY2xvY2F00aW9uIGRhdGFodWIuZWdpLmV1CjAwNmJpZGVudGlmaWVyIDIvbm1kL3Vzci1mMDZmOWZmNDZjOWFjNGFhNjAyNDIwMmVmYmE5Mzc5MWNoOWFjNC9hY3QvYjU4NzJmYmFjNDA2Y2Q5NGMwMTQ00NzM3NGU00MDVlOTljaDY1ZmQKMDAxOWNpZCBpbnRlcmZhY2UgPSByZXN00CjAwMmZzaWduYXR1cmUgPNV8kTXszR5Vt2dF4Saa9cPcYJ7QswPeb9hm02u1MirgK"
}

LIST MY DATAHUB TOKENS

import requests, json

headers = {
    'X-Auth-Token': f"egi:"+rpalmaEGItoken,
    'Content-type': 'application/json',
}


response = requests.get('https://datahub.egi.eu/api/v3/onezone/user/tokens/named', headers=headers)
print(json.dumps(response.json(), indent=2))
DATAHUB_TOKEN_ID=response.json()['tokens'][0]
{
  "tokens": [
    "7e7faae7b70ecbf38bc270e2a9cb9944chd88d",
    "0dff794b0579350af80e3d793d954847ch7b18",
    "1fc04058c560432487feb526844c2bd7ch5732",
    "b9b9725ad42e82ebf6f03aed731567e3ch387a",
    "b5872fbac406cd94c01447374e405e99ch65fd",
    "88530800c72623cfac9f3934f4134252chb30c",
    "d918f0ab8c4ce8fcc955af3769f1deffch50ed"
  ]
}

GET TOKEN DETAILS

import requests, json

headers = {
    'X-Auth-Token': f"egi:"+rpalmaEGItoken,
    'Content-type': 'application/json',
}


response = requests.get('https://datahub.egi.eu/api/v3/onezone/tokens/named/'+DATAHUB_TOKEN_ID, headers=headers)
print(json.dumps(response.json(), indent=2))
{
  "type": {
    "accessToken": {}
  },
  "token": "MDAxY2xvY2F00aW9uIGRhdGFodWIuZWdpLmV1CjAwNmJpZGVudGlmaWVyIDIvbm1kL3Vzci1mMDZmOWZmNDZjOWFjNGFhNjAyNDIwMmVmYmE5Mzc5MWNoOWFjNC9hY3QvN2U3ZmFhZTdiNzBlY2JmMzhiYzI3MGUyYTljYjk5NDRjaGQ4OGQKMDAxOWNpZCBpbnRlcmZhY2UgPSByZXN00CjAwMmZzaWduYXR1cmUg38z2je500yp4Qozca4zWT2Ok4az00ACBUqxhv2uuU76LIK",
  "subject": {
    "type": "user",
    "id": "f06f9ff46c9ac4aa6024202efba93791ch9ac4"
  },
  "revoked": false,
  "name": "REST and CDMI access token",
  "metadata": {
    "custom": {},
    "creationTime": 1642457185
  },
  "id": "7e7faae7b70ecbf38bc270e2a9cb9944chd88d",
  "caveats": [
    {
      "type": "interface",
      "interface": "rest"
    }
  ]
}

DISPLAY ALL SPACES

import requests, json

headers = {
    'X-Auth-Token': DATAHUB_TOKEN
}

response = requests.get('https://datahub.egi.eu/api/v3/onezone/user/effective_spaces/', headers=headers)

print(json.dumps(response.json(), indent=2))
{
  "spaces": [
    "49c131369a88b0b9289b1b578cab7d6ech41aa",
    "51a1b62487f48b27c233746a148b821cch1e86",
    "725f4ab36cb26d0fbfc0c124c775efeechee49"
  ]
}

DISPLAY RELIANCE SPACE DETAILS

import requests, json

headers = {
    'X-Auth-Token': DATAHUB_TOKEN
}

response = requests.get('https://datahub.egi.eu/api/v3/onezone/spaces/725f4ab36cb26d0fbfc0c124c775efeechee49/', headers=headers) 
print(json.dumps(response.json(), indent=2))
{
  "spaceId": "725f4ab36cb26d0fbfc0c124c775efeechee49",
  "providers": {
    "3886d8788dbbc4023ec5a9db13c813dech0454": 107374182400
  },
  "name": "Reliance",
  "creator": {
    "type": "user",
    "id": "aa81d77c217c52f3e4c0f79da0fedca0"
  },
  "creationTime": 1638521202
}

DISPLAY RELIANCE SPACE CONTENTS

import requests, json

headers = {
    'X-Auth-Token': DATAHUB_TOKEN
}

response = requests.get('https://cesnet-oneprovider-01.datahub.egi.eu/api/v3/oneprovider/files/Reliance/', headers=headers) 
#response = requests.get('https://cesnet-oneprovider-01.datahub.egi.eu/api/v3/oneprovider/files/Reliance/Climate/output', headers=headers) 
print(json.dumps(response.json(), indent=2))
[
  {
    "path": "/Reliance/.ipynb_checkpoints",
    "id": "0000000000520DDF67756964233331663636353734623035346465343163643335613139633038393163643435636835616433233732356634616233366362323664306662666330633132346337373565666565636865653439"
  },
  {
    "path": "/Reliance/Climate",
    "id": "00000000005271F567756964236631353639303132366433336538306631333766333435323162323366316435636832383661233732356634616233366362323664306662666330633132346337373565666565636865653439"
  },
  {
    "path": "/Reliance/Marine Monitoring ",
    "id": "000000000052610967756964233239353265643333313733666433323362373235383232656338356332383138636864343162233732356634616233366362323664306662666330633132346337373565666565636865653439"
  },
  {
    "path": "/Reliance/ROHub-sample-notebooks",
    "id": "000000000052EB6F67756964233531333938313636373738656665643830303839623738323261333765326664636838363065233732356634616233366362323664306662666330633132346337373565666565636865653439"
  },
  {
    "path": "/Reliance/Snapshot-PTF-ML",
    "id": "000000000052B3BF67756964236430623361653332323265336163666135646135326266373734383432336137636836643138233732356634616233366362323664306662666330633132346337373565666565636865653439"
  },
  {
    "path": "/Reliance/Soundscape",
    "id": "000000000052647467756964233565616631613035636165383730646632636236646264613536653637376565636836326431233732356634616233366362323664306662666330633132346337373565666565636865653439"
  }
]