Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Tälle sivulle kootaan tietoa ja ohjeita tutkimustietovarannon lukurajapinnan käytöstä.

Table of Contents
maxLevel3


HUOM! Tunnistautumispalvelimen URL-osoite muuttunut keskiviikkoaamuna 19.6.2024 klo 9:00

"researchfi-auth.rahtiapp.fi" => "researchfi-auth.2.rahtiapp.fi"


Tiedot ovat saatavissa JSON-muodossa rajapinnasta haettuna. Tiedot noudattavat tutkimustietovarannon tietomallia ja käytössä olevia koodistoja: https://tietomallit.beta.yti.cloud.dvv.fi/model/ttv

Rajapinnasta saatavat tiedot päivittyvät kerran vuorokaudessa.

Yleistä rajapinnan tunnistautumisesta

Rajapinta koostuu useasta REST-endpointista, joiden autentikointi ja autorisointi on toteutettu OAuth2-protokollalla.

Käyttäjä tunnistautuu rajapintaan OAuthin Client Credentials-menetelmällä. Käyttäjä hakee ensin omalla ClientId- ja Secret -yhdistelmällään rajapinnan käyttöön tarvitun Access Tokenin ja liittää sen mukaan varsinaiseen rajapintakutsuun.

Rajapinnan osoitteet

Rajapinnan Swagger-dokumentaatio löytyy osoitteestahttps://research.fi/api/rest/swagger/index.html

OAuth-palvelu

Rajapinnan käyttö Swagger-sivun kautta

Rajapinnan Swagger-dokumentaatio löytyy osoitteesta https://research.fi/api/rest/swagger/index.html

Swagger-sivulta voi tutustua rajapinnan tarjoamiin sisältöihin sekä suorittaa kutsuja rajapintaan.

Tunnistautuminen Swagger-sivulla

Sivun oikeassa yläkulmassa on vihreä Authorize-painike jota klikkaamalla voidaan syöttää ClientID ja ClientSecret rajapinnan testaamista varten. Ennen kirjautumista Swaggerin lukko-kuvakkeet ovat avoimina.

Saat ClientID ja ClientSecret -tunnukset sähköpostitse tutkimustietovarantotiimiltä rekisterinpitäjän myönnettyä käyttöluvan.


Kutsujen tekeminen rajapintaan Swagger-sivulla

Tietojen syöttämisen jälkeen Swagger-sivulla voi tehdä kutsuja rajapintaan. Onnistuneen kirjautumisen jälkeen Swaggerin lukko-kuvakkeet ovat suljettuina.

Access Tokenin käyttö sovelluksissa

Access Tokenin haku

Rajapinnan käyttöön vaadittava Access token haetaan käyttäen ClientID:tä ja ClientSecretiä OAuth-palvelun Token-osoitteesta https://researchfi-auth.2.rahtiapp.fi/realms/publicapi/protocol/openid-connect/token POST-kutsulla.

Saat ClientID ja ClientSecret -tunnukset sähköpostitse tutkimustietovarantotiimiltä rekisterinpitäjän myönnettyä käyttöluvan.

Kutsun sisältöön annettavat tiedot ovat:

TietoArvo
grant_typeclient_credentials
client_idKäyttäjäkohtainen tunniste
client_secretKäyttäjäkohtainen salaisuus

Esimerkkikutsussa kohdat <clientId< ja <secret> korvataan käyttäjän oikealla ClientId:llä ja ClientSecretillä.


Esimerkkikutsu Curl-ohjelmalla


1
2
3
4
5

curl --location --request POST 'https://researchfi-auth.2.rahtiapp.fi/realms/publicapi/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=<clientId>' \
--data-urlencode 'client_secret=<secret>'

Onnistunut kutsu palauttaa Access Tokenin osana vastausta.


Esimerkkivastaus

{
    "access_token": "access token tulee tähän",
    "expires_in": 7776000,
    "refresh_expires_in": 0,
    "token_type": "Bearer",
    "not-before-policy": 0,
    "scope": ""
}

Access Tokenin lisääminen rajapintakutsuun

Varsinaiseen rajapintakutsuun Access Token lisätään Authorization-headeriin muodossa "Bearer <authenticationToken>".


Esimerkkikutsu access tokenin käytöstä

curl -X 'GET' \
  'https://research.fi/api/rest/v1/funding-calls' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer <authenticationToken>'

Access Tokenin voimassaolo

Access Token on voimassa 90 vuorokautta sen luomisajankohdasta. Uuden Access Tokenin voi luoda kohdan "Access Tokenin haku" mukaisesti jo ennen umpeutumisajankohtaa.


Export-endpointtien käyttö

Endpointit

  • /v1/funding-calls-export
  • /v1/funding-decisions-export
  • /v1/publications-export
  • /v1/research-datasets-export

Toimintaperiaate

Export-endpointit mahdollistavat koko API-datan hakemisen, eikä niissä ole 10000 tuloksen rajoitetta, kuten tavallisissa endpointeissa. Datan haku tehdään toistamalla API-kutsuja samoilla hakuparametreilla, kunnes rajapinta ei enää palauta tuloksia.

Tärkeää:

Normaalien parametrien lisäksi hakuun on annettava parametri NextPageToken, joka ohjaa taustajärjestelmän hakutulosten sivutusta. Parametrin arvo otetaan talteen edellisen haun vastaussanoman otsikosta (HTTP headers) x-next-page-token.

Python esimerkkikoodi

Kuvaus

Allaoleva Python-ohjelma havainnollistaa datan hakua NextPageToken-parametrin avulla.

  • Ohjelma
    • Tunnistautuu rajapinnan käyttäjäksi (client_id / client_secret)
    • Hakee organisaatiotunnuksen '01901' julkaisut export-endpointista (/v1/publications-export)
    • Tulostaa julkaisujen nimet

Ohjelmakoodi

Code Block
languagepy
import requests
import sys
from oauthlib.oauth2 import BackendApplicationClient
from requests_oauthlib import OAuth2Session

# API credentials
client_id = 'myclientid'
client_secret = 'mysecretapikey'

# API endpoint
api_url = 'https://research.fi/api/rest/v1/publications-export'

# Get API access token
token_url = 'https://researchfi-auth.2.rahtiapp.fi/realms/publicapi/protocol/openid-connect/token'
client = BackendApplicationClient(client_id=client_id)
oauth = OAuth2Session(client=client)
try:
    token = oauth.fetch_token(
        token_url=token_url, client_id=client_id, client_secret=client_secret)
except Exception as ex:
    print(ex)
    sys.exit(1)

# Get data from API
counter = 1
next_page_token = 0
while (counter <= 200000):
    # Query parameters.
    # MUST:
    #   - Include NextPageToken, which was provided in the previous HTTP response headers
    #   - Keep the other parameters unchanged
    query_parameters = {
        'OrganizationId': '01901',
        'PageSize': 1000,
        'NextPageToken': next_page_token
    }

    # API request
    try:
        response = oauth.get(api_url, params=query_parameters)
        response.raise_for_status()
    except Exception as ex:
        # Exit in case of API error
        print(ex)
        sys.exit(1)
    if len(response.json()) == 0:
        # Exit if there are no more results
        sys.exit(0)

    # Process API response data
    for publication in response.json():
        print(str(counter) + ": " +
              publication['id'] + ": " + publication['name'])
        counter += 1

    # Store token, use it in the next query to get more results
    next_page_token = response.headers['x-next-page-token']

Python esimerkkiohjelman riippuvuudet

Edellä kuvattu esimerkki vaatii toimiakseen Python-kirjastot:

Code Block
languagepy
certifi==2024.8.30
charset-normalizer==3.4.0
idna==3.10
oauthlib==3.2.2
requests==2.32.3
requests-oauthlib==2.0.0
urllib3==2.2.3

Virta-julkaisutietopalvelun raporttien hyödyntäminen

Virta-julkaisutietopalvelun virhe-, duplikaatti-, yhteisjulkaisujen ristiriitaisuudet - ja tilanneraportteja hyödynnetään tutkimustietovarannon rajapintakokonaisuuden kautta. Raporttirajapinnat ovat käytettävissä kaikilla organisaatioilla, jotka hyödyntävät julkaisujen tietoja.

Erot aiemmin käytössä olleisiin Virta-julkaisutietopalvelun omiin rajapintoihin:

Duplikaatit

Tutkimustietovarannon APIVirran API
duplikaattiIdduplikaattiID
tarkistusIdtarkistusID
luontipaivamaara muodossa:
YYYY-MM-DDTHH:MM:SS
luontipaivamaara muodossa:
YYYY-MM-DD

Tilanne

Tutkimustietovarannon APIVirran API
tilanneraporttiIdtilanneraporttiID
julkaisuKanavaOajulkaisuKanavaOA
organisaationimiorganisaatioNimi
luontipaivamaaraluontiPaivamaara
paivityspaivamaarapaivitysPaivamaara

Virheet

Tutkimustietovarannon APIVirran API
luontipaivamaara-
virheraporttiIdvirheraporttiID
tarkistusIdtarkistusID

 Ristiriitaiset

Tutkimustietovarannon APIVirran API
rrIdrrID
Info
titleInsturctions in English

https://wiki.eduuni.fi/x/GMQhFg


Tip

Excerpt Include
Tietojen hyödyntäminen tutkimustietovarannosta
Tietojen hyödyntäminen tutkimustietovarannosta