Gå til hovedinnhold

Fra FSWS-CRUD til FS GraphQL API

FSWS CRUD API er en tjeneste som er under utfasing og erstattes av FS GraphQL API. Dette er en guide for å migrere fra FSWS CRUD API til FS GraphQL API. Listen med eksempler under er ikke komplett. Ta kontakt med fs-support@sikt.no dersom du trenger hjelp til å finne en spørring eller en mutasjon som passer ditt behov.

Forskjeller og likheter

Både FSWS-CRUD og FS GraphQL API tar imot forespørsler i form av POST-kall. FSWS-CRUD tar imot payloaden i form av XML som parameter i POST-kallet. FS GraphQL API tar imot spørringer i GraphQL-spørrespråket i payloaden til POST-kallet. Der FSWS-CRUD har ett endepunkt for SELECTMANY og ett for UPSERT, har FS GraphQL API ett endepunkt for alle forespørsler. Der FSWS-CRUD bruker samme skjema for SELECTMANY og UPSERT, vil skjema for spørringer og skjema for mutasjoner i GraphQL ofte være forskjellig.

SELECTMANY

For å migrere fra SELECTMANY i FSWS-CRUD til FS GraphQL API, må du utforske APIet for å finne en passende spørring. Du vil ofte finne en spørring som gir omtrent samme data med omtrent samme filtreringsmuligheter i FS GraphQL API. Der FSWS-CRUD ofte krever at du slår opp sekvensielt mot én tabell av gangen for å bygge opp datasettet ditt, vil du i FS GraphQL API kunne bygge opp nøstede spørringer som henter hele datasettet. Eksemplene under viser GraphQL-spørringer som tilsvarer SELECTMANY-spørringer mot enkelte tabeller i FSWS-CRUD. Vi anbefaler at du bruker disse som utgangspunkt for å konstruere nøstede spørringer. Der du i FSWS-CRUD kan hente et stort antall rader i ett kall, må du i FS GraphQL API ofte paginere spørringen for å hente alle radene.

Filtrering: I FSWS-CRUD filtrerer du ved å sende kolonneverdier som XML-elementer (f.eks. <Institusjonsnr>, <Arstall>), og du kan filtrere på de fleste kolonnene i tabellen. I FS GraphQL API har hver spørring et typet filter-objekt med navngitte felt. Filterfeltene mapper ikke nødvendigvis en-til-en med databasekolonner, men er designet for vanlige bruksmønster. I tillegg tilbyr FS GraphQL API egne oppslag-spørringer for direkte oppslag på identifikatorer (f.eks. studenterGittFodselsnumre, personProfilerGittFeideBrukere). Bruk introspeksjon eller dokumentasjonen for å utforske tilgjengelige filterfelter for hver spørring.

SELECTMANY Emne

Eksempel på GraphQL-kall som henter emner:

query Emner {
query Emner {
emnerV2(
filter: {eierOrganisasjonskode: "1234"},
first: 10) {
edges {
node {
id
kode
navnAlleSprak {
nb
nn
en
se
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
}

Eksempel på svar:

{
"data": {
"emnerV2": {
"edges": [
{
"node": {
"id": "MjA6MTIzNCwxNTAsMUJBLTExMSwx",
"kode": "1BA-111",
"navnAlleSprak": {
"nb": "Bevegelseslære bokmål",
"nn": "Bevegingslære",
"en": "The Science of Movement",
"se": null
}
}
},
{
"node": {
"id": "MjA6MTIzNCwxNTAsMUJBLTExMywx",
"kode": "1BA-113",
"navnAlleSprak": {
"nb": "Treningslære",
"nn": null,
"en": null,
"se": null
}
}
},
{
"node": {
"id": "MjA6MTIzNCwxNTAsMUJBLTEyMSwx",
"kode": "1BA-121",
"navnAlleSprak": {
"nb": "Idrett og samfunn",
"nn": null,
"en": null,
"se": null
}
}
},
{
"node": {
"id": "MjA6MTIzNCwxNTAsMUJBLTEyMSwy",
"kode": "1BA-121",
"navnAlleSprak": {
"nb": "Idrett og samfunn",
"nn": null,
"en": null,
"se": null
}
}
},
{
"node": {
"id": "MjA6MTIzNCwxNTAsMUJBLTEyMSwz",
"kode": "1BA-121",
"navnAlleSprak": {
"nb": "Idrett og samfunn",
"nn": null,
"en": null,
"se": null
}
}
},
{
"node": {
"id": "MjA6MTIzNCwxNTAsMUJBLTEzNSwx",
"kode": "1BA-135",
"navnAlleSprak": {
"nb": "Ballspill",
"nn": null,
"en": null,
"se": null
}
}
},
{
"node": {
"id": "MjA6MTIzNCwxNTAsMUJBLTEzNiwx",
"kode": "1BA-136",
"navnAlleSprak": {
"nb": "Andre aktiviteter",
"nn": null,
"en": null,
"se": null
}
}
},
{
"node": {
"id": "MjA6MTIzNCwxNTAsMUJBLTEzNywx",
"kode": "1BA-137",
"navnAlleSprak": {
"nb": "Uteaktiviteter",
"nn": null,
"en": null,
"se": null
}
}
},
{
"node": {
"id": "MjA6MTIzNCwxNTAsQUtUMjAyLTEsMQ",
"kode": "AKT202-1",
"navnAlleSprak": {
"nb": "Aktivitetslære",
"nn": null,
"en": "Physical Activity Education",
"se": null
}
}
},
{
"node": {
"id": "MjA6MTIzNCwxNTAsRkFIMzQyLDE",
"kode": "FAH342",
"navnAlleSprak": {
"nb": "Aktivitetsformidling III: Aktiviteter i sal",
"nn": null,
"en": null,
"se": null
}
}
}
],
"pageInfo": {
"hasNextPage": true,
"endCursor": "WzEyMzQsMTUwLCJGQUgzNDIiLCIxIl0"
}
}
}
}

SELECTMANY Fagperson

"Fagperson" finnes som egen type i FS GraphQL API. Du kan hente fagpersoner med rot-spørringen fagpersoner:

query Fagpersoner {
fagpersoner(
filter: { eierOrganisasjonskode: "1234" }
first: 3
) {
nodes {
id
personProfil {
fodselsnummer
navn {
fornavn
etternavn
}
}
erAktiv
ansattVed {
navnAlleSprak {
nb
}
}
}
}
}

Eksempel på svar:

{
"data": {
"fagpersoner": {
"nodes": [
{
"id": "MzE6MTIzNCw4ODM",
"personProfil": {
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Njål",
"etternavn": "Øye"
}
},
"erAktiv": true,
"ansattVed": {
"navnAlleSprak": {
"nb": "Det medisinske fakultet, UiB"
}
}
},
{
"id": "MzE6MTIzNCw4ODQ",
"personProfil": {
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Kristian",
"etternavn": "Vennemo"
}
},
"erAktiv": true,
"ansattVed": {
"navnAlleSprak": {
"nb": "Det medisinske fakultet, UiB"
}
}
},
{
"id": "MzE6MTIzNCw4ODU",
"personProfil": {
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Monica Blide",
"etternavn": "Blidensol"
}
},
"erAktiv": true,
"ansattVed": {
"navnAlleSprak": {
"nb": "Det medisinske fakultet, UiB"
}
}
}
]
}
}
}

Filtrering: fagpersoner støtter filtrering på aktiv, permisjon, campus, fagpersonkategorier, fodselsnumre og inkluderAvdode. For direkte oppslag kan du bruke fagpersonerGittFodselsnumre eller fagpersonerGittPersonlopenumre.

SELECTMANY Kullklassestudent

"Kullklassestudent" heter "klassemedlemskap" i FS GraphQL API.

Eksempel på spørring som henter ut alle studenter med aktive medlemskap i en klasse (se SELECTMANY Kullklasse over for eksempel på hvordan du finner ID for en klasse):

query studenterIKlasse {
klassemedlemskap(
filter:{
klasser:["NTk6MTIzNCwzMCwxOTk1LEjDmFNULDMwM0sx"],
erAktiv: true
}
first: 10
) {nodes {
id
studentVedLarested {
id
studentnummer
}
}}}

Eksempel på svar:

{
"data": {
"klassemedlemskap": {
"nodes": [
{
"id": "NjA6MTIzNCw5NTMsMzAsSMOYU1QsMTk5NSxIw5hTVCwxOTk1LDMwM0sx",
"studentVedLarested": {
"id": "OTk6MTIzNCw5NTM",
"studentnummer": "000052"
}
},
{
"id": "NjA6MTIzNCw5NTQsMzAsSMOYU1QsMTk5NSxIw5hTVCwxOTk1LDMwM0sx",
"studentVedLarested": {
"id": "OTk6MTIzNCw5NTQ",
"studentnummer": "000054"
}
},
{
"id": "NjA6MTIzNCw5NTUsMzAsSMOYU1QsMTk5NSxIw5hTVCwxOTk1LDMwM0sx",
"studentVedLarested": {
"id": "OTk6MTIzNCw5NTU",
"studentnummer": "000055"
}
},
{
"id": "NjA6MTIzNCw5NTYsMzAsSMOYU1QsMTk5NCxIw5hTVCwxOTk1LDMwM0sx",
"studentVedLarested": {
"id": "OTk6MTIzNCw5NTY",
"studentnummer": "000056"
}
},
{
"id": "NjA6MTIzNCw5NTcsMzAsSMOYU1QsMTk5NSxIw5hTVCwxOTk1LDMwM0sx",
"studentVedLarested": {
"id": "OTk6MTIzNCw5NTc",
"studentnummer": "000057"
}
},
{
"id": "NjA6MTIzNCw5NTgsMzAsSMOYU1QsMTk5NSxIw5hTVCwxOTk1LDMwM0sx",
"studentVedLarested": {
"id": "OTk6MTIzNCw5NTg",
"studentnummer": "000059"
}
},
{
"id": "NjA6MTIzNCw5NTksMzAsSMOYU1QsMTk5NSxIw5hTVCwxOTk1LDMwM0sx",
"studentVedLarested": {
"id": "OTk6MTIzNCw5NTk",
"studentnummer": "000060"
}
},
{
"id": "NjA6MTIzNCw5NjAsMzAsSMOYU1QsMTk5NSxIw5hTVCwxOTk1LDMwM0sx",
"studentVedLarested": {
"id": "OTk6MTIzNCw5NjA",
"studentnummer": "000061"
}
},
{
"id": "NjA6MTIzNCw5NjEsMzAsSMOYU1QsMTk5NSxIw5hTVCwxOTk1LDMwM0sx",
"studentVedLarested": {
"id": "OTk6MTIzNCw5NjE",
"studentnummer": "000062"
}
},
{
"id": "NjA6MTIzNCw5NjIsMzAsSMOYU1QsMTk5NSxIw5hTVCwxOTk1LDMwM0sx",
"studentVedLarested": {
"id": "OTk6MTIzNCw5NjI",
"studentnummer": "000063"
}
}
]
}
}
}

SELECTMANY Person

"Person" heter "PersonProfil" i FS GraphQL API. Du kan hente personprofiler med rot-spørringen personProfiler:

query PersonProfiler {
personProfiler(
filter: { eierOrganisasjonskode: "1234" }
first: 3
) {
nodes {
id
fodselsnummer
navn {
fornavn
etternavn
}
kjonn
privatEpost
institusjonsEpost
feideBruker
folkeregistrertAdresse {
gate
postnummerOgSted
land
}
}
}
}

Eksempel på svar:

{
"data": {
"personProfiler": {
"nodes": [
{
"id": "NzY6MTIzNCw4ODE",
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Bugg Hubba",
"etternavn": "Bubba"
},
"kjonn": "MANN",
"privatEpost": "epost2121@test.com",
"institusjonsEpost": "epost2121@test.com",
"feideBruker": "pentest@spusers.feide.no",
"folkeregistrertAdresse": {
"gate": "Gågata 3",
"postnummerOgSted": "0123 Oslo",
"land": "Norge"
}
},
{
"id": "NzY6MTIzNCw4ODI",
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Inga-Lill",
"etternavn": "Nådland"
},
"kjonn": "KVINNE",
"privatEpost": "epost2313@test.com",
"institusjonsEpost": null,
"feideBruker": "10604490001@spusers.feide.no",
"folkeregistrertAdresse": {
"gate": "Gågata 4b",
"postnummerOgSted": "0123 Oslo",
"land": "Norge"
}
},
{
"id": "NzY6MTIzNCw4ODM",
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Njål",
"etternavn": "Øye"
},
"kjonn": "MANN",
"privatEpost": "bruker@example.com",
"institusjonsEpost": null,
"feideBruker": "11616090366@spusers.feide.no",
"folkeregistrertAdresse": {
"gate": "Gågata 3",
"postnummerOgSted": "0123 Oslo",
"land": "Norge"
}
}
]
}
}
}

Filtrering: personProfiler støtter blant annet filtrering på fodselsnumre, fodselsdatoer, epostadresser, freeText (fritekstsøk), statsborgerskapkategori, statsborgerskapILand, programStudieretter, startterminer, erSemesterregistrertIInnevarendeSemester, harBetaltSemesteravgiftIInnevarendeSemester, erIPermisjonNaa og inkluderAvdode. For direkte oppslag kan du bruke personProfilerGittFodselsnumre, personProfilerGittFeideBrukere, personProfilerGittPersonlopenumre eller personProfilerGittAnsattnumre.

Mapping: PERSON → PersonProfil

DB-felt (PERSON)GraphQL-typeGraphQL-feltMerknad
FodselsdatoPersonProfilfodselsdato: DateFullt 11-sifret FNR via PERSON_FODSELSNUMMER
PersonnrPersonProfilfodselsnummer: StringFullt 11-sifret FNR via PERSON_FODSELSNUMMER
EtternavnPersonnavnnavn.etternavn: StringNøstet under PersonProfil.navn
FornavnPersonnavnnavn.fornavn: StringNøstet under PersonProfil.navn
KjonnPersonProfilkjonn: Kjonn!Enum: MANN, KVINNE
Landnr_HjemlandStatsborgerskapVia statsborgerskap.land: LandEgen type
Adrlin1_HjemstedFolkeregistrertAdressefolkeregistrertAdresse.co
Adrlin2_HjemstedFolkeregistrertAdressefolkeregistrertAdresse.gate
Adrlin3_HjemstedFolkeregistrertAdressefolkeregistrertAdresse.postnummerOgSted
Adresseland_HjemstedFolkeregistrertAdressefolkeregistrertAdresse.land
Postnr_HjemstedFolkeregistrertAdressefolkeregistrertAdresse.postnummerOgSted
Emailadresse_PrivatPersonProfilprivatEpost: String@field(name: "EMAILADRESSE_PRIVAT")
StudentgrunnlagkodeIkke eksponert
EmailadressePersonProfilinstitusjonsEpost: String@field(name: "EMAILADRESSE")
Status_DodPersonProfilerDod: Boolean@field(name: "STATUS_DOD")
BrukernavnPersonProfilfeideBruker: String@field(name: "FEIDE_BRUKER")
AnsattnrPersonProfilansattnummer: String@field(name: "ANSATTNR")

SELECTMANY Persontelefon

Persontelefon har ikke en egen rot-spørring i FS GraphQL API. Telefonnumre er i stedet nøstet som felter på PersonProfil (mobilTelefon, privatTelefon). Du henter telefonnumre ved å inkludere disse feltene i en personProfiler-spørring:

query PersonerMedTelefon {
personProfiler(
filter: { eierOrganisasjonskode: "1234" }
first: 3
) {
nodes {
id
fodselsnummer
navn {
fornavn
etternavn
}
mobilTelefon {
landnummer
nummer
}
privatTelefon {
landnummer
nummer
}
}
}
}

Eksempel på svar:

{
"data": {
"personProfiler": {
"nodes": [
{
"id": "NzY6MTIzNCw4ODE",
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Bugg Hubba",
"etternavn": "Bubba"
},
"mobilTelefon": null,
"privatTelefon": null
},
{
"id": "NzY6MTIzNCw4ODI",
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Inga-Lill",
"etternavn": "Nådland"
},
"mobilTelefon": null,
"privatTelefon": null
},
{
"id": "NzY6MTIzNCw4ODM",
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Njål",
"etternavn": "Øye"
},
"mobilTelefon": null,
"privatTelefon": null
}
]
}
}
}

Filtrering: Telefonnumre hentes som en del av PersonProfil, så filtrering skjer via personProfiler-filteret (se over). Det er ikke mulig å filtrere spesifikt på telefonnummer.

Mapping: PERSONTELEFON → Telefon

DB-felt (PERSONTELEFON)GraphQL-typeGraphQL-feltMerknad
Fodselsdato + PersonnrTilgang via PersonProfil
TelefonnrtypekodeImplisittmobilTelefon, privatTelefon, arbeidsTelefon (eksp.)
TelefonlandnrTelefonlandnummer: Stringmed +-prefiks
TelefonnrTelefonnummer: String
LandnrIkke eksponert

SELECTMANY Soknad

Det finnes to måter å hente søknader i FS GraphQL API:

  1. Via rot-spørringen sisSoknader (eksperimentell) - for å hente søknader filtrert på opptak og/eller personprofiler
  2. Via PersonProfil.fsSoknader - for å hente søknader for en gitt person

Alternativ 1: Rot-spørring sisSoknader

Eksempel på spørring som henter søknader for et gitt opptak:

query SoknaderForOpptak {
sisSoknader(
filter: {
eierOrganisasjonskode: "1234"
opptak: ["<opptakId>"]
}
first: 10
) {
edges {
node {
id
sokernummer
opptak {
id
opptakstype {
kode
navnAlleSprak {
nb
nn
en
}
}
termin {
arstall
betegnelse {
kode
}
}
}
personProfil {
navn {
fornavn
etternavn
}
mobilTelefon {
landnummer
nummer
}
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}

Du kan også kombinere filtre for å hente søknader for bestemte personer innenfor et opptak:

query SoknaderForPersonerIOpptak {
sisSoknader(
filter: {
eierOrganisasjonskode: "1234"
opptak: ["<opptakId>"]
personProfiler: ["<personProfilId1>", "<personProfilId2>"]
}
first: 10
) {
edges {
node {
id
sokernummer
personProfil {
navn {
fornavn
etternavn
}
}
}
}
}
}

Alternativ 2: Via PersonProfil.fsSoknader

Eksempel på spørring som henter søknader for en person med et gitt fødselsnummer:

query SoknaderForPerson {
personProfilerGittFodselsnumre(
eierOrganisasjonskode: "1234"
fodselsnumre: ["12345678901"]
) {
id
navn {
fornavn
etternavn
}
mobilTelefon {
landnummer
nummer
}
fsSoknader(filter: { opptak: ["<opptakId>"] }) {
edges {
node {
id
sokernummer
opptak {
id
opptakstype {
kode
navnAlleSprak {
nb
}
}
termin {
arstall
betegnelse {
kode
}
}
}
}
}
}
}
}

Mapping: SOKNAD → FsSoknad / FsOpptak

DB-felt (SOKNAD)GraphQL-typeGraphQL-feltMerknad
ArstallTerminFsOpptak.termin.arstall: IntVia FsSoknad.opptak.termin
OpptakstypekodeFsOpptakstypeFsOpptak.opptakstype.kodeVia FsSoknad.opptak.opptakstype (eksp.)
Fodselsdato + PersonnrPersonProfilVia PersonProfil.fsSoknaderTilgang til søknader via PersonProfil
RegnrFsSoknadsokernummer: String
OpptaksprovestatuskodeFsSoknadopptaksprovestatus (eksp.)Eksperimentelt felt
TerminkodeTerminbetegnelseFsOpptak.termin.betegnelse.kode
Opptorgankode_B_RolleFsSoknadbehandlendeLarested (eksp.)Eksperimentelt felt, gir Organisasjon

SELECTMANY Soknadsalternativ

Soknadsalternativ har ikke en egen rot-spørring i FS GraphQL API. Soknadsalternativer er nøstet under FsSoknad.soknadsAlternativer. Du henter soknadsalternativer ved å inkludere feltet i en sisSoknader-spørring:

query Soknadsalternativer {
sisSoknader(
filter: { eierOrganisasjonskode: "1234" }
first: 2
) {
nodes {
id
sokernummer
soknadsAlternativer {
nodes {
id
prioritet
soknadTil {
studietypenummer
navnAlleSprak {
nb
}
}
tilbudstatus {
kode
}
}
}
}
}
}

Eksempel på svar:

{
"data": {
"sisSoknader": {
"nodes": [
{
"id": "OTU6MTIzNCw5MDAsSlVNQU9QUFRBSywyMDA3LEjDmFNU",
"sokernummer": null,
"soknadsAlternativer": {
"nodes": [
{
"id": "OTY6MTIzNCw5MDAsSlVNQU9QUFRBSywyMDA3LEjDmFNULDE4NSw0MDA4",
"prioritet": 1,
"soknadTil": {
"studietypenummer": "4008",
"navnAlleSprak": {
"nb": "Juma-mer tekst"
}
},
"tilbudstatus": null
},
{
"id": "OTY6MTIzNCw5MDAsSlVNQU9QUFRBSywyMDA3LEjDmFNULDE4NSw0MDEy",
"prioritet": 2,
"soknadTil": {
"studietypenummer": "4012",
"navnAlleSprak": {
"nb": "Jum4"
}
},
"tilbudstatus": null
}
]
}
},
{
"id": "OTU6MTIzNCw5MDYsVUtKRU5ULDIwMDQsSMOYU1Q",
"sokernummer": "7001",
"soknadsAlternativer": {
"nodes": [
{
"id": "OTY6MTIzNCw5MDYsVUtKRU5ULDIwMDQsSMOYU1QsMTg1LDkwMw",
"prioritet": 1,
"soknadTil": {
"studietypenummer": "903",
"navnAlleSprak": {
"nb": "Spesialpedagogikk 2 avd linje A, UiO"
}
},
"tilbudstatus": {
"kode": "S"
}
}
]
}
}
]
}
}
}

Filtrering: Soknadsalternativer arver filtreringen fra sisSoknader, som støtter filtrering på opptak og personProfiler. Se SELECTMANY Soknad over for mer detaljer om filtreringsalternativene.

SELECTMANY Student

"Student" heter "StudentVedLarested" i FS GraphQL API. Du kan hente studenter med rot-spørringen studenter:

query Studenter {
studenter(
filter: { eierOrganisasjonskode: "1234" }
first: 3
) {
nodes {
id
studentnummer
personProfil {
fodselsnummer
navn {
fornavn
etternavn
}
}
}
}
}

Eksempel på svar:

{
"data": {
"studenter": {
"nodes": [
{
"id": "OTk6MTIzNCw4ODM",
"studentnummer": "000114",
"personProfil": {
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Njål",
"etternavn": "Øye"
}
}
},
{
"id": "OTk6MTIzNCw4ODU",
"studentnummer": "000171",
"personProfil": {
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Monica Blide",
"etternavn": "Blidensol"
}
}
},
{
"id": "OTk6MTIzNCw4ODY",
"studentnummer": "100495",
"personProfil": {
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Fredrik",
"etternavn": "Godal"
}
}
}
]
}
}
}

Filtrering: studenter støtter filtrering på fodselsnumre, privatEpost, studieniva, emnerITerminer, harAktivProgramStudierett, harEmneStudierettITerminer og inkluderAvdode. For direkte oppslag kan du bruke studenterGittFodselsnumre, studenterGittStudentnumre, studenterGittFeideBrukere, studenterGittPersonlopenumre eller studenterGittLanetakerIder.

SELECTMANY Studentvurdkombprotokoll

Studentvurdkombprotokoll heter "Resultat" i FS GraphQL API. Du kan hente ut studentvurderingsprotokoller med en spørring som denne:

query Resultater {
resultater(
filter: {
eierOrganisasjonskode: "1234"
}
first: 10
) {
nodes {
id
vurderingsenhet {
id
vurderingsperiode {
id
arstall
navnAlleSprak {
nb
nn
en
}
}
emne {
id
kode
versjonskode
}
}
karakter {
navnAlleSprak {
nb
en
nn
}
tall
}
}
}
}

Eksempel på svar:

{
"data": {
"resultater": {
"nodes": [
{
"id": "MjAyOjEyMzQsODgzLDE4NCxFWFBISUwsICxTUywxOTk1LDA2",
"vurderingsenhet": {
"id": "MTM5OjEyMzQsU1MsMTg0LEVYUEhJTCwgLDE5OTUsMDY",
"vurderingsperiode": {
"id": "MTQ4OjEyMzQsMTk5NSwwNg",
"arstall": 1995,
"navnAlleSprak": {
"nb": "06",
"nn": "06",
"en": "06"
}
},
"emne": {
"id": "MjA6MTIzNCwxODQsRVhQSElMLCA",
"kode": "EXPHIL",
"versjonskode": " "
}
},
"karakter": {
"navnAlleSprak": {
"nb": "tre-null",
"en": "Passed",
"nn": "Stått"
},
"tall": 3
}
},
{
"id": "MjAyOjEyMzQsODgzLDE4NCxFWFBISUwsICxTUy0xLDE5OTUsMDY",
"vurderingsenhet": {
"id": "MTM5OjEyMzQsU1MtMSwxODQsRVhQSElMLCAsMTk5NSwwNg",
"vurderingsperiode": {
"id": "MTQ4OjEyMzQsMTk5NSwwNg",
"arstall": 1995,
"navnAlleSprak": {
"nb": "06",
"nn": "06",
"en": "06"
}
},
"emne": {
"id": "MjA6MTIzNCwxODQsRVhQSElMLCA",
"kode": "EXPHIL",
"versjonskode": " "
}
},
"karakter": {
"navnAlleSprak": {
"nb": "to-seks",
"en": null,
"nn": null
},
"tall": 2.6
}
},
{
"id": "MjAyOjEyMzQsODgzLDE4NCxFWFBISUwsICxTUy0yLDE5OTUsMDY",
"vurderingsenhet": {
"id": "MTM5OjEyMzQsU1MtMiwxODQsRVhQSElMLCAsMTk5NSwwNg",
"vurderingsperiode": {
"id": "MTQ4OjEyMzQsMTk5NSwwNg",
"arstall": 1995,
"navnAlleSprak": {
"nb": "06",
"nn": "06",
"en": "06"
}
},
"emne": {
"id": "MjA6MTIzNCwxODQsRVhQSElMLCA",
"kode": "EXPHIL",
"versjonskode": " "
}
},
"karakter": {
"navnAlleSprak": {
"nb": "to-seks",
"en": null,
"nn": null
},
"tall": 2.6
}
},
{
"id": "MjAyOjEyMzQsODg3LDE5NCxTSUE1MDM5LDEsT0JMMSwyMDA1LDEy",
"vurderingsenhet": {
"id": "MTM5OjEyMzQsT0JMMSwxOTQsU0lBNTAzOSwxLDIwMDUsMTI",
"vurderingsperiode": {
"id": "MTQ4OjEyMzQsMjAwNSwxMg",
"arstall": 2005,
"navnAlleSprak": {
"nb": "12",
"nn": "12",
"en": "12"
}
},
"emne": {
"id": "MjA6MTIzNCwxOTQsU0lBNTAzOSwx",
"kode": "SIA5039",
"versjonskode": "1"
}
},
"karakter": {
"navnAlleSprak": {
"nb": "Godkjent",
"en": "Approved",
"nn": "Godkjend"
},
"tall": 0.8
}
},
{
"id": "MjAyOjEyMzQsODg3LDE5NCxTSUE1MDM5LDEsUywyMDA1LDEy",
"vurderingsenhet": {
"id": "MTM5OjEyMzQsUywxOTQsU0lBNTAzOSwxLDIwMDUsMTI",
"vurderingsperiode": {
"id": "MTQ4OjEyMzQsMjAwNSwxMg",
"arstall": 2005,
"navnAlleSprak": {
"nb": "12",
"nn": "12",
"en": "12"
}
},
"emne": {
"id": "MjA6MTIzNCwxOTQsU0lBNTAzOSwx",
"kode": "SIA5039",
"versjonskode": "1"
}
},
"karakter": {
"navnAlleSprak": {
"nb": "B",
"en": null,
"nn": null
},
"tall": 64
}
},
{
"id": "MjAyOjEyMzQsODg4LDE5MSxFTkcxMTAsMSxTLDIwMDUsMTI",
"vurderingsenhet": {
"id": "MTM5OjEyMzQsUywxOTEsRU5HMTEwLDEsMjAwNSwxMg",
"vurderingsperiode": {
"id": "MTQ4OjEyMzQsMjAwNSwxMg",
"arstall": 2005,
"navnAlleSprak": {
"nb": "12",
"nn": "12",
"en": "12"
}
},
"emne": {
"id": "MjA6MTIzNCwxOTEsRU5HMTEwLDE",
"kode": "ENG110",
"versjonskode": "1"
}
},
"karakter": {
"navnAlleSprak": {
"nb": "A",
"en": null,
"nn": null
},
"tall": 65
}
},
{
"id": "MjAyOjEyMzQsODg4LDE5MSxFTkcxMTAsMSxTLTEsMjAwNSwxMg",
"vurderingsenhet": {
"id": "MTM5OjEyMzQsUy0xLDE5MSxFTkcxMTAsMSwyMDA1LDEy",
"vurderingsperiode": {
"id": "MTQ4OjEyMzQsMjAwNSwxMg",
"arstall": 2005,
"navnAlleSprak": {
"nb": "12",
"nn": "12",
"en": "12"
}
},
"emne": {
"id": "MjA6MTIzNCwxOTEsRU5HMTEwLDE",
"kode": "ENG110",
"versjonskode": "1"
}
},
"karakter": {
"navnAlleSprak": {
"nb": "A",
"en": null,
"nn": null
},
"tall": 65
}
},
{
"id": "MjAyOjEyMzQsODg4LDE5MSxFTkcxMTAsMSxTLTIsMjAwNSwxMg",
"vurderingsenhet": {
"id": "MTM5OjEyMzQsUy0yLDE5MSxFTkcxMTAsMSwyMDA1LDEy",
"vurderingsperiode": {
"id": "MTQ4OjEyMzQsMjAwNSwxMg",
"arstall": 2005,
"navnAlleSprak": {
"nb": "12",
"nn": "12",
"en": "12"
}
},
"emne": {
"id": "MjA6MTIzNCwxOTEsRU5HMTEwLDE",
"kode": "ENG110",
"versjonskode": "1"
}
},
"karakter": {
"navnAlleSprak": {
"nb": "B",
"en": null,
"nn": null
},
"tall": 64
}
},
{
"id": "MjAyOjEyMzQsODg5LDIwOSw0QUZCLDEsU00sMjAwNSwxMg",
"vurderingsenhet": {
"id": "MTM5OjEyMzQsU00sMjA5LDRBRkIsMSwyMDA1LDEy",
"vurderingsperiode": {
"id": "MTQ4OjEyMzQsMjAwNSwxMg",
"arstall": 2005,
"navnAlleSprak": {
"nb": "12",
"nn": "12",
"en": "12"
}
},
"emne": {
"id": "MjA6MTIzNCwyMDksNEFGQiwx",
"kode": "4AFB",
"versjonskode": "1"
}
},
"karakter": {
"navnAlleSprak": {
"nb": "C",
"en": null,
"nn": null
},
"tall": 63
}
},
{
"id": "MjAyOjEyMzQsODg5LDIwOSw0QUZCLDEsU00tMiwyMDA1LDEy",
"vurderingsenhet": {
"id": "MTM5OjEyMzQsU00tMiwyMDksNEFGQiwxLDIwMDUsMTI",
"vurderingsperiode": {
"id": "MTQ4OjEyMzQsMjAwNSwxMg",
"arstall": 2005,
"navnAlleSprak": {
"nb": "12",
"nn": "12",
"en": "12"
}
},
"emne": {
"id": "MjA6MTIzNCwyMDksNEFGQiwx",
"kode": "4AFB",
"versjonskode": "1"
}
},
"karakter": {
"navnAlleSprak": {
"nb": "A",
"en": null,
"nn": null
},
"tall": 65
}
}
]
}
}
}

SELECTMANY Studieprogram

Eksempel på spørring som henter alle studieprogrammer:

query Studieprogrammer {
studieprogramV2(
filter: {
eierOrganisasjonskode: "1234"
}
first: 3
) {
nodes {
id
kode
navnAlleSprak {
nb
nn
en
}
}
}
}

Eksempel på svar:

{
"data": {
"studieprogramV2": {
"nodes": [
{
"id": "MTA2OjEyMzQsMTA",
"kode": "10",
"navnAlleSprak": {
"nb": "Sivilarkitektstudiet ved NTNU",
"nn": "k",
"en": null
}
},
{
"id": "MTA2OjEyMzQsQUxN",
"kode": "ALM",
"navnAlleSprak": {
"nb": "4-årig allmennlærerutdanning",
"nn": null,
"en": null
}
},
{
"id": "MTA2OjEyMzQsQUxNTMOGUg",
"kode": "ALMLÆR",
"navnAlleSprak": {
"nb": "Almennlærerutdanning HSH",
"nn": null,
"en": null
}
}
]
}
}
}

SELECTMANY Studieprogramstudent

Studieprogramstudent kalles "ProgramStudierett" i FS GraphQL API.

Eksempel på spørring som henter alle programStudieretter:

query MyQuery {
programStudieretter(
filter: {
eierOrganisasjonskode: "1234"
aktivStatus: [FREMTIDIG, AKTIV, AVSLUTTET]
}
first: 10
) {
edges {
node {
id
studieprogram {
id
navnAlleSprak {
nb
nn
en
}
}
studierettperiode {
fraDato
tilDato
}
student {
studentnummer
}
}
}
}
}

Merk at aktivStatus-filteret har standardverdi AKTIV. Hvis du ikke oppgir noe her, får du bare tilbake studieretter som er aktive på spørretidspunktet.

Eksempel på svar:

{
"data": {
"programStudieretter": {
"edges": [
{
"node": {
"id": "MTU0OjEyMzQsODgzLDJLUkxCMiwyMDI0LEjDmFNU",
"studieprogram": {
"id": "MTA2OjEyMzQsMktSTEIy",
"navnAlleSprak": {
"nb": "KRISTENDOMS- RELIGIONS- OG LIVSSYNSKUNNSKAP",
"nn": null,
"en": null
}
},
"studierettperiode": {
"fraDato": "2024-08-01",
"tilDato": null
},
"student": {
"studentnummer": "000114"
}
}
},
{
"node": {
"id": "MTU0OjEyMzQsODkzLEJBQ0gtw5hLQURNLDIwMDUsSMOYU1Q",
"studieprogram": {
"id": "MTA2OjEyMzQsQkFDSC3DmEtBRE0",
"navnAlleSprak": {
"nb": "Bachelor i økonomi og administrasjon",
"nn": null,
"en": null
}
},
"studierettperiode": {
"fraDato": "2005-08-01",
"tilDato": null
},
"student": {
"studentnummer": "100522"
}
}
},
{
"node": {
"id": "MTU0OjEyMzQsOTAyLEJBU1ksMjAwNSxIw5hTVA",
"studieprogram": {
"id": "MTA2OjEyMzQsQkFTWQ",
"navnAlleSprak": {
"nb": "Bachelor i sykepleie",
"nn": null,
"en": null
}
},
"studierettperiode": {
"fraDato": "2005-08-01",
"tilDato": null
},
"student": {
"studentnummer": "100499"
}
}
},
{
"node": {
"id": "MTU0OjEyMzQsOTA2LEFMUkVBTC1IU1QsMTk5OCxWw4VS",
"studieprogram": {
"id": "MTA2OjEyMzQsQUxSRUFMLUhTVA",
"navnAlleSprak": {
"nb": "Allmenlærerutd. med realfag",
"nn": "Allmenlærarutd. med realfag",
"en": null
}
},
"studierettperiode": {
"fraDato": "1998-01-01",
"tilDato": null
},
"student": {
"studentnummer": "000401"
}
}
},
{
"node": {
"id": "MTU0OjEyMzQsOTA2LEhJU1RGSUwsMTk5NSxIw5hTVA",
"studieprogram": {
"id": "MTA2OjEyMzQsSElTVEZJTA",
"navnAlleSprak": {
"nb": "Historisk-filosofisk studium, UiO",
"nn": null,
"en": null
}
},
"studierettperiode": {
"fraDato": "1995-08-12",
"tilDato": null
},
"student": {
"studentnummer": "000401"
}
}
},
{
"node": {
"id": "MTU0OjEyMzQsOTA2LFNQUDJBLDIwMDEsSMOYU1Q",
"studieprogram": {
"id": "MTA2OjEyMzQsU1BQMkE",
"navnAlleSprak": {
"nb": "Spesialpedagogikk 2 avd., linje A, UiO",
"nn": null,
"en": null
}
},
"studierettperiode": {
"fraDato": "2002-08-02",
"tilDato": null
},
"student": {
"studentnummer": "000401"
}
}
},
{
"node": {
"id": "MTU0OjEyMzQsOTA3LEZSQU5TSy1VSU8sMTk5NyxIw5hTVA",
"studieprogram": {
"id": "MTA2OjEyMzQsRlJBTlNLLVVJTw",
"navnAlleSprak": {
"nb": "Fransk hovedfag",
"nn": null,
"en": null
}
},
"studierettperiode": {
"fraDato": "1997-08-02",
"tilDato": null
},
"student": {
"studentnummer": "000002"
}
}
},
{
"node": {
"id": "MTU0OjEyMzQsOTA3LEhJU1RGSUwsMTk5NSxIw5hTVA",
"studieprogram": {
"id": "MTA2OjEyMzQsSElTVEZJTA",
"navnAlleSprak": {
"nb": "Historisk-filosofisk studium, UiO",
"nn": null,
"en": null
}
},
"studierettperiode": {
"fraDato": "1995-08-15",
"tilDato": null
},
"student": {
"studentnummer": "000002"
}
}
},
{
"node": {
"id": "MTU0OjEyMzQsOTA4LEZSQU5TSy1VSU8sMTk5OSxIw5hTVA",
"studieprogram": {
"id": "MTA2OjEyMzQsRlJBTlNLLVVJTw",
"navnAlleSprak": {
"nb": "Fransk hovedfag",
"nn": null,
"en": null
}
},
"studierettperiode": {
"fraDato": "1999-10-11",
"tilDato": null
},
"student": {
"studentnummer": "000003"
}
}
},
{
"node": {
"id": "MTU0OjEyMzQsOTA4LEZZU0lPLUhPUywxOTk3LEjDmFNU",
"studieprogram": {
"id": "MTA2OjEyMzQsRllTSU8tSE9T",
"navnAlleSprak": {
"nb": "Fysioterapistudiet, HiOslo",
"nn": "Fysioterapistudiet, HiOslo",
"en": null
}
},
"studierettperiode": {
"fraDato": "1997-08-15",
"tilDato": null
},
"student": {
"studentnummer": "000003"
}
}
}
]
}
}
}

Du kan hente programstudieretter for et gitt fødselsnummer slik:

query MyQuery {
programStudieretter(
filter: {
eierOrganisasjonskode: "1234"
aktivStatus: [FREMTIDIG, AKTIV, AVSLUTTET]
fodselsnumre: "XXXXXXXXXXX"
}
first: 10
) {
edges {
node {
id
studieprogram {
id
navnAlleSprak {
nb
nn
en
}
}
studierettperiode {
fraDato
tilDato
}
student {
studentnummer
}
}
}
}
}

Eksempel på svar:

{
"data": {
"programStudieretter": {
"edges": [
{
"node": {
"id": "MTU0OjEyMzQsODgzLDJLUkxCMiwyMDI0LEjDmFNU",
"studieprogram": {
"id": "MTA2OjEyMzQsMktSTEIy",
"navnAlleSprak": {
"nb": "KRISTENDOMS- RELIGIONS- OG LIVSSYNSKUNNSKAP",
"nn": null,
"en": null
}
},
"studierettperiode": {
"fraDato": "2024-08-01",
"tilDato": null
},
"student": {
"studentnummer": "000114"
}
}
},
{
"node": {
"id": "MTU0OjEyMzQsODgzLFNPU8OYSy1VSU8sMTk5NyxWw4VS",
"studieprogram": {
"id": "MTA2OjEyMzQsU09Tw5hLLVVJTw",
"navnAlleSprak": {
"nb": "Sosialøkonomi hovedfag",
"nn": null,
"en": null
}
},
"studierettperiode": {
"fraDato": "1997-02-11",
"tilDato": "1999-12-30"
},
"student": {
"studentnummer": "000114"
}
}
}
]
}
}
}

SELECTMANY Undervisningsmelding

Undervisningsmeldinger brukes til å ta opp studenter til emner i FS. I FS GraphQL API har vi splittet denne tabellen i to, én for emnestudieretter, og én for emnesøknader. Emnesøknader inneholder alle undervisningsmeldinger, men kun de kolonnene som er relevante for opptak. Emnestudieretter inneholder bare undervisningsmeldinger for de studentene som har fått opptak, og bare de kolonnene som er relevante for gjennomføring av undervisning. Det er imidlertid mulig å nøste disse inni hverandre for å få samme data som i FSWS-CRUD. Du må velge den spørringen som gir mest relevant filtrering for ditt bruk.

Eksempel på spørring som henter alle emnesøknader:

query EmneSoknader {
emneSoknader(
filter: {
eierOrganisasjonskode: "1234"
}
first: 10
) {
edges {
node {
id
student {
personProfil {
id
fodselsnummer
}
}
emne {
id
kode
versjonskode
navnAlleSprak {
nb
nn
en
}
}
termin {
id
arstall
betegnelse {
kode
navnAlleSprak {
nb
nn
en
}
}
}
terminnummer
soknadsstatus
}
}
}
}

Eksempel på svar:

{
"data": {
"emneSoknader": {
"edges": [
{
"node": {
"id": "MjA3OjEyMzQsMTUwLDFCQS0xMTEsMSxIw5hTVCwyMDA2LDkzOA",
"student": {
"personProfil": {
"id": "NzY6MTIzNCw5Mzg",
"fodselsnummer": "02537490368"
}
},
"emne": {
"id": "MjA6MTIzNCwxNTAsMUJBLTExMSwx",
"kode": "1BA-111",
"versjonskode": "1",
"navnAlleSprak": {
"nb": "Bevegelseslære bokmål",
"nn": "Bevegingslære",
"en": "The Science of Movement"
}
},
"termin": {
"id": "MTE2OjEyMzQsMjAwNixIw5hTVA",
"arstall": 2006,
"betegnelse": {
"kode": "HØST",
"navnAlleSprak": {
"nb": "Høst",
"nn": "Haust",
"en": "Autumn"
}
}
},
"terminnummer": 1,
"soknadsstatus": "TATT_OPP"
}
},
{
"node": {
"id": "MjA3OjEyMzQsMTUwLDFCQS0xMTEsMSxIw5hTVCwyMDA2LDk0OQ",
"student": {
"personProfil": {
"id": "NzY6MTIzNCw5NDk",
"fodselsnummer": "31587290521"
}
},
"emne": {
"id": "MjA6MTIzNCwxNTAsMUJBLTExMSwx",
"kode": "1BA-111",
"versjonskode": "1",
"navnAlleSprak": {
"nb": "Bevegelseslære bokmål",
"nn": "Bevegingslære",
"en": "The Science of Movement"
}
},
"termin": {
"id": "MTE2OjEyMzQsMjAwNixIw5hTVA",
"arstall": 2006,
"betegnelse": {
"kode": "HØST",
"navnAlleSprak": {
"nb": "Høst",
"nn": "Haust",
"en": "Autumn"
}
}
},
"terminnummer": 1,
"soknadsstatus": "TATT_OPP"
}
},
{
"node": {
"id": "MjA3OjEyMzQsMTUwLDFCQS0xMTEsMSxIw5hTVCwyMDA2LDEwNTk",
"student": {
"personProfil": {
"id": "NzY6MTIzNCwxMDU5",
"fodselsnummer": "13587890563"
}
},
"emne": {
"id": "MjA6MTIzNCwxNTAsMUJBLTExMSwx",
"kode": "1BA-111",
"versjonskode": "1",
"navnAlleSprak": {
"nb": "Bevegelseslære bokmål",
"nn": "Bevegingslære",
"en": "The Science of Movement"
}
},
"termin": {
"id": "MTE2OjEyMzQsMjAwNixIw5hTVA",
"arstall": 2006,
"betegnelse": {
"kode": "HØST",
"navnAlleSprak": {
"nb": "Høst",
"nn": "Haust",
"en": "Autumn"
}
}
},
"terminnummer": 1,
"soknadsstatus": "TATT_OPP"
}
},
{
"node": {
"id": "MjA3OjEyMzQsMTUwLDFCQS0xMTEsMSxIw5hTVCwyMDA2LDEwNzc",
"student": {
"personProfil": {
"id": "NzY6MTIzNCwxMDc3",
"fodselsnummer": "14578990047"
}
},
"emne": {
"id": "MjA6MTIzNCwxNTAsMUJBLTExMSwx",
"kode": "1BA-111",
"versjonskode": "1",
"navnAlleSprak": {
"nb": "Bevegelseslære bokmål",
"nn": "Bevegingslære",
"en": "The Science of Movement"
}
},
"termin": {
"id": "MTE2OjEyMzQsMjAwNixIw5hTVA",
"arstall": 2006,
"betegnelse": {
"kode": "HØST",
"navnAlleSprak": {
"nb": "Høst",
"nn": "Haust",
"en": "Autumn"
}
}
},
"terminnummer": 1,
"soknadsstatus": "TATT_OPP"
}
},
{
"node": {
"id": "MjA3OjEyMzQsMTUwLDFCQS0xMTEsMSxIw5hTVCwyMDA2LDE0OTg",
"student": {
"personProfil": {
"id": "NzY6MTIzNCwxNDk4",
"fodselsnummer": "29597490060"
}
},
"emne": {
"id": "MjA6MTIzNCwxNTAsMUJBLTExMSwx",
"kode": "1BA-111",
"versjonskode": "1",
"navnAlleSprak": {
"nb": "Bevegelseslære bokmål",
"nn": "Bevegingslære",
"en": "The Science of Movement"
}
},
"termin": {
"id": "MTE2OjEyMzQsMjAwNixIw5hTVA",
"arstall": 2006,
"betegnelse": {
"kode": "HØST",
"navnAlleSprak": {
"nb": "Høst",
"nn": "Haust",
"en": "Autumn"
}
}
},
"terminnummer": 1,
"soknadsstatus": "TATT_OPP"
}
},
{
"node": {
"id": "MjA3OjEyMzQsMTUwLDFCQS0xMTEsMSxIw5hTVCwyMDA2LDE1NzQ",
"student": {
"personProfil": {
"id": "NzY6MTIzNCwxNTc0",
"fodselsnummer": "23598690006"
}
},
"emne": {
"id": "MjA6MTIzNCwxNTAsMUJBLTExMSwx",
"kode": "1BA-111",
"versjonskode": "1",
"navnAlleSprak": {
"nb": "Bevegelseslære bokmål",
"nn": "Bevegingslære",
"en": "The Science of Movement"
}
},
"termin": {
"id": "MTE2OjEyMzQsMjAwNixIw5hTVA",
"arstall": 2006,
"betegnelse": {
"kode": "HØST",
"navnAlleSprak": {
"nb": "Høst",
"nn": "Haust",
"en": "Autumn"
}
}
},
"terminnummer": 1,
"soknadsstatus": "TATT_OPP"
}
},
{
"node": {
"id": "MjA3OjEyMzQsMTUwLDFCQS0xMjEsMSxIw5hTVCwyMDA3LDE0OTg",
"student": {
"personProfil": {
"id": "NzY6MTIzNCwxNDk4",
"fodselsnummer": "29597490060"
}
},
"emne": {
"id": "MjA6MTIzNCwxNTAsMUJBLTEyMSwx",
"kode": "1BA-121",
"versjonskode": "1",
"navnAlleSprak": {
"nb": "Idrett og samfunn",
"nn": null,
"en": null
}
},
"termin": {
"id": "MTE2OjEyMzQsMjAwNyxIw5hTVA",
"arstall": 2007,
"betegnelse": {
"kode": "HØST",
"navnAlleSprak": {
"nb": "Høst",
"nn": "Haust",
"en": "Autumn"
}
}
},
"terminnummer": 1,
"soknadsstatus": "TATT_OPP"
}
},
{
"node": {
"id": "MjA3OjEyMzQsMTUwLDFCQS0xMjEsMSxIw5hTVCwyMDA3LDUzOTU",
"student": {
"personProfil": {
"id": "NzY6MTIzNCw1Mzk1",
"fodselsnummer": "01510790142"
}
},
"emne": {
"id": "MjA6MTIzNCwxNTAsMUJBLTEyMSwx",
"kode": "1BA-121",
"versjonskode": "1",
"navnAlleSprak": {
"nb": "Idrett og samfunn",
"nn": null,
"en": null
}
},
"termin": {
"id": "MTE2OjEyMzQsMjAwNyxIw5hTVA",
"arstall": 2007,
"betegnelse": {
"kode": "HØST",
"navnAlleSprak": {
"nb": "Høst",
"nn": "Haust",
"en": "Autumn"
}
}
},
"terminnummer": 1,
"soknadsstatus": "TATT_OPP"
}
},
{
"node": {
"id": "MjA3OjEyMzQsMTUwLDFCQS0xMjEsMSxWw4VSLDIwMDcsOTM4",
"student": {
"personProfil": {
"id": "NzY6MTIzNCw5Mzg",
"fodselsnummer": "02537490368"
}
},
"emne": {
"id": "MjA6MTIzNCwxNTAsMUJBLTEyMSwx",
"kode": "1BA-121",
"versjonskode": "1",
"navnAlleSprak": {
"nb": "Idrett og samfunn",
"nn": null,
"en": null
}
},
"termin": {
"id": "MTE2OjEyMzQsMjAwNyxWw4VS",
"arstall": 2007,
"betegnelse": {
"kode": "VÅR",
"navnAlleSprak": {
"nb": "Vår",
"nn": "Vår",
"en": "Spring"
}
}
},
"terminnummer": 1,
"soknadsstatus": "TATT_OPP"
}
},
{
"node": {
"id": "MjA3OjEyMzQsMTUwLDFCQS0xMjEsMSxWw4VSLDIwMDcsOTQ5",
"student": {
"personProfil": {
"id": "NzY6MTIzNCw5NDk",
"fodselsnummer": "31587290521"
}
},
"emne": {
"id": "MjA6MTIzNCwxNTAsMUJBLTEyMSwx",
"kode": "1BA-121",
"versjonskode": "1",
"navnAlleSprak": {
"nb": "Idrett og samfunn",
"nn": null,
"en": null
}
},
"termin": {
"id": "MTE2OjEyMzQsMjAwNyxWw4VS",
"arstall": 2007,
"betegnelse": {
"kode": "VÅR",
"navnAlleSprak": {
"nb": "Vår",
"nn": "Vår",
"en": "Spring"
}
}
},
"terminnummer": 1,
"soknadsstatus": "TATT_OPP"
}
}
]
}
}
}

SELECTMANY Vurdkombmelding

"Vurdkombmelding" heter "vurderingsmelding" i FS GraphQL API. Du kan hente vurderingsmeldinger med rot-spørringen vurderingsmeldinger:

query Vurderingsmeldinger {
vurderingsmeldinger(
filter: { eierOrganisasjonskode: "1234" }
first: 3
) {
nodes {
id
vurderingsenhet {
emne {
kode
versjonskode
}
vurderingsperiode {
arstall
navnAlleSprak {
nb
}
}
}
student {
studentnummer
personProfil {
fodselsnummer
navn {
fornavn
etternavn
}
}
}
}
}
}

Eksempel på svar:

{
"data": {
"vurderingsmeldinger": {
"nodes": [
{
"id": "MTQ0OjEyMzQsODgzLDE4NSxFWFBISUwsICxPQkwxLDE5OTYsMDY",
"vurderingsenhet": {
"emne": {
"kode": "EXPHIL",
"versjonskode": " "
},
"vurderingsperiode": {
"arstall": 1996,
"navnAlleSprak": {
"nb": "06"
}
}
},
"student": {
"studentnummer": "000114",
"personProfil": {
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Njål",
"etternavn": "Øye"
}
}
}
},
{
"id": "MTQ0OjEyMzQsODgzLDE4NSxFWFBISUwsICxTUywxOTk2LDA2",
"vurderingsenhet": {
"emne": {
"kode": "EXPHIL",
"versjonskode": " "
},
"vurderingsperiode": {
"arstall": 1996,
"navnAlleSprak": {
"nb": "06"
}
}
},
"student": {
"studentnummer": "000114",
"personProfil": {
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Njål",
"etternavn": "Øye"
}
}
}
},
{
"id": "MTQ0OjEyMzQsODgzLDE4NSxFWFBISUwsICxTUy0xLDE5OTYsMDY",
"vurderingsenhet": {
"emne": {
"kode": "EXPHIL",
"versjonskode": " "
},
"vurderingsperiode": {
"arstall": 1996,
"navnAlleSprak": {
"nb": "06"
}
}
},
"student": {
"studentnummer": "000114",
"personProfil": {
"fodselsnummer": "XXXXXXXXXXX",
"navn": {
"fornavn": "Njål",
"etternavn": "Øye"
}
}
}
}
]
}
}
}

Filtrering: vurderingsmeldinger støtter filtrering på emner, vurderingsenheter, vurderingsoppbygningsdeler, studenterVedLarested, oppmeldtITerminer og fodselsnumre. For direkte oppslag kan du bruke vurderingsmeldingerGittLegacyIder.

UPSERT

For å migrere fra UPSERT i FSWS-CRUD til FS GraphQL API, må du utforske APIet for å finne en passende mutasjon. Noen mutasjoner vil være ganske like UPSERT i FSWS-CRUD, mens andre vil være mer komplekse. FS GraphQL API har enkelte mutasjoner som bruker UPSERT-mønsteret, men i mange tilfeller skilles det på INSERT og UPDATE. Mange mutasjoner har også innebygde forretningsregler og gjør oppdateringer i flere tabeller samtidig. Ikke alle mutasjoner i FSWS-CRUD har en direkte motpart i FS GraphQL API. Kontakt fs-support@sikt.no hvis du ikke finner en mutasjon som passer ditt behov.

UPSERT Fagperson

Det finnes flere mutasjoner som kan brukes for å opprette eller oppdatere en fagperson i FS GraphQL API. For oversikt se Tilgangsstyring for studenter og ansatte i prosesskatalogen.

UPSERT Kullklassestudent

UPSERT Kullklassestudent tilsvarer Mutation.fordelStudenterIKlasser i FS GraphQL API. Mutasjonen oppretter klassemedlemskap for program-studieretter. Eventuelle eksisterende klassemedlemskap blir ikke endret.

For å finne IDene du trenger:

  • kullklasseId: Hent klasser med rot-spørringen klasser, filtrert på f.eks. studieprogram og kull.
  • programStudierettId: Hent program-studieretter med rot-spørringen programStudieretter, eller via studenterprogramStudieretter.
mutation FordelStudenterIKlasser {
fordelStudenterIKlasser(input: [
{
kullklasseId: "NTk6MTIzNCxBTFJFQUwtSFNULDE5OTgsSMOYU1QsQg"
programStudierettId: "MTU0OjEyMzQsOTA2LEFMUkVBTC1IU1QsMTk5OCxWw4VS"
}
]) {
klassemedlemskap {
id
klasse {
id
}
}
errors {
... on UgyldigInput {
message
path
}
}
}
}

Respons:

{
"data": {
"fordelStudenterIKlasser": {
"klassemedlemskap": [
{
"id": "NjA6MTIzNCw5MDYsQUxSRUFMLUhTVCxWw4VSLDE5OTgsSMOYU1QsMTk5OCxC",
"klasse": null
}
],
"errors": null
}
}
}

UPSERT Person

UPSERT Person brukes i stor grad til å opprette studenter og fagpersoner. Se under UPSERT Fagperson og UPSERT Studieprogramstudent for mer informasjon. Vi har også en rekke mutasjoner for å oppdatere persondata. Her er noen eksempler:

  • Mutation.angiBankkontonummerForPersonProfil
  • Mutation.angiFeideBrukereForPersonProfiler
  • Mutation.angiMaalformForPersonProfiler
  • Mutation.angiStatsborgerskap
  • Mutation.endreFolkergistrerteAdresser
  • Mutation.endrePersonProfilNavn

UPSERT Personakseptanse

"Personakseptanse" heter "Samtykke" i FS GraphQL API. Du kan registrere samtykke med Mutation.registrerSamtykkeForPersonProfiler og trekke samtykke med Mutation.trekkSamtykkerForPersonProfiler. Begge mutasjonene er eksperimentelle.

For å finne IDene du trenger:

  • id: Personprofil-ID. Hent med rot-spørringen personProfiler, eller personProfilerGittFodselsnumre / personProfilerGittFeideBrukere for direkte oppslag.
  • samtykkeKravId: Hent tilgjengelige samtykkekrav med rot-spørringen samtykkekrav.
mutation RegistrerSamtykke {
registrerSamtykkeForPersonProfiler(input: [
{
id: "NzY6MTIzNCw4ODE"
samtykkeKravId: "MToxMjM0LEVTQw"
}
]) {
samtykker {
id
svartidspunkt
}
errors {
... on UgyldigInput {
message
path
}
}
}
}

Respons:

{
"data": {
"registrerSamtykkeForPersonProfiler": {
"samtykker": [
{
"id": "ODM6MTIzNCw4ODEsRVND",
"svartidspunkt": "2026-03-02T17:11:53.355+01:00"
}
],
"errors": null
}
}
}

svartidspunkt kan oppgis valgfritt i input for å angi når samtykket ble gitt.

UPSERT Persontelefon

UPSERT Persontelefon tilsvarer Mutation.endreTelefonnumre i FS GraphQL API (eksperimentell). Mutasjonen tar inn person-ID, telefonnummertype (MOBIL eller HJEM), landnummer og nummer.

For å finne IDen du trenger:

  • personId: Personprofil-ID. Hent med rot-spørringen personProfiler, eller personProfilerGittFodselsnumre / personProfilerGittFeideBrukere for direkte oppslag.
mutation EndreTelefonnumre {
endreTelefonnumre(input: [
{
personId: "NzY6MTIzNCw4ODE"
telefonnummertype: MOBIL
landnummer: "+47"
nummer: "98765432"
}
]) {
telefonnumre {
landnummer
nummer
}
errors {
... on UgyldigInput {
message
path
}
}
}
}

Respons:

{
"data": {
"endreTelefonnumre": {
"telefonnumre": [
{
"landnummer": "+47",
"nummer": "98765432"
}
],
"errors": null
}
}
}

UPSERT Soknad

Foreløpig ikke støttet. Kontakt fs-support@sikt.no og beskriv behovet dersom du trenger å opprette eller oppdatere søknader i FS GraphQL API.

UPSERT Soknadsalternativ

Foreløpig ikke støttet. Kontakt fs-suport@sikt.no og beskriv behovet dersom du trenger å opprette eller oppdatere søknadsalternativer i FS GraphQL API.

UPSERT Student

UPSERT Student brukes i stor grad til å opprette studenter som har fått opptak via et eksternt opptakssystem.

UPSERT Studieprogramstudent

UPSERT Studieprogramstudent brukes i stor grad til å opprette studenter som har fått opptak via et eksternt opptakssystem. I FSWS-CRUD må du først opprette en person med UPSERT Person, deretter en student via UPSERT Student, og til slutt tildele studieretten med UPSERT Studieprogramstudent. Deretter kan du bruke UPSERT Kullklassestudent for å fordele studenter i klasser og UPSERT Persontelefon for å registrere telefonnumre. I FS GraphQL API har vi samlet alle disse operasjonene i én mutasjon Mutation.opprettStudenter. Vi har også en mutasjon som kan brukes for å opprette studieretter for studenter som allerede finnes i FS: Mutation.taOppStudenterTilStudieprogrammer For oversikt se Tildele Studierett i prosesskatalogen.

UPSERT Undervisningsmelding

UPSERT Undervisningsmelding tilsvarer Mutation.registrerEmnesoknader i FS GraphQL API (eksperimentell). Mutasjonen registrerer emnesøknader for studenter. Dersom emnet har direkte oppmelding, vil studenten også få studierett til emnet. Merk at i FS GraphQL API er undervisningsmeldinger splittet i emnesøknader og emnestudieretter (se SELECTMANY Undervisningsmelding over).

For å finne IDene du trenger:

  • studentVedLarested: Student-ID. Hent med rot-spørringen studenter, eller studenterGittFodselsnumre / studenterGittStudentnumre for direkte oppslag.
  • undervisningsenhet: Undervisningsenhet-ID. Hent med rot-spørringen undervisningsenheter.
mutation RegistrerEmnesoknader {
registrerEmnesoknader(input: [
{
studentVedLarested: "OTk6MTIzNCw4ODM"
undervisningsenhet: "MTIxOjEyMzQsMTUwLEFLVDIwMi0xLDEsMjAxMSxWw4VSLDE"
}
]) {
emnesoknader {
id
soknadsstatus
emne {
kode
}
}
errors {
... on UgyldigInput {
message
path
}
}
}
}

Respons:

{
"data": {
"registrerEmnesoknader": {
"emnesoknader": [
{
"id": "MjA3OjEyMzQsMTUwLEFLVDIwMi0xLDEsVsOFUiwyMDExLDg4Mw",
"soknadsstatus": "SOKNAD_REGISTRERT",
"emne": {
"kode": "AKT202-1"
}
}
],
"errors": null
}
}
}

UPSERT Vurdkombmelding

UPSERT Vurdkombmelding tilsvarer Mutation.meldStudenterTilVurdering i FS GraphQL API (eksperimentell). Mutasjonen melder studenter til vurdering. Du kan også trekke vurderingsmeldinger med Mutation.trekkVurderingsmeldinger.

For å finne IDene du trenger:

  • studentVedLarestedId: Student-ID. Hent med rot-spørringen studenter, eller studenterGittFodselsnumre / studenterGittStudentnumre for direkte oppslag.
  • vurderingsenhetId: Vurderingsenhet-ID. Hent med rot-spørringen vurderingsenheter.
mutation MeldStudenterTilVurdering {
meldStudenterTilVurdering(input: [
{
studentVedLarestedId: "OTk6MTIzNCw4ODM"
vurderingsenhetId: "MTM5OjEyMzQsQVMsMTg1LEVDT04xMjMwLDEsMjAwMywwNg"
}
]) {
vurderingsmeldinger {
id
student {
studentnummer
}
vurderingsenhet {
emne {
kode
}
}
}
}
}

Merk: MeldStudenterTilVurderingPayload har ikke et errors-felt. Eventuelle feil returneres som GraphQL-feil i errors-arrayet på toppnivå i responsen.

Respons:

{
"data": {
"meldStudenterTilVurdering": {
"vurderingsmeldinger": [
{
"id": "MTQ0OjEyMzQsODgzLDE4NSxFQ09OMTIzMCwxLEFTLDIwMDMsMDY",
"student": {
"studentnummer": "000114"
},
"vurderingsenhet": {
"emne": {
"kode": "ECON1230"
}
}
}
]
}
}
}