Norske kommuner har mengder av informasjon om sine innbyggere. Denne informasjonen er spredd rundt i arkiver, fagsystemer, dokumentlagre og eksterne skyløsninger. Fiks Innsyn lagrer metadata som beskriver denne informasjonen, og gjør den tilgjengelig for innbyggeren via en kraftig søkemotor.
En kommune kan bruke Fiks Innsyn for å gjøre kommunal informasjon (forsendelser, byggesaker, eiendommer, fakturaer osv) tilgjengelig for innbyggere, endten på min.kommune.no eller i kommunens eksisterende løsninger.
Uansett er første steg å sørge for metadata som beskriver informasjonen finnes i søkemotoren. Dette gjøres ved å legge til datakilder i konfigurasjonen av innsyntjenesten på forvaltning.fiks.ks.no. i form av integrasjoner. Dette kan være “nøkkelklare” integrasjoner levert av KS eller tredjepartsleverandører, for eksempel forsendelser fra SvarUt eller byggesaker fra GeoMatikk, eller integrasjoner kommunen lager selv. I skjermbildet over har en kommune lagt til SvarUt integrasjonen som kilde for innsyn, som gjør at alle forsendelser fra SvarUt-avsendere spesifisert i integrasjonens konfigurasjon blir tilgjengelig i “Post fra kommunen” på minside.kommune.no.
Hvis kommunen benytter min.kommune.no er nå alt klart: innloggede innbyggere vil se sine meldinger i “Post fra kommunen” og andre innsyn-drevede tjenester.
Hvis kommunen benytter en egen minside-løsning må også søket mot Fiks Innsyn gjøres via en integrasjon, som legges til på samme måte som datakilde-integrasjonene over. I noen tilfeller vil det finnes nøkkelklare leverandør-integrasjoner for dette, i andre må kommunen lage en egen integrasjon som leverandøren kan benytte. Kontakt leverandør for å avklare dette.
Tjenesten består av tre hovedkomponenter:
Søk i innsyn gjøres via applikasjonene på min.kommune.no, eller direkte via et REST grensesnitt. Uansett baserer autentisering seg på innlogging via ID-Porten. En autentisert innbygger autoriserers for å lese en melding på en av fire måter:
Søket er i hovedsak basert på fri-tekst, og vil også da kompenserer for stavefeil, bøyeform eller orddeling. Noe filtrering er mulig (for eksempel på dato, avsender-organisasjon osv). Alle søk er også filtrert på innloggingsnivå. Et søk gjort med innlogging på nivå tre vil ikke returnere grupper som er satt til nivå fire, uavhengig av om disse gruppene traff på søket. Hvilket innloggingsnivå som kreves for å se hver enkelt melding er bestemt av interasjonen som indekserte meldingen i Innsyn.
Søkeresultatet scores og sorteres basert på relevans: nye meldinger scores høyere enn gamle, uleste dokumenter høyere enn de du har lest, ubetalte faktura høyere enn de du har betalt, og så videre. Det er også mulig å få resultatet sortert på dato.
Søkemotoren inneholder utelukkende metadata, ikke selve dokumentet. Om meldingen skal peke til et dokument, bilde eller annen fil gjøres dette i form av en lenke: denne kan for eksempel peke til en fil i Fiks Dokumentlager, en sak i et kommunalt filarkiv, eller en annen tjeneste. Så lenge disse støtter innlogging gjennom ID-Porten vil nedlastingen oppleves sømløst av innbygger.
Noen grunnleggende prinsipper for forvalting av meldinger i innsyn:
Meldinger til Innsyn indekseres gjennom Innsyn Index API Versjon 2
Merk at JSON-metadata må Base64 encodes før det sendes til APIet, dette hovedsaklig for å unngå JSON escape problematikk. Gyldige verdier for “versjon”-feltet er definert i tabellen under.
Meldingstype | Versjon | |
---|---|---|
Faktura V1 | FAKTURA_V1 | Spec |
Innsendt Skjema V1 | INNSENDT_SKJEMA_V1 | Spec |
Skjemakladd V1 | SKJEMAKLADD_V1 | Spec |
Mappe V1 | MAPPE_V1 | Spec |
Journalpost V1 | JOURNALPOST_V1 | Spec |
Alle JSON-schema definisjoner finnes i følgende GitHub repository: ks-no / fiks-innsyn-json-schema. Disse kan også brukes til å generere modeller for deres valgte språk. Det finnes allerede en Maven-modul for Java-brukere som er deployet til Maven Central. Mer informasjon rundt dette finnes i prosjektets README på GitHub.
Versjon 1 av innsyn index støttes fortsatt for eksisterende integrasjoner, men bør ikke benyttes for nyutvikling.
Hovedforskjellen fra versjon 2 er at metadata for meldingstypene er definert i API-speccen, i stedet for eksterne JSON-schemas.
Indekseringstjenesten lar integrasjoner opprette meldinger, eller fjerne / endre meldinger som alt er opprettet. Hver melding har en meldingId som settes av integrasjonen. Hvis man indekserer to meldinger på samme melding-id vil den første meldingen bli overskrevet av den andre.
Når man lager en integrasjon mot indekseringstjenesten er det viktig å være bevisst på at Innsyn bør betraktes som en cache: man bør ikke forvente at meldingene man laster opp vil ligge der til evig tid: en forvalter med admin-privilegier på innsyn-tjenesten kan for eksempel når som helst slette meldinger. Hvis man ønsker en robust løsning er det derfor viktig at man støtter replay: muligheten til å re-indexere alle meldinger til Innsyn.
De vanlige autentiseringsreglene for Fiks-plattformen gjelder for denne tjenesten, men i tilegg må integrasjonen har rett til å indeksere på vegne av fiks organisasjonen som er satt som eier den aktuelle meldingen.
Endepunktet støtter batch av opptil 5000 elementer, og integrasjonsutviklere anbefales å benytte denne funksjonaliteten, da det skaper vesentlig mindre trykk på systemet. Merk at indeksering ikke er en atomisk transaksjon: deler av elementene i en batch kan bli indeksert selv om andre feiler.
En indekseringsoperasjon kan ha følgende utfall:
Gjennomføring av batch-operasjoner skjer synkront fra ståstedet til en bruker av tjenesten: responsen blir ikke sendt før batchen er gjennomført. Dermed vil man kunne vite at en gruppe opprettet i batch 1 eksisterer når batch 2 gjennomføres, så lenge disse utføres sekvensielt.
{
"meldinger": [
{
"meldingId": "e59cec27-0192-432a-a285-7efb69e5a993",
"sikkerhetsniva": 3,
"eksponertFor": {
"identifikatorType": "FODSELSNUMMER",
"verdi": "46832685061"
},
"fiksOrganisasjonId": "620a05f6-2d78-4b88-b07e-85368bc8a03c",
"eksternRef": "8cc734ad-9e74-4a1a-9666-599d6121a061",
"versjon": "JOURNALPOST_V1",
"tilgjengeligTil": "2023-07-02T12:03:44.347302401+02:00",
"meldingMetadata": "eyJqb3VybmFscG9zdHR5cGUiOiJVIiwidGl0dGVsIjoiMzhkZTQ5MDMtOWU4Mi00NDc3LTlkNGQtOWQ5ZGIwNzBkZmRkIn0="
},
{
"meldingId": "5b557f4a-11e8-41aa-b04e-e0f03af577cc",
"sikkerhetsniva": 3,
"eksponertFor": {
"identifikatorType": "MATRIKKELNUMMER",
"verdi": "2634-155/298/803/176"
},
"fiksOrganisasjonId": "98f33c17-35c9-449b-be58-06e1ce2fef8b",
"versjon": "MAPPE_V1",
"meldingMetadata": "eyJ0eXBlIjoiQllHR0VTQUsiLCJ0aXR0ZWwiOiJkNGYzYjQ2ZC0zZDNlLTQ2NjQtOWQ3OC1kMTQ0ZDQ0Mzg2MmEifQ=="
}
]
}
meldingMetadata-feltene inneholder følgende JSON som har blitt Base64 encodet:
Journalpost:
{
"journalposttype": "U",
"tittel": "38de4903-9e82-4477-9d4d-9d9db070dfdd"
}
Mappe:
{
"type": "BYGGESAK",
"tittel": "d4f3b46d-3d3e-4664-9d78-d144d443862a"
}
Eksponert for i en indekseringsforespørsel angir hvem som skal kunne se meldingen. Dette kan ha en av følgende verdier:
Det er viktig at man har et bevisst forhold til hvem meldinger eksponeres for, spesielt når man eksponerer for en matrikkelenhet, da endringer i eierskap vil medføre at nye personer får tilgang til meldingen. Man bør derfor aldri eksponere sensitive data via denne metoden.
Over tid vil json-modellen for en melding endrer seg. Innsyn løser dette ved at alle metadatamodellene er versjonert, for eksempel som Forsendelse V1, Forsendelse V2 osv. Alle tidligere versjoner er støttet, så om din integrasjon indekserer V1 av forsendelser i dag vil dette fortsette å virke selv om V2 blir gjort tilgjengelig.
Hvis man ønsker å oppgradere eksisterende meldinger til ny versjon, for eksempel for å benytte felt som er lagt til i oppdateringen, gjøres dette gjennom replay; alle meldinger re-indekseres på eksisterende meldingId med ny versjon av metadata.
Indekserte meldinger kan fjernes ved å benytte slette-API. Her gjelder de samme reglene som over: en integrasjon må være autorisert for å handle på vegne av en ansvarlig organisasjon for at sletting kan gjennomføres, og en integrasjon kan bare slette meldinger den selv har indeksert.
Merk at sletting på samme måte som indeksering ikke gjennomføres i en atomisk transaksjon: deler av meldingene i batchen kan bli slettet selv om andre feiler.
Mange meldingstyper vil referere til filer i eksterne systemer, som for eksempel dokumenter i “Forsendelse” typen. Innsyn har i seg selv ikke noe forhold til binære filer, og betrakter dem utelukkende som en lenke. Hvis filene allerede er tilgjengelig i et ID-Porten kompatibelt filarkiv trenger man ikke å laste disse opp på nytt, hvis man ikke har en slik tjeneste fra før kan man benytte Fiks Dokumentlager til dette.
Hvis kommunen benytter min.kommune.no er det ikke behov for å utvikle noen egne integrasjoner for søk, men det kan ofte være aktuelt å søke i Innsyn fra annen løsning, for eksempel for å få “Post fra kommunen” fram på kommunens eksisterende minside-løsning.
Innsyn tilbyr følgende søke-api’er for eksterne integrasjoner:
I tillegg til søke-apier er det mulig å benytte Innsyn Oppslag api for å hente meldinger. Gjennom dette api’et kan man hente en enkeltmelding (basert på melding-id), alle meldinger som har samme korrelasjon-id, eller alle meldinger som er barn av en spesifisert forelder-melding.
Integrasjonen som skal utføre søk eller oppslag må benytte integrasjon-person autentisering, dvs at de må fremvise den innloggede innbyggers ID-Porten token i kombinasjon med integrasjonId og Integrasjonpassord. I tillegg må integrasjonen ha “innsyn søk” privilegiet på den aktuelle Fiks-organisasjonen (tildelse via Innsyn konfigurasjon på forvaltning.fiks.ks.no). Søkeresultatet vil være begrenset til meldinger autorisert for den innloggede personen og eid av den aktuelle Fiks-organisasjonen.
Meldinger i Innsyn er versjonert, for eksempel som “ForsendelseV1” eller “ForsendelseV2”, og nye versjoner av en melding blir lagt til uten forvarsel.
Det er derfor viktig at man spesifisere “aksepterte-versjoner” (se api-spek’ene over) når man gjør et søk - en nyere versjon av en melding vil da bli nedgradert til den spesifiserte versjonen. Hvis man ikke gjør dette vil man få det som til enhver tid er nyeste versjon, hvor endringer kan brekke parsing av JSON metadata.
Innsyn tilbyr støtte for å søke på vegne av en organisasjon hvor man innhar rollen “Post/Arkiv” i Altinn. Denne settes som en query-param på søket (se api-spekk’er over). Det vil da bli sjekket om personen faktisk innehar denne fullmakten, og hvis dette er tilfellet vil søkeresultatet inneholde meldinger som er eksponert for organisasjonen eller matrikkelenheter organisasjonen eier heller enn personen som er autentisert gjennom ID-Porten tokenent.
“Legacy søk” api’et støtter den samme funksjonaliteten gjennom en ON_BEHALF_OF http-header, men et anbefales å ikke benytte denne metoden ved nyutvikling.