Tilojen ja opintojaksototeutusten varausten haku.
Oliomalli
Varaus
Varaus sisältää perustiedot varauksesta kuten sen ajankohdan, ja lisäksi listan "resursseja" jotka voivat olla esimerkiksi tiloja tai opintojaksototeutuksia.
Kenttä | Tyyppi | Kuvaus |
---|---|---|
id | numero | Varauksen yksilöllinen id |
modifiedDate | pvm | Koska varausta on viimeksi muokattu |
subject | teksti | Varauksen otsikko |
description | teksti | Mahdollinen varauksen lisätieto |
startDate | pvm | Varauksen alkamisajankohta |
endDate | pvm | Varauksen päättymisajankohta |
resources | lista | Varaukseen linkitetyt resurssit |
Varauksen resurssi
Kenttä | Tyyppi | Kuvaus |
---|---|---|
id | numero | Resurssin yksilöllinen id |
type | teksti | Resurssin tyyppi. realization - opintojaksototeutus, student_group - ryhmä, scheduling_group - opetusryhmä, room - tila, building - rakennus josssa tila sijaitsee |
code | teksti | Resurssin koodi |
name | teksti | Resurssin nimi |
Esimerkki:
{ "id": "838403", "subject": "Spanish 3 LX00AC52-3001", "modifiedDate": "2013-09-02T14:31", "startDate": "2013-11-01T08:00", "endDate": "2013-11-01T10:45", "resources": [{ "id": "32961", "type": "realization", "code": "LX00AC52-3001", "name": "Spanish 3" }, { "id": "32858", "type": "student_group", "code": "LITO_VV", "name": "LITO_VV" }, { "id": "786", "type": "room", "code": "VTYA215", "name": "Teorialuokka", "parent": { "id": "764", "type": "building", "code": "VTY", "name": "Leiritie 1" } }] }
Haku
Kenttä | Tyyppi | Kuvaus |
---|---|---|
subject | teksti | Vapaa tekstihaku otsikosta |
startDate | pvm | Varauksen alkuajankohdan pitää olla sama tai suurempi kuin annettu arvo |
endDate | pvm | Varauksen päättymisajankohdan pitää olla sama tai pienempi kuin annettu arvo. |
rangeStart | pvm | Varauksen loppu-ajankohta on annettuna ajankohtana tai sen jälkeen. Varaus osuu rangeStart - rangeEnd päivämäärävälille. Molemmat parametrit pitää antaa jos jompi kumpi määritelty. |
rangeEnd | pvm | Varauksen alku-ajankohta on ennen annettua ajankohtaa |
realization | lista | Varaus koskee annettua opintojaksototeutusta (opintojaksototeutuksen koodi) |
studentGroup | lista | Varaus koskee annettua ryhmää (ryhmän koodi). |
room | lista | Varaus on annetussa tilassa (tilan koodi) |
building | lista | Varaus on tilassa joka sijaitsee annetussa rakennuksessa (rakennuksen koodi) |
from | numero | Palauta hakutulokset annetusta numerosta eteenpäin. Oletus 0. |
size | numero | Palautettavien tulosten maksimimäärä. Oletus 1000. |
Haku on "AND" -haku kenttien välillä. Lista -tyyppiset parametrit ovat "OR" saman tyyppisen listan sisällä olevien elementtien välillä.
Esimerkiksi:
{ "startDate": "2013-11-22T09:00", "endDate": "2013-11-22T10:00", "room": ["G201"] }
Vastaus
Kenttä | Kuvaus |
---|---|
status | Tieto onnistuiko pyyntö vai oliko mahdollisia virheitä. "success ", "warn ", "error " |
message | Mahdollinen tarkentava viesti esimerkiksi virhetilanteissa. |
reservations | Lista varauksia. |
{ "status": "success", "reservations": [{ "id": "840509", "subject": "G201 test", "modifiedDate": "2013-11-18T13:11", "startDate": "2013-11-22T09:00", "endDate": "2013-11-22T10:00", "resources": [{ "id": "3", "type": "room", "code": "G201", "name": "Auditorio", "parent": { "id": "2", "type": "building", "code": "AGRICO", "name": "Agricolankatu 1-3" } }] }] }
Rajapinta
Yksittäisen varauksen tietojen hakeminen
curl -u "oma_api_key:" https://opendata.metropolia.fi/r1/reservation/816121
Varausten hakeminen
Anna hakuparametriksi ylhäällä kuvattu "Haku" -olion mukainen JSON. Jokin haun kentistä pitää olla määriteltynä jotta haku palauttaisi tuloksia.
curl -u "oma_api_key:" -X POST https://opendata.metropolia.fi/r1/reservation/search -d '{ "startDate":"2013-11-22T09:00", "endDate":"2013-11-22T15:00", "room":["G205"] }'
Huomaa että opintojaksototeutuksen varaukset voivat olla merkitty joko pelkästään opintojaksototeutukselle tai ryhmälle, tai sitten varauksella voi olla molemmat tiedot asetettuna.
Varauksiin tallennetaan yleensä sekä ryhmätieto että toteutus jota varaus koskee. Näinollen jos haluat kaikki tietyn ryhmän opetustapahtumat voit hakea pelkällä ryhmällä varauksia.
Esimerkiksi:
# tiettyjen toteutusten varausten haku curl -u "oma_api_key:" -X POST https://opendata.metropolia.fi/r1/reservation/search -d '{ "realization":["SB00AA01-2000", "SB00AA03-2000", "SB00AA04-2000", "SB00AA06-2001"] }' # tietyn ryhmän varausten haku. Huomaa että et voi samassa pyynnössä hakea sekä tiettyjen toteutusten # että ryhmien varauksia koska hakuehto eri tyyppisten kenttien välillä on AND curl -u "oma_api_key:" -X POST https://opendata.metropolia.fi/r1/reservation/search -d '{ "studentGroup":["SB13K2"] }'
Voit tarkistaa onko tietty aika vapaa tai mitä varauksia on käynnissä ko. ajankohtana käyttämällä "range queryä".
Alla oleva esimerkki hakee kaikki varaukset jotka ovat "voimassa" klo. 09.00 ja 10.00 välillä, annetussa toimipisteessä. Varaus on siis voinut alkaa ennen kl. 09.00 ja jatkua 10.00 jälkeen.
curl -u "oma_api_key:" -X POST https://opendata.metropolia.fi/r1/reservation/search -d '{ "rangeStart": "2013-11-22T09:00", "rangeEnd": "2013-11-22T10:00", "building": ["AGRICO"] }'
Jos haluat hakea esimerkiksi mitä opetusta on tiettynä ajankohtana, voit hakea varaukset jotka alkavat tietyn ajankohdan jälkeen. Vastaukesta voit kerätä yksilölliset opintojaksototeutukset ja luokkahuoneet joissa opetus järjestetään. Voit lisätä vielä hakuehdon rakennukselle jos haluat vain tietyn toimipisteen opetustapahtumat.
curl -u "oma_api_key:" -X POST https://opendata.metropolia.fi/r1/reservation/search -d '{ "startDate": "2013-11-22T09:00", "endDate": "2013-11-22T15:00", "building": ["AGRICO"] }'
Rakennusten ja tilojen listaaminen
curl -u "oma_api_key:" https://opendata.metropolia.fi/r1/reservation/building
curl -u "oma_api_key:" https://opendata.metropolia.fi/r1/reservation/building/373
Esimerkki vastauksesta:
Kenttä officialIdentifier lisätty, joka sisältää Virallisen tilakoodin.
Korjattu, että size (neliömäärä) tieto tulee myös huoneille (building toimi jo tältä osin). Tässä voi olla ongelmaa, koska alunperin toteutettu käsittelemään kokonais ukuja ja huoneilla voidaan syöttää tekstiä. Jos tekstiä syötetty tai desimaali arvoja, niin ottaa ensimmäisen numeraalisen osan. Esim "n.10,5 neliötä" → 10 size kentässä.
Huone sisältää building kyselyssä resources listan, jossa kiinteät varusteet (type:resource) ja muut resurssit (type:movable)
Varusteniput (accessoryBundles) sisältyy myös esimerkin mukaisesti mikäli ominaisuus on kytkettynä pepissä
{ "status": "success", "building": { "id": "373", "type": "building", "code": "Test", "name": "Test Street 3 D", "places": 0, "size": 100 }, "resources": [{ "id": "374", "type": "room", "code": "Testroom1", "name": "ATK-luokka", "resourceType": "ATK-luokka", "description": "Vain testikäytössä oleva virtuaalinen tila, jolla ei ole fyysisessä maailmassa vastinetta.", "places": 22, "size": 20, "officialIdentifier": "XXX", "resources": [ { "code": "KV-73", "description": "", "id": "49262", "name": "Kiinteä varuste 73", "organisationUnitId": 0, "places": 0, "resourceType": "Videoneuvottelulaitteisto", "size": 0, "staff": 0, "students": 0, "type": "resource" } ], }, { "id": "375", "type": "room", "code": "Testroom2", "name": "Opetustila", "resourceType": "Opetustila", "description": "Vain testikäytössä oleva virtuaalinen tila, jolla ei ole fyysisessä maailmassa vastinetta.\r\n", "accessoryBundles": [ { "categorys": [ { "id": "41", "items": [ { "descriptionEn": "", "descriptionFi": "Kannettava tietokone", "descriptionSv": "", "id": "414", "name": "Kannettava", "specifier": "LPC1" }, { "descriptionEn": "", "descriptionFi": "Pöytäkone luokassa", "descriptionSv": "", "id": "415", "name": "Pöytäkone", "specifier": "PC1" } ], "titleEn": "", "titleFi": "Tietokoneet", "titleSv": "" }, { "id": "42", "items": [ { "descriptionEn": "", "descriptionFi": "Langaton tulostin", "descriptionSv": "", "id": "416", "name": "Tulostin 1", "specifier": "PRINT1" }, ], "titleEn": "", "titleFi": "Tulostimet", "titleSv": "" } ], "id": "12", "titleEn": "", "titleFi": "Testinippu 5", "titleSv": "" } ], "places": 30 }] }
Varusteiden/resurssien ja niiden avulla tilojen hakeminen
Haku objectin kentät
Kenttä | Kuvaus |
---|---|
type | Hae resurssin päätyypin perusteella (Kiinteä varuste, Tila, Muu resurssi) (building, room,resource,movable) |
resourceType | Hae resurssin tarkentavan tyypin perusteella |
resources | Hae tilaa kiinteän varusteen tai muun resurssin id:n perusteella |
resourceTypeAny | Hae tilaa kiinteän varusteen tai muun resurssin tyyppin perusteella perusteella, Sisältää minkä tahansa |
resourceTypeAll | Hae tilaa kiinteän varusteen tai muun resurssin tyyppin perusteella. Sisällettävä kaikki |
from | Palauta hakutulokset annetusta numerosta eteenpäin (oletus: 0) |
size | Palautettavien tulosten maksimimäärä (oletus: 1000) |
Haku esimerkit Muiden resurssien ja Kiinteiden varusteiden listaukseen.
curl -u "oma_api_key:" https://opendata.metropolia.fi/r1/reservation/search/resource -d '{"type": ["resource","movable"]}'
curl -u "oma_api_key:" https://opendata.metropolia.fi/r1/reservation/search/resource -d '{"resourceType": ["Laptop iPad -vaunut"]}'
curl -u "oma_api_key:" https://opendata.metropolia.fi/r1/reservation/search/resource -d '{"resourceType": ["Laptop"], "type": ["movable"]}'
{ "resources": [ { "code": "VTYLPT2", "description": "Löytyy tilasta VTYA2222", "id": "35841", "name": "Laptop Trolley2 (Leiritie VTYA2222)", "organisationUnitId": 0, "parent": { "code": "VTY", "description": "", "id": "764", "name": "Leiritie 1", "organisationUnitId": 0, "places": 0, "resourceType": "", "size": 0, "staff": 0, "students": 0, "type": "building" }, "places": 0, "resourceType": "Laptop iPad -vaunut", "size": 0, "staff": 0, "students": 0, "type": "movable" }, { "code": "KV-73", "description": "", "id": "49262", "name": "Kiineteä varuste 73", "organisationUnitId": 0, "parent": { "code": "huone-73", "description": "", "id": "49252", "name": "Huone-73", "organisationUnitId": 0, "places": 10, "resourceType": "", "size": 17, "staff": 0, "students": 0, "type": "room" }, "places": 0, "resourceType": "Videoneuvottelulaitteisto", "size": 0, "staff": 0, "students": 0, "type": "resource" } ], "status": "success" }
Haku esimerkit Tilojen hakemiseen päätyypin ja tarkentavan tyypin avulla.
curl -u "oma_api_key:" https://opendata.metropolia.fi/r1/reservation/search/resource -d '{"resources": ["35841"]}'
curl -u "oma_api_key:" https://opendata.metropolia.fi/r1/reservation/search/resource -d '{"resourceTypeAll": ["Laptop iPad -vaunut"]}'
{ "resources": [ { "code": "VTY", "description": "", "id": "764", "name": "Leiritie 1", "organisationUnitId": 0, "places": 0, "resourceType": "", "resources": [ { "code": "VTYLPT1", "description": "L\u00f6ytyy tilasta VTYA207", "id": "35840", "name": "Laptop Trolley1 (Leiritie VTYA207)", "organisationUnitId": 0, "places": 0, "resourceType": "Laptop iPad -vaunut", "size": 0, "staff": 0, "students": 0, "type": "movable" }, { "code": "VTYLPT2", "description": "L\u00f6ytyy tilasta VTYA2222", "id": "35841", "name": "Laptop Trolley2 (Leiritie VTYA2222)", "organisationUnitId": 0, "places": 0, "resourceType": "Laptop iPad -vaunut", "size": 0, "staff": 0, "students": 0, "type": "movable" }, { "code": "VTYIPT1", "description": "L\u00f6ytyv\u00e4t tilasta VTYB116", "id": "35839", "name": "iPad Trolley (Leiritie VTYB116)", "organisationUnitId": 0, "places": 0, "resourceType": "Laptop iPad -vaunut", "size": 0, "staff": 0, "students": 0, "type": "movable" } ], "size": 0, "staff": 0, "students": 0, "type": "building" } ], "status": "success" }