2.1 FS-API

Unit leverte høsten 2018 et nytt FS-API. Nye tjenester, samt nyskriving av eksisterende, vil i størst mulig grad gjøres i dette API'et.

Oppdeling

Detaljene i API'et er dokumentert i Swagger


Prod:            https://api.fellesstudentsystem.no/swagger.html
Test/Demo:  https://fsapi-test.uio.no/swagger.html
Utvikling:      https://fsapi-utv.uio.no/swagger.html

API'et er delt opp i følgende hoveddeler, som igjen består av ressurser (viser eksempler):

Tverrgående

  • Felles (kodeverk)
    • Semester
    • Land
    • Campus
    • ...
  • Person
    • Student
      • Semesterregistrering
      • ...
    • Fagperson
      • Personroller
      • ...
    • Deltaker

Modul-/områdespesifikk

  • Studieprogram
    • Kull
    • Klasse
    • Studierett
  • Undervisning
    • Undervisning(senhet)
    • Undervisningsaktivitet
    • Studentundervisning
    • Studentundervisningsaktivitet
  • EVU
    • Kurs
    • Aktivitet
    • Kursdeltakelse
  • Vurdering
    • Vurderingsordning
    • Vurderingstid
    • Vurderingskombinasjon
    • Vurderingsenhet
    • Studentvurdering

Abstraksjon og ressursvarianter

Ressursene er ikke en 1:1-avbildning mot FS-tabeller, men et abstraksjonslag som skjuler teknisk kompleksitet. F.eks:

  • "Person" er et begrep som inneholder student og/eller fagperson-informasjon
  • Tekniske forskjeller som at forskjellige typer telefonnumre er skilt ut i en egen tabell (PersonTelefon), mens forskjellige typer adresser ligger "flatt", er standardisert slik at alt presenteres på samme form (lister av kontaktinformasjon av forskjellige typer)
  • Kodeverk med mye informasjon  som refereres mange steder tilgjengeliggjøres som egne ressurser, mens andre koder presenteres inline der de refereres

Hver ressurs forekommer i en collection-variant og en individvariant (alt etter om ID er angitt) samt et potensielt sett underressurser (sistnevnte er foreløpig ikke implementert).

Operasjoner

Hver ressurs har en URL, og kalles med en operasjon (HTTP-verb):

  • GET: Henter informasjon
  • POST: Lagrer informasjon
  • PATCH: Lagrer informasjon med mulighet for blanking
  • DELETE: Sletter informasjon
Operasjon Collection Individ Underressurs
GET Henter liste av individer med evt. filter/sortering/paginering (default kun ID) Henter et individ (default all informasjon) Henter informasjon om et individ
POST Oppretter et individ (ID er ikke kjent) Endrer et individ (ID er kjent) Lagrer informasjon om et individ
PATCH N/A Endrer et individ (ID er kjent) - Eksplisitt blanke felt gir blanking i basen (gjelder kun et utvalg felt) Sletter (blanker) informasjon om et individ
DELETE N/A Sletter (ev. deaktiverer) et individ Sletter (blanker) informasjon om et individ

Dataformat

I utgangspunktet leveres et "kanonisk" format definert av Unit, men på sikt vil det kunne gis mulighet for å levere på eksternt definerte standardformat (f.eks IMS eller ELMO).

Det vil uavhengig av dette kunne velges mellom JSON og XML via Content-Type.

Erstatning av eksisterende tjenester (FSWS)

Tentativ roadmap:

  1. BAS (resten)
  2. StudInfo2
  3. LMS (resten)
  4. CRUD
  5. CDM
  6. StudRapp
  7. FS-koder
  8. Bris

Historikk

Bakgrunn for utvikling av den nye tjenesten er Unit's vurdering at de gamle BAS-tjenestene er virksomhetskritiske, men beheftet med endel mangler og feil, og er for tunge å kjøre.

Det kommer også etter påtrykk fra institusjoner som trenger en mer moderne løsning med mindre (mikro)tjenester. UiO har utarbeidet spesifikasjon med ønsker til Unit. Denne ble diskutert i prosjektgruppen for nytt API, og tatt inn i prosjektet som basis for den første leveransen. Bestillingen er generalisert til å kunne dekke BAS-tjenester for alle institusjoner som ønsker å hente data på en smidigere måte. I tillegg dekker den nødvendige data til Canvas.

Emneord: webservice, api, rest
Publisert 19. okt. 2017 14:56 - Sist endret 27. mars 2024 11:08