API kald til GeoGIS openapi og DMP stanlab

Info

Denne siden henvender sig til udviklere og data specialister hos regionens rådgivere, som ønsker at integrere til GeoGIS openAPI og DMP Stanlab reporting API fra egne systemer.

Indholdsfortegnelse

Introduktion

Det er muligt via API kald til GeoGIS openAPI og DMP Stanlab at integrere med egne løsninger. ARA-systemet (se ARA - AnalyseRekvisitions-App)  anvender alene disse API'er til al dataudvekslingen mellem regionens GeoGIS og Stanlab. GeoGIS openAPI indeholder yderligere funktioner end det som pt. anvendes i ARA. 

Fremgangsmåde

I det følgende beskrives API'er og hvordan man kan få adgang.

Stanlab Reporting API

DMP Stanlab reporting API, gør det muligt at sende rekvisitioner til laboratoriet (via Stanlab), og det er muligt, f.eks. at se status på prøver og rekvisitioner, samt hvilke analysepakker som laboratorierne udstiller.

Stanlab systemet forudsætter at analyseprøven og tilhørende feltmålinger allerede er oprettet i fagsystemet (GeoGIS) inden man kan lave rekvisitionen på prøven.

For beskrivelse af API henvises til:

Det er muligt at forespørge DMP stanlab APIvia RESTkald og graphQL, med graphQL kan man f.eks. lave forspørgsler på eksisterende rekvisitioner.

Som eksempel vil følgende kald returnere et json object med alle analyserekvisitioner efter 2023-01-01 (for den region man er logget ind med)

 klik for at se kode...

Post https://stanlab-api.miljoeportal.dk/v2/graphql

body:

query Requisitions {
    requisitions(from: "2023-01-01", laboratory: null) {
        requisitionId
        laboratoryTestReference
        ordered
        confirmed
        reported
        remarks
        sampleRegistered
        deleted {
            time
            user {
                name
                id
            }
        }
        laboratoryTest {
            finished
            remarks
            reported
        }
        packages {
            reference
            name
            turnaroundTime
            containers
            fingerprint
            matrix {
                description
                value
            }
        }
        containerReferences
        user {
            company
            id
            name
        }
        samplingContact {
            email
            name
            phone
        }
        contact {
            email
            name
            phone
        }
        remarks
        sample {
            sampleId
            label
            location
            remarks
            observationFacility {
                name
                observationFacilityId
            }
        }
        laboratoryContract {
            laboratory {
                name
            }
        }
    }
}

GeoGIS openAPI

GeoGIS openAPI er lavet for at understøtte stanlab api'et, således at man fra ARA eller andet system kan finde, oprette og slette data om f.eks. prøver forud for oprettelse af rekvisition hos DMP. På sigt kan api'et også udbygges med andre kald til understøttelse af andre datasæt, f.eks. jordprøver og pejlinger.

GeoGIS openAPI specifikationen, samt beskrivelse kan findes på https://feltdata.stoplight.io 

Autentifikation til Stanlab og GeoGIS openAPI

Authentifikation foregår via Danmarks Miljøportals brugerstyring. Dette gælder for begge API'er. Det kræver authentifikation at anvende de to api'er, og det kan lidt vanskeligt at sætte dette op så man får adgang. I det følgende er adgangen beskrevet. I øvrigt henvises til DMP's infoside Brugerstyring: Adgang til fagsystemer gennem Danmarks Miljøportal – Danmarks Miljøportal (miljoeportal.dk)

Det er muligt at forespørge DMP stanlab API via RESTkald og graphQL. Man kan tilgå med Oauth 2.0 codeflow authentification (dvs med DMP bruger og adgangskode via browser login), dette vil give skriveadgang. Man kan også tilgå via clientid + client-secret (dvs uden login via browser). Dette er kun muligt med læseadgang.
For GeoGIS openAPI kan man kun anvende codeflow authentification, dvs det er ikke pt. muligt at lave systemintegration uden at der er en bruger som logger ind via browser.


I det følgende beskrives det grundlæggende setup for login. For selve clientID og og secret henvises til regionernes kontaktpersoner.

Beskrivelsen tager udgangspunkt i et setup i Postman. Postman er et godt værktøj til test og design af api'er, og findes i en gratis udgave. Et andet alternativ er Insomnia. Det er muligt at importere API specifikationen direkte til f.eks. Postman så man får alle kald vist. Dette gøres via import af yaml filen fra stanlab specifikationssiden  samt fra GeoGIS openapi specifikationssiden.


Adgang via client credentials (kun DMP stanlab):

Anvend nedenstående til at få et token, der kan anvendes i efterfølgende kald.

Access token urlhttps://log-in.miljoeportal.dk/runtime/oauth2/token.idp
auth data inRequest Headers
Header prefix:Bearer
Grant typeclient Credentials
client idspørg regionen
client secretspørg regionen
scopeopenid offline_access stanlab_read stanlab_write
client authentication'send clien credentials in body'
audiencehttps://stanlab-api.miljoeportal.dk






Nedenstående et eksempel på login udført med Postman:

Herefter kan man f.eks. få data for en prøve via GUID id'en på prøven i GeoGIS:

DMP udstiller data fra GeoGIS prøven via et kald fra DMP til det reporting API der findes hos regionen.

 

Adgang via Codeflow (dvs brugeren logge på via browser):

Access token urlhttps://log-in.miljoeportal.dk/runtime/oauth2/token.idp
auth data inRequest Headers
Header prefix:Bearer
Grant typeAuthorization Code
Callback URL

https://test.ara-regioner.dk/oidc-callback

ovenstådende virker med clientid geogis-ara-geogis som er det clientid som ARA anvender. Andre callback url kan også anvendes, men skal være specificeret hos DMP for det gældende clientid.

f.eks. kan man få et clientid der anvendes i Postman, så den selv kan hente token via browseren. dvs callback url'en https://oauth.pstmn.io/v1/callback
det burde også være muligt at anvende

client idregion-ara-geogis eller anden clientid (regionen kan hjælpe med dette)
client secretingen 
scopeopenid offline_access stanlab_read stanlab_write
client authentication'send clien credentials in body'
audiencehttps://stanlab-api.miljoeportal.dk
Resourcehttp://localhost/signin-oidc
Audiencehttps://stanlab-api.miljoeportal.dk




Følgende eksempleskærmbilleder fra postman ved login:






Herefter viderestiller browser til ny side, hvoraf token kan findes i url'en:

Postman collections

Følgende postman-collections kan bruges til test af login via Postman. indholdet af disse collections er kun eksempler og indeholder langt fra alle kald. Der henvises i stedet til API specifikationssiderne.

GeoGISopenAPI - Codeflow

NB, URL'er er opsat til testmiljøet, og man skal derfor have et login til DMP testmiljøet og ens bruger skal være opsat i regionens geogis-testdatabase. Man kan nemt ændre til at køre på driftmiljøet ved at ændre i variablerne på 'collection'

Stanlab - clientid

Kald til DMP stanlab testmiljø via clientid+secret. Kan nemt tilpasses til køre mod driftmiljø.

Stanlab - codeflow

Kald til DMP stanlab testmijø ved brug af codeflow (browser brugerlogin)