Fra FSWS-BRIS til FS GraphQL API
FSWS-BRIS er under utfasing, og funksjonaliteten er nå erstattet av FS GraphQL API. BRIS-tjenesten tilbyr studentdata til studentsamskipnader og andre systemer som trenger studentinformasjon, inkludert:
- Henting av alle studenter (full eksport)
- Inkrementell synkronisering basert på endringer
- Oppslag på enkeltstudenter
Under gir vi eksempler for hvert enkelt endepunkt. GraphQL gir imidlertid stor fleksibilitet når det gjelder hvordan du henter dataene. Vi anbefaler at du bruker tid på å sette sammen spørringer som passer ditt behov.
Merk: FS GraphQL API bruker base64-enkodede sammensatte nøkler som IDer. Hvis du trenger å finne StudentVedLarested-ID fra et studentnummer eller fødselsnummer, se eksemplene under.
Oversikt over endepunkter og erstatninger
| FSWS-BRIS endepunkt | FS GraphQL API erstatning |
|---|---|
GET /bris/sia/alle | Query.semesterregistreringer eller Query.studenterGittStudentnumre |
GET /bris/sia/alle/endringer/:timestamp | Query.studenthendelser |
GET /bris/sia/alle/opprettet/:timestamp | Query.studenthendelser med hendelsestype STARTET_PA_STUDIEPROGRAM |
GET /bris/sia/student/:studentnr | Query.studenterGittStudentnumre |
GET /bris/samskipnad/studenter/endringer | Query.studenthendelser |
GET /bris/sia/student/:studentnr - Hent enkelt student
For å hente data om en enkelt student basert på studentnummer, bruk studenterGittStudentnumre.
FSWS-BRIS XML-respons:
<bris_studenter>
<student>
<studentnr>12345678</studentnr>
<navn>
<fornavn>Ola</fornavn>
<etternavn>Nordmann</etternavn>
</navn>
<adresse>
<co>c/o Hansen</co>
<gate>Storgata 1</gate>
<postnr>0150</postnr>
<sted>OSLO</sted>
<land>NO</land>
</adresse>
<telefon>
<mobil>47-91234567</mobil>
<hjem>47-22334455</hjem>
</telefon>
<epost>ola@example.com</epost>
<fodselsdato>01-01-80</fodselsdato>
<dato_fodt>01-01-1980</dato_fodt>
<semesterregistrering>
<sist_bet_semavgift>20251</sist_bet_semavgift>
<fritak_semavgift>N</fritak_semavgift>
</semesterregistrering>
</student>
</bris_studenter>
FS GraphQL API spørring:
query HentStudent {
studenterGittStudentnumre(
eierOrganisasjonskode: "1234"
studentnumre: ["12345678"]
) {
studentnummer
personProfil {
navn {
fornavn
etternavn
}
fodselsdato
folkeregistrertAdresse {
co
gate
postnummerOgSted
land
}
mobilTelefon {
landnummer
nummer
}
privatTelefon {
landnummer
nummer
}
privatEpost
}
semesterregistreringer {
nodes {
termin {
arstall
betegnelse {
kode
}
}
harBetaltSemesteravgiftV2
betalingsform {
navnAlleSprak {
und
}
}
}
}
}
}
Eksempel på respons:
{
"data": {
"studenterGittStudentnumre": [
{
"studentnummer": "12345678",
"personProfil": {
"navn": {
"fornavn": "Ola",
"etternavn": "Nordmann"
},
"fodselsdato": "1980-01-01",
"folkeregistrertAdresse": {
"co": "c/o Hansen",
"gate": "Storgata 1",
"postnummerOgSted": "0150 OSLO",
"land": "Norge"
},
"mobilTelefon": {
"landnummer": "47",
"nummer": "91234567"
},
"privatTelefon": {
"landnummer": "47",
"nummer": "22334455"
},
"privatEpost": "ola@example.com"
},
"semesterregistreringer": {
"nodes": [
{
"termin": {
"arstall": 2025,
"betegnelse": {
"kode": "VAR"
}
},
"harBetaltSemesteravgiftV2": true,
"betalingsform": {
"navnAlleSprak": {
"und": "Ordinær"
}
}
}
]
}
}
]
}
}
GET /bris/sia/alle - Full eksport av alle studenter
For å hente alle studenter kan du bruke semesterregistreringer med paginering.
Dette gir deg tilgang til alle semesterregistrerte studenter.
Viktige forskjeller:
- GraphQL bruker cursor-basert paginering
- Du må hente data i batches ved å bruke
afterogfirstparametere - Responsen er JSON i stedet for XML-strøm
Eksempel på spørring:
query HentAlleStudenter($after: String) {
semesterregistreringer(
filter: {
eierOrganisasjonskode: "1234"
terminkoder: [{ arstall: 2025, betegnelse: VAR }]
harBetaltSemesteravgift: true
}
first: 100
after: $after
) {
pageInfo {
hasNextPage
endCursor
}
totalCount
nodes {
student {
studentnummer
personProfil {
navn {
fornavn
etternavn
}
fodselsdato
folkeregistrertAdresse {
co
gate
postnummerOgSted
land
}
mobilTelefon {
landnummer
nummer
}
privatEpost
}
semesterregistreringIInnevarendeSemester {
harBetaltSemesteravgiftV2
erSemesterregistrert
}
}
}
}
}
For å hente alle studenter, gjør gjentatte kall med after satt til endCursor fra forrige respons, inntil hasNextPage er false.
GET /bris/sia/alle/endringer/:timestamp - Inkrementell synkronisering
For å hente studenter som er endret siden et gitt tidspunkt, bruk studenthendelser. Dette gir deg et hendelsesbasert system som er mer presist enn timestamp-basert filtrering.
Viktige forskjeller:
- Hendelsesbasert i stedet for timestamp-basert
- Du kan filtrere på spesifikke hendelsestyper
- Gir mer presis informasjon om hva som er endret
Relevante hendelsestyper for BRIS-data:
ENDRET_NAVN- NavneendringENDRET_FOLKEREGISTRERT_ADRESSE- Folkeregistrert adresse endret (tilsvarer hjemstedsadresse i BRIS)ENDRET_POSTADRESSE- Postadresse endretENDRET_MOBILNUMMER- Mobilnummer endretENDRET_EPOSTADRESSE- E-post endretSEMESTERREGISTRERT- Student har semesterregistrert segSEMESTERREGISTRERING_UGYLDIGGJORT- Semesterregistrering ugyldiggjortSEMESTERREGISTRERING_STATUS_BET_OK- Semesteravgift betaltSTARTET_PA_STUDIEPROGRAM- Student startet på studieprogramSLUTTET_PA_STUDIEPROGRAM- Student sluttet på studieprogram
Eksempel på spørring:
query HentStudentendringer($after: String) {
studenthendelser(
filter: {
eierOrganisasjonskode: "1234"
hendelsestype: [
ENDRET_NAVN
ENDRET_FOLKEREGISTRERT_ADRESSE
ENDRET_MOBILNUMMER
ENDRET_EPOSTADRESSE
SEMESTERREGISTRERT
SEMESTERREGISTRERING_STATUS_BET_OK
]
}
first: 100
after: $after
) {
pageInfo {
hasNextPage
endCursor
}
nodes {
hendelsestype
tidspunkt
student {
studentnummer
personProfil {
navn {
fornavn
etternavn
}
folkeregistrertAdresse {
co
gate
postnummerOgSted
land
}
mobilTelefon {
landnummer
nummer
}
privatEpost
}
semesterregistreringIInnevarendeSemester {
harBetaltSemesteravgiftV2
erSemesterregistrert
}
}
}
}
}
Eksempel på respons:
{
"data": {
"studenthendelser": {
"pageInfo": {
"hasNextPage": true,
"endCursor": "eyJjdXJzb3IiOiIxMjM0NTY3ODkwIn0="
},
"nodes": [
{
"hendelsestype": "SEMESTERREGISTRERT",
"tidspunkt": "2025-01-15T10:30:00Z",
"student": {
"studentnummer": "12345678",
"personProfil": {
"navn": {
"fornavn": "Ola",
"etternavn": "Nordmann"
},
"folkeregistrertAdresse": {
"co": null,
"gate": "Storgata 1",
"postnummerOgSted": "0150 OSLO",
"land": "Norge"
},
"mobilTelefon": {
"landnummer": "47",
"nummer": "91234567"
},
"privatEpost": "ola@example.com"
},
"semesterregistreringIInnevarendeSemester": {
"harBetaltSemesteravgiftV2": true,
"erSemesterregistrert": true
}
}
}
]
}
}
}
Les mer om hendelser her: FS GraphQL API: Hendelser
GET /bris/samskipnad/studenter/endringer - Samskipnad-eksport
Dette endepunktet returnerer studenter basert på to kriterier:
-
Studenter med ny studierett - fra
Studieprogramstudenthvor:- Studierett tildelt innen siste 60 dager (eller siden siste kjøring)
- Studierett er gyldig (ikke utløpt)
- Studentstatus er aktiv (
Status_Aktiv_Student = 'J')
-
Studenter som har betalt semesteravgift - fra
Registerkorthvor:- Betaling OK (
Status_Bet_OK = 'J') - Inneværende semester
- Betalingsdato etter siste kjøring (for inkrementell eksport)
- Betaling OK (
For å oppnå tilsvarende funksjonalitet i GraphQL, bruk studenthendelser med relevante hendelsestyper:
Eksempel på spørring for samskipnader:
query HentSamskipnadEndringer($after: String) {
studenthendelser(
filter: {
eierOrganisasjonskode: "1234"
hendelsestype: [
STARTET_PA_STUDIEPROGRAM
PROGRAM_STUDIERETT_OPPRETTET
SEMESTERREGISTRERING_STATUS_BET_OK
]
}
first: 100
after: $after
) {
pageInfo {
hasNextPage
endCursor
}
nodes {
hendelsestype
tidspunkt
student {
studentnummer
personProfil {
navn {
fornavn
etternavn
}
fodselsdato
folkeregistrertAdresse {
co
gate
postnummerOgSted
land
}
}
programStudieretter(filter: { erAktiv: true }) {
nodes {
studierettperiode {
fraDato
tilDato
}
studentstatus {
kode
girAktivStudierett
}
}
}
semesterregistreringIInnevarendeSemester {
harBetaltSemesteravgiftV2
erSemesterregistrert
betaltSemesteravgiftDato
}
}
}
}
}
Viktig: BRIS-endepunktet returnerer også følgende data:
- Sist betalte semesteravgift (år + terminkode)
- Om studenten har fritak fra semesteravgift
- Registreringsstatus
- Stedskode (basert på stemmerettighet)
Disse dataene kan hentes via semesterregistreringer og programStudieretter i GraphQL.
Feltmapping: FSWS-BRIS til FS GraphQL API
| FSWS-BRIS felt | FS-database (kilde) | FS GraphQL API felt |
|---|---|---|
studentnr | Student.Studentnr_Tildelt | StudentVedLarested.studentnummer |
navn/fornavn | Person.Fornavn | PersonProfil.navn.fornavn |
navn/etternavn | Person.Etternavn | PersonProfil.navn.etternavn |
adresse/co | Person.Adrlin1_Hjemsted | PersonProfil.folkeregistrertAdresse.co |
adresse/gate | Person.Adrlin2_Hjemsted | PersonProfil.folkeregistrertAdresse.gate |
adresse/postnr | Person.Postnr_Hjemsted | PersonProfil.folkeregistrertAdresse.postnummerOgSted (inneholder postnr + sted) |
adresse/sted | Person.Adrlin3_Hjemsted (sted ekstrahert) | PersonProfil.folkeregistrertAdresse.postnummerOgSted (inneholder postnr + sted) |
adresse/land | Person.Adresseland_Hjemsted | PersonProfil.folkeregistrertAdresse.land |
telefon/mobil | PersonTelefon (MOBIL) | PersonProfil.mobilTelefon.nummer + landnummer |
telefon/hjem | PersonTelefon (HJEM) | PersonProfil.privatTelefon.nummer + landnummer |
epost | Person.Emailadresse | PersonProfil.privatEpost |
fodselsdato | Student.Fodselsdato (format: DD-MM-YY) | PersonProfil.fodselsdato (ISO 8601: YYYY-MM-DD) |
dato_fodt | Person.Dato_Fodt (format: DD-MM-YYYY) | PersonProfil.fodselsdato (ISO 8601: YYYY-MM-DD) |
semesterregistrering/sist_bet_semavgift | Registerkort.Arstall + Terminkode | Semesterregistrering.termin.arstall + termin.betegnelse.kode |
semesterregistrering/fritak_semavgift | Registerkort.Betformkode = 'FRITATT' | Semesterregistrering.betalingsform (sjekk type) |
Alternative oppslag
Oppslag basert på fødselsnummer
Hvis du har fødselsnummer i stedet for studentnummer:
query HentStudentMedFodselsnummer {
studenterGittFodselsnumre(
eierOrganisasjonskode: "1234"
fodselsnumre: ["01018012345"]
) {
studentnummer
personProfil {
navn {
fornavn
etternavn
}
fodselsdato
}
}
}
Kontakt oss for hjelp ved behov
Kontakt kontakt@sikt.no dersom du trenger hjelp til å komme i gang, eller underveis i migreringen.