GraphQL-rajapinnat

Oulunliikenteen GraphQL-rajapinnat

Yleiskuvaus julkisista GraphQL-rajapinnoista

Oulunliikenteen julkiset GraphQL-rajapinnat tarjoavat dataa Oulun seudun liikennetilanteesta ja palauttavat JSON-muotoista dataa vastauksena.

GraphQL on hakupohjainen rajapintakieli sekä rajapinnan ajoympäristö, joka pystyy suorittamaan hakuja ja palauttamaan haluttuja tietomalleja. GraphQL on Facebookin aloittama avoimen lähdekoodin projekti.

Rajapintojen sisältöä päivitetään noin kerran minuutissa.

Kaikki aikaleimat ovat UTC ajassa ja ilmoitetaan ISO 8601 standardin mukaisessa formaatissa.

Kaikki koordinaattitiedot ilmoitetaan GeoJSON standardin mukaisessa formaatissa.

Käytössä olevat GraphQL-rajapinnat

Alla on kuvattu kaikki Oulun liikennedatan julkiset GraphQL-rajapinnat.

Avoimet rajapinnat

Osoite:

https://api.oulunliikenne.fi/proxy/graphql

Käyttö:

GraphQL on suunniteltu käytettävän siihen tarkoitetuilla ohjelmistokehityspaketeilla jotka sisältävät toimintoja kuten kutsujen validointia sekä kutsujen niputtamista. Hakuja voi myös tehdä suoraan HTTP POST kutsuilla, milloin itse haku liitetään kutsun body kenttään.

Yleisesti käytetyt GraphQL-ohjelmistokehityspaketit:

  • Apollo
  • Relay

Rajapinta tukee myös selaimessa aukeavaa graafista käyttöliittymää, joka on tarkoitettu testikäyttöön hakujen sekä vastauksien tarkasteluun. Käyttöliittymässä pystyy näkemään kaikki tietomallit sekä haut mitä rajapinta mahdollistaa. Alla olevat esimerkkihaut ovat myös suoraan kopioitavissa käyttöliittymään. Avataaksesi käyttöliittymää selaimessasi, klikkaa ylhäällä listattua rajapintaosoitetta.

Kenttäkohtaiset selitteet alla olevista esimerkkikyselyistä löytyvät rajapinnan käyttöliittymästä.

Kaupunkipyöräasemat

Oulun kaupunkipyöräasemat.

Esimerkkikysely:

query GetAllBikeRentalStations {
bikeRentalStations {
id
stationId
name
bikesAvailable
spacesAvailable
state
allowDropoff
lat
lon
}
}

Pyöräilijä ja kävelijä määrät

Oulun seudun pyöräilijä ja kävelijä laskurit.

Esimerkkikysely:

query GetAllEcoCounterSites {
  ecoCounterSites {
    id
    siteId
    name
    domain
    userType
    timezone
    interval
    sens
    channels {
      id
      siteId
      name
      domain
      userType
      timezone
      interval
      sens
      lat
      lon
    }
  }
}

Yksittäisen laskurin tiedot.

id = laskurin tunniste (yksittäisen kanavan ”siteId” arvo)
domain = laskurin ryhmä
step = ryhmitys (_15m|hour|day|week|month|year)
begin = aloituspäivämäärä
end = loppumispäivämäärä

Esimerkkikysely:

query GetEcoCounterSiteData {
  ecoCounterSiteData(
    id: "100000647",
    domain: Oulu_kaupunki,
    step: month,
    begin: "2019-01-01T00:00:00"
  ) {
    date
    counts
  }
}

Kunnossapitotiedot

Oulunliikenne.fi-palvelu tarjoaa reaaliaikaiset kunnossapitotiedot kevyeenliikenteen väylille seuraaville työtehtäville:

  • Auraus
  • Liukkauden torjunta
  • Tasaus
  • Harjaus
  • Muu

Palvelun rajapinnasta voi hakea kaikki suoritetut työtehtävät halutulle ajanjaksolle joka voi olla maksimissaan 7 vuorokauden pituinen. Suoritetut työtehtävät haetaan väylätyypin perusteella:

  • NON_MOTORISED (kevyenliikenteen väylät)
  • MOTORISED (autoväylät)

Toteutuneet kunnossapitotyöt:

query GetMaintenanceVehicleRouteEvents {
     maintenanceVehicleRouteEvents(routeType:NON_MOTORISED) {
       id
       routeEventId
       routeType
       measuredTime
       contractId
       jobIds
       geometryId
       geojson
     }
 }

Rajapinta tarjoaa myös mahdollisuuden hakea kunnossapitoajoneuvojen sijaintitietoja halutulle ajanjaksolle joka voi myös olla maksimissaan 7 vuorokauden pituinen. Sijaintitiedot haetaan työsopimus ID-arvon perusteella:

  • 1250 (ELYn verkko)
  • 1255 (Oulun pääpyörätieverkko)

Kunnossapitoajoneuvojen sijaintitiedot:

query GetMaintenanceVehicleObservations {
   maintenanceVehicleObservations(contractId:1255) {
     vehicleNumber
     vehicleType
     timestamp
     contractId
     direction
     jobIds
     lat
     lon
   }
 }

Häiriötiedotteet

Oulun kaupungin häiriötiedotteet:

query GetAllTrafficAnnouncements { 
   trafficAnnouncements {
     id
     announcementId
     title {
       fi
       sv
       en
     }
     description {
       fi
       sv
       en
     }
     severity
     status
     startTime
     endTime
     geojson
     modesOfTransport
     class {
       class
       subclass
     }
     trafficDirectionFreeText {
       fi
       sv
       en
     }
     temporarySpeedLimit
     duration
     additionalInfo
     detour
     oversizeLoad
     vehicleSizeLimit
     url
     imageUrls
   }
}

Jos kentässä ”modesOfTransport” löytyy arvo ”PEDESTRIAN” tai ”BICYCLE” niin tiedote liittyy kävelyyn ja pyöräilyyn.

Kaupunkisääasemat

Oulun kaupungin sääasemat. Kevytliikenneväylillä olevien sääasemien tiedoista on saatavilla erilaisia kelitietoja, kuten esimerkiksi ilman ja tien lämpötilat sekä sadetilanne. Sääasemista löytyy myös kelikamerat mistä voi tarkastella kevytliikenneväylien tilannetta.

Tiedot päivittyvät 5 minuutin välein.

Mittausarvojen selitteet:

nimiyksikköselite
AIR_TEMPERATURE°CIlman lämpötila
AIR_RELATIVE_HUMIDITYRH%Ilman suhteellinen kosteus
DEW_POINT_TEMPERATURE°CKastepistelämpötila
WIND_SPEEDm/sTuulen nopeus 10min keskiarvo
WIND_DIRECTIONDegreesTuulen suunta 10min keskiarvo
RAINFALL_DEPTHmmLaskennallinen sadesumma
RAINFALL_INTENSITYmm/hLaskennallinen sateen intensiteetti
SNOW_DEPTH_AmmLumen kerrospaksuus mittaus A
SNOW_DEPTH_BmmLumen kerrospaksuus mittaus B
SNOW_DEPTH_CmmLumen kerrospaksuus mittaus C
SNOW_DEPTHmmLumen kerrospaksuus keskiarvo
RAIN_CLASSIFICATIONSateen luokittelu
ROAD_SURFACE_TEMPERATURE°CTienpinnan lämpötila

Esimerkkikysely:

query GetAllCityWeatherStations { 
  cityWeatherStations {
    weatherStationId
    name
    lat
    lon
    sensorValues {
      name
      sensorId
      sensorValue
      sensorUnit
      measuredTime
    }
    cameras {
      cameraId
      imageUrl
    }
  }
}