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.
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
Eksempel kommer
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
Eksempel kommer
SELECTMANY Persontelefon
Eksempel kommer
SELECTMANY Soknad
Eksempel kommer
SELECTMANY Soknadsalternativ
Eksempel kommer
SELECTMANY Student
Eksempel kommer
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 undervising. 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
Eksempel kommer
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
Eksempel kommer
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.angiBankkontonummerForPersonProfilMutation.angiFeideBrukereForPersonProfilerMutation.angiMaalformForPersonProfilerMutation.angiStatsborgerskapMutation.endreFolkergistrerteAdresserMutation.endrePersonProfilNavn
UPSERT Personakseptanse
Eksempel kommer
UPSERT Persontelefon
Eksempel kommer
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
Eksempel kommer
UPSERT Vurdkombmelding
Eksempel kommer