Import client libraries

import rrap_mds_is_data_api
import rrap_mds_is_prov_api
import rrap_mds_is_registry_api
import rrap_mds_is_landing_portal_api
from mdsisclienttools.auth.TokenManager import DeviceFlowManager

Setup authorisation

get_token = DeviceFlowManager(
    stage="TEST",
    keycloak_endpoint="https://auth.dev.rrap-is.com/auth/realms/rrap"
).get_token
Attempting to generate authorisation tokens.

Looking for existing tokens in local storage.

Validating found tokens

Found tokens valid, using.

Demonstrate registry API client

from rrap_mds_is_registry_api.configuration import Configuration
import rrap_mds_is_registry_api.apis as registry_apis
import rrap_mds_is_registry_api.models as registry_models
# We want token to be ready at the time that we call the API so 
# write a function which generates the config on demand
def get_config() -> Configuration:
    config = Configuration(host="https://registry-api.testing.rrap-is.com")
    config.access_token = get_token()
    return config
def get_client() -> rrap_mds_is_registry_api.ApiClient:
    return rrap_mds_is_registry_api.ApiClient(
        configuration=get_config()
    )
person_api = registry_apis.PersonApi(get_client())
all_people = person_api.list_agent_person(_check_return_type=False)
items = all_people.items
example_people: registry_models.ItemPerson = list(filter(
    lambda person: person['first_name'] == "John" and person['last_name'] == 'Doe', items))
assert len(example_people) > 0
example_person = example_people[0]
print(example_person)
{'display_name': 'Reef Modeller for eReef', 'first_name': 'John', 'last_name': 'Doe', 'email': 'John.Doe@uni-of.au', 'orcid': 'https://orcid.org/0000-0000-000-0000', 'id': '10378.1/1687652', 'created_timestamp': 1658822301, 'updated_timestamp': 1658822301, 'item_category': 'AGENT', 'item_subtype': 'PERSON'}
person_api = registry_apis.PersonApi(get_client())
result_person = person_api.fetch_agent_person(id=example_person['id'],_check_return_type=False)
print(result_person)
{'item': {'created_timestamp': 1658822301,
          'display_name': 'Reef Modeller for eReef',
          'email': 'John.Doe@uni-of.au',
          'first_name': 'John',
          'id': '10378.1/1687652',
          'item_category': 'AGENT',
          'item_subtype': 'PERSON',
          'last_name': 'Doe',
          'orcid': 'https://orcid.org/0000-0000-000-0000',
          'updated_timestamp': 1658822301},
 'item_is_seed': False,
 'status': {'details': 'Successfully retrieved complete item and parsed into '
                       'current data model.',
            'success': True}}