Examin versioon 3.2.4 on toteutettu REST-rajapintaan kolme uutta resurssia, jotta varaus- ja tilatietoja voidaan hakea ulkopuolisiin toteutuksiin.

Muutokset rajapintaan

päiväysEXAM versiomuutos
11.9.20236.2.1Varaustietorajapinnan palauttama noShow-tieto on tätä nykyä enrolment-objektin alla eikä juuritasolla johtuen tietomallin muutoksesta EXAM:ssa.
23.2.20215.3.2
  • Korjattu varaustietorajapinnan palauttamat kesäaikaan kohdistuvat varausajat (startAt ja endAt) oikein UTC+0 -ajassa (olivat aiemmin UTC+1 tunti).
  • Lisätty esimerkkeihin versiot 5.3.0 → mukaisista UTC-aikoja näyttävistä rajapinnan vastauksista.
  • Lisätty tämä Muutokset rajapintaan -taulukko.
5.11.20205.3.0

Varaustietorajapinnan vastausten startAt ja endAt sekä startTime ja endTime aikatiedot ISO 8601 standardin mukaisina UTC aikoina (aiemmin millisekunteina/Unix-aikaleimoina)

3.10.20163.2.4Alkuperäinen rajapinta

Varaukset

Hae opiskelijoiden tekemät tenttivaraukset

REQUEST

URL:  /integration/reservations

Metodi: GET

Query parameters:

  • start: näytä varaukset jotka alkavat aikaisintaan
    • vapaaehtoinen
    • muoto: ISO-8601
  • end: näytä varaukset jotka päättyvät viimeistään
    • vapaaehtoinen
    • muoto: ISO-8601
  • roomId: näytä varaukset tilaan
    • vapaaehtoinen
    • muoto: tilan id

Esim: GET /integration/reservations?start=2016-05-01&end=2016-05-31&roomId=123

RESPONSE

content-type: application/json

status: 200 - OK

esimerkkivastaus EXAM versiot 6.2.1 alkaen:

  • noShow-tieto enrolment-objektin alla juuritason sijasta
[
  {
    "startAt": "2016-06-08T06:10:00.000Z",
    "endAt": "2016-06-08T06:55:00.000Z",
    "enrolment": {      
	   "noShow": true,
       "exam": {
        "name": "Nuorten kielenkäyttö",
        "examOwners": [
          {
            "email": "sannaope@oppilaitos.fi",
            "lastName": "Ope",
            "firstName": "Sanna"
          },
          {
            "email": "sallaope@oppilaitos.fi",
            "lastName": "Opettaja",
            "firstName": "Salla"
          },
          {
             "email": "olliope@oppilaitos.fi",
             "lastName": "Opettaja",
             "firstName": "Olli"
          }
        ]
      }
    },
    "machine": {
      "name": "Kone 3",
      "otherIdentifier": null,
      "ipAddress": "",
      "room": {
        "name": "Pääkirjasto JY",
        "roomCode": "B44412"
      }
    },
    "user": {
      "email": "saulistudent@oppilaitos.fi",
      "userIdentifier": null,
      "lastName": "Student",
      "firstName": "Sauli"
    }
  }
]

esimerkkivastaus EXAM versiot 5.3.0-6.2.0:

  • startAt ja endAt aikatiedot ovat ISO 8601 standardin mukaisina UTC aikoina
[
  {
    "startAt": "2016-06-08T06:10:00.000Z",
    "endAt": "2016-06-08T06:55:00.000Z",
    "noShow": true,
    "enrolment": {
      "exam": {
        "name": "Nuorten kielenkäyttö",
        "examOwners": [
          {
            "email": "sannaope@oppilaitos.fi",
            "lastName": "Ope",
            "firstName": "Sanna"
          },
          {
            "email": "sallaope@oppilaitos.fi",
            "lastName": "Opettaja",
            "firstName": "Salla"
          },
          {
             "email": "olliope@oppilaitos.fi",
             "lastName": "Opettaja",
             "firstName": "Olli"
          }
        ]
      }
    },
    "machine": {
      "name": "Kone 3",
      "otherIdentifier": null,
      "ipAddress": "",
      "room": {
        "name": "Pääkirjasto JY",
        "roomCode": "B44412"
      }
    },
    "user": {
      "email": "saulistudent@oppilaitos.fi",
      "userIdentifier": null,
      "lastName": "Student",
      "firstName": "Sauli"
    }
  }
]

esimerkkivastaus EXAM versio 5.2.1 ja aikaisemmat

  • startAt ja endAt aikatiedot ovat UNIX timestamp muodossa
[
  {
    "startAt": 1465366200000,
    "endAt": 1465368900000,
    "noShow": true,
    "enrolment": {
      "exam": {
        "name": "Nuorten kielenkäyttö",
        "examOwners": [
          {
            "email": "sannaope@oppilaitos.fi",
            "lastName": "Ope",
            "firstName": "Sanna"
          },
          {
            "email": "sallaope@oppilaitos.fi",
            "lastName": "Opettaja",
            "firstName": "Salla"
          },
          {
            "email": "olliope@oppilaitos.fi",
            "lastName": "Opettaja",
            "firstName": "Olli"
          }
        ]
      }
    },
    "machine": {
      "name": "Kone 3",
      "otherIdentifier": null,
      "ipAddress": "",
      "room": {
        "name": "Pääkirjasto JY",
        "roomCode": "B44412"
      }
    },
    "user": {
      "email": "saulistudent@oppilaitos.fi",
      "userIdentifier": null,
      "lastName": "Student",
      "firstName": "Sauli"
    }
  }
]

Tilat

Hae järjestelmän tenttitilat

REQUEST

URL:  /integration/rooms

Metodi: GET

Query parameters: EI

Esim: GET /integration/rooms

RESPONSE

content-type: application/json

status: 200 - OK

esimerkkivastaus EXAM versioissa 5.3.0 alkaen:

  • startTime ja endTime aikatiedot ovat ISO 8601 standardin mukaisina UTC aikoina
  • timezoneOffset on millisekunteina
{
  "id": 1,
  "name": "Pääkirjasto JY",
  "roomCode": "B44412",
  "buildingName": "Pääkirjasto",
  "campus": "Seminaarinmäki",
  "organization": null,
  "mailAddress": {
    "id": 1,
    "street": "Vapaudenkatu 123",
    "zip": "40100",
    "city": "Jyväskylä",
    "objectVersion": 1
  },
  "defaultWorkingHours": [
    {
      "id": 7449,
      "startTime": "1970-01-01T06:00:00.000Z",
      "endTime": "1970-01-01T18:00:00.000Z",
      "timezoneOffset": 7200000,
      "weekday": "THURSDAY",
      "objectVersion": 1
    },
    {
      "id": 7446,
      "startTime": "1970-01-01T06:00:00.000Z",
      "endTime": "1970-01-01T18:00:00.000Z",
      "timezoneOffset": 7200000,
      "weekday": "MONDAY",
      "objectVersion": 1
    },
    {
      "id": 7447,
      "startTime": "1970-01-01T06:00:00.000Z",
      "endTime": "1970-01-01T18:00:00.000Z",
      "timezoneOffset": 7200000,
      "weekday": "TUESDAY",
      "objectVersion": 1
    },
    {
      "id": 7448,
      "startTime": "1970-01-01T06:00:00.000Z",
      "endTime": "1970-01-01T18:00:00.000Z",
      "timezoneOffset": 7200000,
      "weekday": "WEDNESDAY",
      "objectVersion": 1
    },
    {
      "id": 7451,
      "startTime": "1970-01-01T06:00:00.000Z",
      "endTime": "1970-01-01T14:00:00.000Z",
      "timezoneOffset": 7200000,
      "weekday": "SATURDAY",
      "objectVersion": 1
    },
    {
      "id": 7450,
      "startTime": "1970-01-01T06:00:00.000Z",
      "endTime": "1970-01-01T16:00:00.000Z",
      "timezoneOffset": 7200000,
      "weekday": "FRIDAY",
      "objectVersion": 1
    }
  ],
  "transitionTime": "0",
  "accessible": false,
  "roomInstruction": "Ohjeita tilasta.Tilaan ei saa viedä mukanaan mitään muuta kuin pakolliset lääkkeet. Tilasta ei saa poistua kesken tentin. Tilassa on kameravalvonta.",
  "roomInstructionEN": "Guidance in English",
  "roomInstructionSV": "Ohjeet ruotsiksi",
  "contactPerson": null,
  "videoRecordingsURL": null,
  "statusComment": null,
  "outOfService": false,
  "state": "SAVED",
  "examMachines": [
    {
      "id": 9,
      "name": "Kone 3",
      "otherIdentifier": null,
      "accessibilityInfo": null,
      "accessible": false,
      "ipAddress": "",
      "surveillanceCamera": null,
      "videoRecordings": null,
      "expanded": false,
      "statusComment": null,
      "archived": false,
      "outOfService": false,
      "objectVersion": 7
    },
    {
      "id": 881,
      "name": "Kone 12",
      "otherIdentifier": null,
      "accessibilityInfo": null,
      "accessible": false,
      "ipAddress": "",
      "surveillanceCamera": null,
      "videoRecordings": null,
      "expanded": false,
      "statusComment": null,
      "archived": false,
      "outOfService": false,
      "objectVersion": 19
    }
  ],
  "expanded": false,
  "localTimezone": "Europe/Helsinki",
  "objectVersion": 1
}

esimerkkivastaus EXAM versioissa 5.2.1 ja aikaisemmissa

  • startAt, endAt ja timezoneOffset aikatiedot ovat millisekunteina
{
  "id": 1,
  "name": "Pääkirjasto JY",
  "roomCode": "B44412",
  "buildingName": "Pääkirjasto",
  "campus": "Seminaarinmäki",
  "organization": null,
  "mailAddress": {
    "id": 1,
    "street": "Vapaudenkatu 123",
    "zip": "40100",
    "city": "Jyväskylä",
    "objectVersion": 1
  },
  "defaultWorkingHours": [
    {
      "id": 7449,
      "startTime": 21600000,
      "endTime": 64800000,
      "timezoneOffset": 7200000,
      "weekday": "THURSDAY",
      "objectVersion": 1
    },
    {
      "id": 7446,
      "startTime": 21600000,
      "endTime": 64800000,
      "timezoneOffset": 7200000,
      "weekday": "MONDAY",
      "objectVersion": 1
    },
    {
      "id": 7447,
      "startTime": 21600000,
      "endTime": 64800000,
      "timezoneOffset": 7200000,
      "weekday": "TUESDAY",
      "objectVersion": 1
    },
    {
      "id": 7448,
      "startTime": 21600000,
      "endTime": 64800000,
      "timezoneOffset": 7200000,
      "weekday": "WEDNESDAY",
      "objectVersion": 1
    },
    {
      "id": 7451,
      "startTime": 21600000,
      "endTime": 50400000,
      "timezoneOffset": 7200000,
      "weekday": "SATURDAY",
      "objectVersion": 1
    },
    {
      "id": 7450,
      "startTime": 21600000,
      "endTime": 57600000,
      "timezoneOffset": 7200000,
      "weekday": "FRIDAY",
      "objectVersion": 1
    }
  ],
  "transitionTime": "0",
  "accessible": false,
  "roomInstruction": "Ohjeita tilasta.Tilaan ei saa viedä mukanaan mitään muuta kuin pakolliset lääkkeet. Tilasta ei saa poistua kesken tentin. Tilassa on kameravalvonta.",
  "roomInstructionEN": "Guidance in English",
  "roomInstructionSV": "Ohjeet ruotsiksi",
  "contactPerson": null,
  "videoRecordingsURL": null,
  "statusComment": null,
  "outOfService": false,
  "state": "SAVED",
  "examMachines": [
    {
      "id": 9,
      "name": "Kone 3",
      "otherIdentifier": null,
      "accessibilityInfo": null,
      "accessible": false,
      "ipAddress": "",
      "surveillanceCamera": null,
      "videoRecordings": null,
      "expanded": false,
      "statusComment": null,
      "archived": false,
      "outOfService": false,
      "objectVersion": 7
    },
    {
      "id": 881,
      "name": "Kone 12",
      "otherIdentifier": null,
      "accessibilityInfo": null,
      "accessible": false,
      "ipAddress": "",
      "surveillanceCamera": null,
      "videoRecordings": null,
      "expanded": false,
      "statusComment": null,
      "archived": false,
      "outOfService": false,
      "objectVersion": 19
    }
  ],
  "expanded": false,
  "localTimezone": "Europe/Helsinki",
  "objectVersion": 1
}

Aukiolot

Hae huoneen aukioloajat

REQUEST

URL:  /integration/rooms/:id/openinghours

Metodi: GET

Path parameters:

  • id, huoneen id

Query parameters:

  • date: näytä poikkeusaukioloajat, jotka osuvat tälle kuulle
    • pakollinen
    • muoto: ISO-8601

Esim: GET /integration/rooms/1/openinghours?date=2016-05-01

RESPONSE

content-type: application/json

status: 200 - OK, 404 - huonetta ei löydy id:llä, 400 - hakuparametri (date) puuttuu

esimerkkivastaus EXAM versioissa 5.3.0 alkaen:

  • startTime ja endTime aikatiedot ovat ISO 8601 standardin mukaisina UTC aikoina
  • timezoneOffset on millisekunteina
{
  "id": 1,
  "name": "Tenttiakvaario Pegasus",
  "roomCode": "IT101",
  "buildingName": "Oulun yliopiston päärakennus",
  "campus": "Linnanmaa",
  "organization": {
    "id": 1
  },
  "mailAddress": {
    "id": 1
  },
  "defaultWorkingHours": [
    {
      "id": 1,
      "startTime": "1970-01-01T08:00:00.000Z",
      "endTime": "1970-01-01T16:00:00.000Z",
      "timezoneOffset": 7200000,
      "weekday": "MONDAY",
      "objectVersion": 1
    }
<... SNIP ...>
  ],
  "calendarExceptionEvents": [
    {
      "id": 1,
      "startDate": "2016-07-15T11:50:32.000Z",
      "endDate": 1471261832900 "2016-08-15T11:50:32.000Z",
      "startDateTimezoneOffset": 0,
      "endDateTimezoneOffset": 0,
      "outOfService": false,
      "massEdited": false,
      "objectVersion": 1
    }
  ],
  "transitionTime": "5",
  "accessible": true,
  "roomInstruction": "Tilaan ei saa tuoda juomia tai ruokia.",
  "roomInstructionEN": null,
  "roomInstructionSV": null,
  "contactPerson": "Kiinteistöinsinööri Timppa Vaksi. puh. 040 123 4567",
  "videoRecordingsURL": "www.utu.fi/videot",
  "statusComment": null,
  "outOfService": false,
  "state": null,
  "expanded": false,
  "localTimezone": "Europe/Helsinki",
  "objectVersion": 1
}

esimerkkivastaus EXAM versioissa 5.2.1 ja aikaisemmissa

  • startAt, endAt ja timezoneOffset aikatiedot ovat millisekunteina
{
  "id": 1,
  "name": "Tenttiakvaario Pegasus",
  "roomCode": "IT101",
  "buildingName": "Oulun yliopiston päärakennus",
  "campus": "Linnanmaa",
  "organization": {
    "id": 1
  },
  "mailAddress": {
    "id": 1
  },
  "defaultWorkingHours": [
    {
      "id": 1,
      "startTime": 28800000,
      "endTime": 57600000,
      "timezoneOffset": 7200000,
      "weekday": "MONDAY",
      "objectVersion": 1
    }
<... SNIP ...>
  ],
  "calendarExceptionEvents": [
    {
      "id": 1,
      "startDate": 1468583432900,
      "endDate": 1471261832900,
      "startDateTimezoneOffset": 0,
      "endDateTimezoneOffset": 0,
      "outOfService": false,
      "massEdited": false,
      "objectVersion": 1
    }
  ],
  "transitionTime": "5",
  "accessible": true,
  "roomInstruction": "Tilaan ei saa tuoda juomia tai ruokia.",
  "roomInstructionEN": null,
  "roomInstructionSV": null,
  "contactPerson": "Kiinteistöinsinööri Timppa Vaksi. puh. 040 123 4567",
  "videoRecordingsURL": "www.utu.fi/videot",
  "statusComment": null,
  "outOfService": false,
  "state": null,
  "expanded": false,
  "localTimezone": "Europe/Helsinki",
  "objectVersion": 1
}



  • No labels

11 Comments

  1. Unknown User (vivalton@oamk.fi)

    Olisiko mahdollista saada vielä rajapintaan  /integration/reservations yhdeksi parametriksi huone noiden aikojen lisäksi ?

    1. Joo voin mä sen lisätä. Menee tunteroinen että saan vietyä palvelimelle

       

        1. Unknown User (vivalton@oamk.fi)

          Kiitoksia (smile)

  2. Unknown User (vivalton@oamk.fi)

    Seuraava huomio:

    Voisiko varauksiin saada myös joko alkuaika/loppuaika tiedon muodossa 2007-11-20T22:19:17+02:00 tai vaihtoehtoisesti tiedon aikavyöhykkeestä minkä aikana se tieto on annettu.

  3. Unknown User (timohak@oamk.fi)

    Tämä nelosversion rajapinta tarjoaa ilmeisesti nyt myös ne aktiiviset tentit? Ei onnistuttu kaivamaan niitä tuolta, miten ne tiedot saa kaivettua rajapinnasta?

    1. Unknown User (helsal@utu.fi)

      Ollaan parhaillaan tekemässä aktiivisten tenttien rajapintaa Nettiopsuun ja tuli kysymys tentin ilmoittautumislinkistä. Jotta opiskelija voidaan ohjata Nettiopsussa näytettävästä aktiivisten tenttien listasta ko. tentin linkistä suoraan tentin ilmoittautumissivulle Examiin tarvitaan ilmoittautumislinkin yksilöivä loppuosa. Voi olla että on tyhmä kysymys, mutta saako sen nyt myös rajapinnasta? Missä tämä aktiivisten tenttien rajapinta onkaan kuvattu?

       

       

  4. Unknown User (anderson@csc.fi)

  5. Hei! Meillä on aikomus ottaa varaustietokalenteri käyttöön ja välttääksemme ylimääräistä selvittelytyötä kysyisin, että olisiko meidän mahdollista saada vinkkejä / ohjeita tai jopa valmista pohjaa tämän toteutuksen perustaksi?

    1. Keskitetysti ei ole tarjolla toteutusta. Kannattaa kysellä kehittäjäryhmän kk-palaverissa tai Flowdockissa muilta korkeakouluilta vinkkejä/pohjaa toteutukselle. Marjut

      1. Kiitos asian varmistamisesta! Sainkin asian jo vireille myös meillä.