1. Overordnet om Aa-registeret

Denne dokmentasjonen er skrevet i et .adoc dokument, hvordan man formaterer tekst i dette formatet er beskrevet her

2. Data i Aa-registeret (domene)

2.1. Arbeidsforholdsopplysninger

Aa-registeret består av følgende arbeidsforholdstyper:

Arbeidsforhold rapportert via Forenklet oppgjørsordninger

Beskrivelse av de ulike arbeidsforholdstypene og hvilke dataelementer som er obligatoriske m.m. fremgår i a-ordningens veiledning.

Veiledningen for a-meldingen i sin helhet ligger her:

2.2. Dataelementer fra Aa-registeret

Under arbeid

Dataelement

Forklaring/kommentar

Begreper i teknisk dokumentasjon

Feltbeskrivelse

Format

Arbeidsforhold

Beskriver de statiske opplysningene i arbeidsforholdet.

"arbeidsforhold"

ArbeidsforholdID

Identifikator for hvert arbeidsforhold en arbeidstaker har

"id"

"id"

Tekst

Arbeidsforholdtype

Angivelse av type arbeidsforhold:
* Ordinært
* Maritimt
* Frilansere
* Forenklet oppgjørsordning

"type"

"kode"
"beskrivelse"

Tekst,
Tekst

Arbeidstaker eller frilanser

Arbeidstakerens ID fødselsnummer eller D-nummer

"arbeidstaker"

"ident"

fødselsnummer eller D-nummer på arbeidstaker (11 siffer)

Arbeidssted

Lokal enhet hvor arbeidtakren jobber. Underenhet for organisasjon. Person for personlig arbeidsgiver.

arbeidssted"

"type"
ident"

Underenhet ID: organisasjonsnummer (9 siffer) Person ID: fødselsnummer, D-nummer (11 siffer)

Opplysningspliktig

Juridisk ansvarlig for arbeidsforholdet:
- Hovedenhet for organisasjon
- Person for personlig arbeidsgiver"

"opplysningspliktig"

"type"
"ident"

Hovedenhet ID:
Organisasjonsnummer (9 siffer)
Person ID: fødselsnummer/D-nummer (11 siffer)"

Ansettelsesperiode

"ansettelsesperiode"

Startdato for arbeidsforholdet

Dato for når arbeidsforholdet starter

"startdato"

Dato, format (ISO-8601): yyyy-MM-dd

Sluttdato for arbeidaforholdet

Dato for når arbeidsforholdet sluttet

"sluttdato"

Dato, format (ISO-8601): yyyy-MM-dd

Sluttårsak

Beskriver årsaken til at arbeidsforholdet er avsluttet

"sluttaarsak"

kode"
beskrivelse"

Tekst
Tekst

Varsel

Varsel når NAV har foretatt maksinell opphør av arbeidsforholdet

"varsling"

kode"
beskrivelse"

"Tekst,
Tekst"

Ansettelsesdetaljer

Beskriver dataelementer i arbeidsforholdet som kan endres og dermed ha historikk.

"ansettelsesdetaljer"

Type ansettelsesdetaljer

Angivelse av type ansettelsesdetaljer: - Ordinært
- Maritimt
- Frilansere
- Forenklet oppgjørsordning"

"type"

Tekst

Arbeidstidsordning

Beskriver hva som er avtalt om når på døgnet arbeidet skal utføres:
- ikke skift
- skiftarbeid – 36,6 t/u
- arbeid offshore – 33,6 t/u
- døgnkontinuerlig skiftarbeid og turnusarbeid – 35,5 t/u
- helkontinuerlig skiftarbeid og andre ordninger med 33,6 t/u"

"arbeidstidsordning"

"kode"
"beskrivelse"

Tekst
Tekst

Ansettelsesform

Beskriver om arbeidsforholdet er fast eller midlertidig

"ansettelsesform"

"kode"
"beskrivelse"

Tekst
Tekst

Yrkesbeskrivelse

Beskriver hva arbeidstakeren jobber som.
Styrk-koder benyttes, se http://www.ssb.no/a/yrke

"yrke"

"kode"
"beskrivelse"

Tekst
Tekst

Antall timer pr uke som en full stilling tilsvarer

Beskriver antall timer per uke som en full stilling tilsvarer

"antallTimerPrUke"

Numerisk

Avtalt stillingsprosent

Beskriver hva som er avtalt stillings%

"avtaltStillingsprosent"

Numerisk

Dato for endring av stillingsprosent

Dato for når stillingsprosenten sist er endret

"sisteStillingsprosentendring"

Dato, format (ISO-8601): yyyy-MM-dd

Dato for siste lønnsendring

Dato for når arbeidstakeren sist fikk endret lønn

"sisteLoennsendring"

Dato, format (ISO-8601): yyyy-MM-dd

Tilleggsopplysninger for maritime arbeidsforhold:

Skipsregister

"Skipsregister som et fartøy eller en flyttbar innretning er registrert i:
- NOR (Norsk Ordinært skipsregister)
- NIS (Norsk Internasjonalt Skipsregister)
- UTLA (Utenlandsk registrert fartøy)

"skipsregister"

"kode"
"beskrivelse"

tekst
Tekst

Fartøystype

Type fartøy eller innretning:
- turistskip
- boreplattform
- annet

"fartoeystype"

"kode"
"beskrivelse"

Tekst
Tekst

Fartsområde

Fartsområdet skipet går i:
- innenriksfart
- utenriksfart

"fartsomraade"

"kode"
"beskrivelse"

Tekst
Tekst

Rapporteringsmåneder

"rapporteringsmaaneder"

Startmåned for rapportering

Startmåned for rapportering

"fra"

Dato, format (ISO-8601): yyyy-MM

Sluttmåned for rapportering

Sluttmåned for rapportering

"til"

Dato, format (ISO-8601): yyyy-MM

Permisjoner

"permisjoner"

PermisjonId

Id for permisjonen

"id"

Tekst

Startdato for permisjonen

Startdato for permisjonen

"startdato"

Dato, format (ISO-8601): yyyy-MM-dd

Sluttdato for permisjonen

Sluttdato for permisjonen

"sluttdato"

Dato, format (ISO-8601): yyyy-MM-dd

Permisjonsprosent

Størrelsen på permisjonen angitt i prosent

"prosent"

Numerisk

Permisjonstype

"Permisjonstyper som finnes i dag:
- Permisjon med foreldrepenger
- Permisjon ved militærtjeneste
- Utdanningspermisjon
- Velferdspermisjon"

"type"

"kode"
"beskrivelse"

Tekst
Tekst

Permisjon varsel

Varsel ved matching eller maskinell satt sluttdato

"varsling"

"kode"
"beskrivelse"

Tekst
Tekst

Permitteringer

"permitteringer"

PermitteringsId

Id for permitteringen

"id"

Tekst

Startdato for permitteringen

Startdato for permitteringen

"startdato"

Dato, format (ISO-8601): yyyy-MM-dd

Slutttdato for permitteringen

Slutttdato for permitteringen

"sluttdato"

Dato, format (ISO-8601): yyyy-MM-dd

Permitteringsprosent

Størrelsen på permitteringen angitt i prosent

"prosent"

Numerisk

Permitteringstype

Permitteringstyper som finnes i dag:
- Permittering"

"type"

"kode"
"beskrivelse"

Tekst
Tekst

Permittering varsel

Varsel ved matching eller maskinell satt sluttdato

"varsling"

"kode"
"beskrivelse"

Tekst
Tekst

Antall timer for timelønnet

"timerMedTimeloenn"

Antall timer

Antall timer rapportert sammen med kontantytelsen «timelønn» i a-meldingen

"antall"

Numerisk

Startdato

Startdato for opptjeningsperioden

"startdato"

Dato, format (ISO-8601): yyyy-MM-dd

Sluttdato

Sluttdato for opptjeningsperioden

"sluttdato"

Dato, format (ISO-8601): yyyy-MM-dd

Rapporteringsmåned

Måneden opplysningene er rapportert, men behøver ikke være knyttet til opptjeningsperiode.

"rapporteringsmaaned"

ÅrMåned, format (ISO-8601): yyyy-MM

Utenlandsopphold

"utenlandsopphold"

Landkode

Landkode for opptjent inntekt

"land"

"kode"
"beskrivelse"

Tekst
Tekst

Startdato

Startdato for opptjeningsperioden

"startdato"

Dato, format (ISO-8601): yyyy-MM-dd

Sluttdato

Sluttdato for opptjeningsperioden

"sluttdato"

Dato, format (ISO-8601): yyyy-MM-dd

Rapporteringsmåned

Måneden opplysningene er rapportert, men behøver ikke være knyttet til opptjeningsperiode.

"rapporteringsmaaned"

ÅrMåned, format (ISO-8601): yyyy-MM

ID-historikk for arbeidsforholdet

"idHistorikk"

Tidligere ID for arbeidsforholdet

Tidligere arbeidsforholdIDer på grunn av matching

"id"

Tekst

Varsler

En liste med varsler som forekommer på ulike entiteter i arbeidsforholdet.

"varsler"

Varseltilhørighet

"Angir hva varselet er knyttet til:
- arbeidsforhold
- ansettelsesperiode
- permisjon
- permittering

"entitet"

Tekst

Varsel

Varsel av aktuell entiet, se over

"varsling"

"kode"
"beskrivelse"

Tekst
Tekst

Datoer

Dato opprettet

Dato for når arbeidsforholdet er registrert i Aa-registeret

"opprettet"

Tidspunkt, format (ISO-8601): yyyy-MM-dd’T’HH:mm[:ss[.SSSSSSSSS]]

Dato sist bekreftet

Dato for når arbeidsforholdet sist er bekreftet av arbeidsgiver

"sistBekreftet"

Tidspunkt, format (ISO-8601): yyyy-MM-dd’T’HH:mm[:ss[.SSSSSSSSS]]

Dato sist endret

Dato for når det sist er foretatt endringer i dataelementer i Aa-registeret

"sistEndret"

Tidspunkt, format (ISO-8601): yyyy-MM-dd’T’HH:mm[:ss[.SSSSSSSSS]]

2.3. Identifikasjon av arbeidsgivere og arbeidstakere

Fra Aa-registeret presenteres kun Identifikasjoner for opplysningspliktig, arbeidstakere og arbeidssted. Opplysningspliktig og arbeidssted identifiseres i form av organisasjonsnummer eller fødselsnummer/Dnr. Arbeidstakere identifiseres i form av fødselsnummer/Dnr. Dersom pensjonsinnretningen har behov for mer informasjon knyttet til disse identifikasjonene (navn, adresse osv.) må dette hentes fra Enhetsregisteret (organisasjonsnummer) og Folkeregisteret (Fødselsnummer/Dnr).

2.4. Kodeverk

For dataelementer som har et kodeverk knyttet til seg vil både kode og kodebeskrivelse/term inngå i APIene fra NAV. Det vil si at det ikke er behov for å hente kodebeskrivelse fra egne løsninger.

2.5. Bytte av arbeidstakers id

Når arbeidstaker bytter identifikator (typisk overgang fra dnr til fnr), vil tjenestene til NAV og Skatteetaten knytte opplysninger om inntekt og arbeidsforhold til ny identifikator. Ved forspørsel på gammel id (typisk dnr), vil tjenestene svare med den nyeste identifikatoren (typisk fnr). Tjenestene henter informasjon om identifikatorer fra Folkeregisteret.

Når en arbeidsgiver rapporterer a-melding med utenlandsk identifikator (navn, fødselsdato, landkode), typisk før en arbeidstaker har fått dnr, blir dette ikke delt med pensjonsinnretningene før arbeidstakeren har fått en norsk identifikator (enten Dnr eller Fnr). Når arbeidstakeren får en norsk id, blir alle opplysninger knyttet til den nye identifikatoren, også opplysninger som er rapportert i perioder før norsk id var gitt.

2.6. Arbeidsforhold i hht til organisasjonsstrukturen i Enhetsregisteret

I Aa-registeret blir arbeidsforhold alltid registrert på nivå underenheter i organisasjonsstrukturen i Enhetsregisteret, som fremgår under «arbeidssted» i teknisk løsning. Selv om arbeidsgivere med bare en underenhet har hatt mulighet til å rapportere arbeidsforhold på juridisk enhet (hovedenhet), har Aa-registeret alltid lagret arbeidsforholdene på underenheten. Fra 1.1.2021 må alle arbeidsgivere rapportere arbeidsforholdene på underenhetene gjennom a-meldingen.

2.7. Tolkning av arbeidstid i Aa-registeret

Arbeidstiden som rapporteres til a-ordningen og Aa-registeret er den avtalte stillingsprosenten som står i arbeidsavtalen. Den avtalte arbeidstiden rapporteres som «Stillingsprosent» og «Antall timer en full stilling tilsvarer». Sammen gir disse to opplysningene informasjon om hvor mange timer en person har avtalt å arbeide per uke. Opplysningene er obligatorisk å rapportere for alle ordinære og maritime arbeidsforhold, og frivillig å oppgi for frilansere.

I tillegg henter Aa-registeret inn og presenterer informasjon om «Antall timer for timelønnet» fra inntektsdelen av a-meldingen. Dette er antall utbetalte timer som rapporteres sammen med kontantytelsen «timelønn».

Arbeidstiden som presenteres i Aa-registeret er en kombinasjon av avtalt arbeidstid og deler av den utbetalte arbeidstiden, den som er utbetalt som timelønn.

Fra veiledningen i a-ordningen:

“Oppgi stillingsprosent knyttet til fastlønnen. Det den ansatte måtte arbeide utover avtalt stillingsprosent og som lønnes med timelønn skal ikke regnes med i stillingsprosenten. Oppgi timer sammen med kontantytelsen timelønn for delen som blir betalt med timelønn.”

Som oftest er fastlønnen knyttet til den avtalte stillingsprosenten, timene knyttet til timelønnen kommer i tillegg. Men det er ikke alltid en sammenheng mellom den avtalte arbeidstiden som rapporteres til Aa-registeret og hvordan lønnen utbetales. Mange som har avtalt fast arbeidstid får hele eller deler av lønnen utbetalt som timelønn.

Det er en utfordring å tolke arbeidstiden i Aa-registeret når arbeidsgiver oppgir både stillingsprosent og timer, og stillingsprosent er mindre enn 100%:
• Er da stillingsprosenten med eller uten timene?
• Om det også utbetales fastlønn, må det ses i sammenheng

Ved kombinasjon av fastlønn og timelønn er som oftest stillingsprosenten knyttet til fastlønn, mens timene kommer i tillegg.

2.7.1. Opptjeningsperiode knyttet Timer for timelønnet

I a-meldingen kan det oppgis informasjon om opptjeningsperiode for timelønn. Men dette er ikke en obligatorisk opplysning.

Opptjeningsperioden gir informasjon om når lønnen er opptjent/timene er arbeidet. Lønnen kan være opptjent i en annen periode enn måneden a-meldingen gjelder for. NAV bruker informasjon om opptjeningsperiode til å vurdere rettigheter og plikter.

I veiledningen til a-ordningen står det at om lønnen som rapporteres er opptjent over flere måneder, skal opptjeningsperioden og beløpet deles opp, slik at hver utbetaling /opptjeningsperiode faller innenfor en kalendermåned. Ikke alle som rapporterer følger dette prinsippet.

Siden opptjeningsperiode ikke er obligatorisk blir den i en del tilfeller ikke utfylt. Et alternativ er å tolke timene som opptjent i rapporteringsmåneden i slike tilfeller. Men hver enkelt konsument av data fra Aa-registeret må selv vurdere hvordan de skal tolke timer for timelønn som har blank opptjeningsperiode.

2.8. Behandlinger som utføres av NAV i Aa-registeret

2.8.1. Bytte av arbeidsforholdsID - matching

Det skjer at arbeidsgivere bytter arbeidsforholdsID for en arbeidstakers arbeidsforhold, selv om arbeidsforholdene egentlig er de samme. Det skjer f.eks ved bytte av lønns- og personalsystem eller bytte av lønnsfirma. Når NAV mottar arbeidsforhold med en ID en måned og tilsvarende arbeidsforhold for samme person i påfølgende måned hvor arbeidsforholdsIDen er ulik, blir det foretatt en vurdering om arbeidsforholdet er såpass identisk at det er snakk om det samme arbeidsforholdet. Ved høy nok score blir arbeidsforholdet matchet med det som er rapportert tidligere. Da vil OTP motta arbeidsforholdet med tidligere oppgitte arbeidsforholdsID i «idHisotrikk» og sist rapporterte ID i «arbeidsforholdsID». Samtidig vil det fremgå en varslingskode (AAAA) som forteller at arbeidsforholdsIDen er matchet mot en tidligere rapportert ID.

Dersom arbeidsforholdene har såpass ulike dataelementer at det ikke gir høy nok score blir det først rapporterte arbeidsforholdet stående og får påført en maskinell sluttdato etter 3 måneder (se mer maskinelt opphør av arbeidsforhold under). Det sist rapporterte arbeidsforholdet leveres med ny rapportert ID.

2.8.2. Bytte av permisjonsID/PermitteringsID - Matching

Det skjer at arbeidsgivere bytter permisjonsID eller permitteringsID for en arbeidstakers permisjoner/permitteringer, selv om permisjonen/permitteringen egentlig er de samme. Det skjer f.eks ved bytte av lønns- og personalsystem eller bytte av lønnsfirma. Når NAV mottar en permisjon med en ID en måned og en permisjon for samme person i påfølgende måned hvor permisjonsIDen er ulik, blir det foretatt en vurdering om permisjonen er såpass identisk at det er snakk om den samme permisjonen. Ved høy nok score blir permisjonen matchet med det som er rapportert tidligere. Da vil pensjonsinnretningen motta permisjonen med sist rapporterte ID samtidig som det vil fremgå en varslingskode (BBBB) som forteller at permisjonsIDen er matchet mot en tidligere rapportert ID.

Dersom permisjonene har såpass ulike dataelementer at det ikke gir høy nok score blir det først rapporterte permisjonen stående og får påført en maskinell sluttdato etter 3 måneder. Det sist rapporterte permisjonen leveres med ny rapportert ID.

2.8.3. Maskinelt opphør av arbeidsforhold/permisjoner/permitteringer

Det forekommer at arbeidsgivere rapporterer arbeidsforhold i en til flere måneder for en arbeidstaker, men hvor de slutter å rapportere arbeidsforholdet i påfølgende måned(er). I slike tilfeller foretar a-ordningen et sanksjoneringsløp overfor opplysningspliktige siden rapporteringsplikten ikke er oppfylt. I de fleste tilfeller korrigerer arbeidsgivere ved å enten bekrefte arbeidsforholdet med samme eller endrede dataelementer, eller setter en sluttdato for arbeidsforholdet. Dersom opplysningspliktig ikke bekrefter arbeidsforholdet eller melder sluttdato på arbeidsforholdet i løpet av de tre påfølgende månedene etter at arbeidsforholdet sist var bekreftet, setter NAV en maskinell sluttdato til siste dag i måneden hvor arbeidsforholdet sist ble bekreftet. Her vil pensjonsinnretningen motta varslingskoden XXXX

Dersom en opplysningspliktig går konkurs og det finnes ansatte uten sluttdato på konkurstidspunktet i virksomheten, setter NAV en maskinell sluttdato på arbeidsforholdene. Sluttdatoen som benyttes er konkursåpningsdatoen, og denne settes dagen etter at konkursen er åpnet. Pensjonsinnretningen vil da motta varslingskoden YYYY.

Det forekommer at arbeidsgivere rapporterer permisjoner/permitteringer i en til flere måneder for en arbeidstaker, men hvor de slutter å rapportere permisjonen/permitteringen i påfølgende måned(er). Dersom opplysningspliktig ikke bekrefter permisjonen/permitteringen eller melder sluttdato i løpet av de tre påfølgende månedene etter at permisjonen/permitteringen sist var bekreftet, setter NAV maskinell sluttdato til siste dag i måneden hvor permisjonen/permitteringen sist ble bekreftet. Her vil pensjonsinnretningen motta varslingskoden ZZZZ eller QQQQ.

Dersom NAV har satt en maskinell sluttdato og arbeidsgiver på et senere tidspunkt rapporterer reel sluttdato eller bekrefter at arbeidsforholdet fortsatt er aktivt (sluttdatoen ikke gjelder), vil varselet fjernes og opplysningene fremkomme slik arbeidsgiver har rapportert.

2.8.4. Gjenbruk av arbeidsforholdsID - Overlappende ansettelsesperioder

Det finnes arbeidsgivere som rapporterer arbeidsforhold for en ansatt med arbeidsforholdsID X med startdato 1.1.2020 og en sluttdato 31.3.2020. Dersom det går en måned imellom og arbeidsgiveren rapporterer samme person med samme arbeidsforholdsID X med startdato 1.5.2020 blir begge arbeidsforholdene lagret i Aa-registeret uten å bli matchet eller at startdatoen blir flyttet. Dette for å sikre at arbeidstakeren ikke mister arbeidsforholdsperioder uforvarende. Her vil pensjonsinnretningene få oppgitt begge arbeidsforholdene.

Dersom samme arbeidsgiver på et senere tidspunkt rapporterer enda et arbeidsforhold for samme person og med samme arbeidsforholdsID X hvor startdatoen er 15.03.2020 blir ikke arbeidsforholdet registrert i Aa-registeret pga at vi ikke vet hvordan dataene skal forstås. I dette tilfellet vil vi gi en varslingskode XXYY for å fortelle at vi har mottatt arbeidsforhold for personen som ikke er tatt inn i Aa-registeret.

Eksemplene over kan illustreres med figuren under hvor arbeidsforhold 1 og 2 blir levert, mens arbeidsforhold 3, inngår kun med en varslingskode som ikke forteller start og sluttdato.

3. OTP

API utviklet for å gi pensjonsinnrettingner tilgang til AA-registeret.

3.2. Miljøer

APIet er tilgjengelig i preprod med syntetiske data og i prod med skarpe data. Merk at preprod er et test- og utviklingsmiljø og kan derfor til tider være ustabilt.

3.2.1. Preprod

https://api-preprod.nav.no/aareg/v1/arbeidsforhold/otp/graphql

3.2.2. Prod

<Ikke i produksjon>

3.3. Skjema

Skjema er tilgengelig for nedlasting her. Det kan også leses ved bruk av Introspection.

3.4. Tilgang

For å benytte APIet må en være registrert hos Maskinporten

Nødvendig scope:

nav:aareg/v1/arbeidsforhold/otp

Vi sjekker også avtalen i Tjenestepensjonsavtale APIet

3.5. Tjenester

Ulikt fra REST-tjenester tillater GraphQL flere operasjoner på samme endepunkt ved å angi hvilket query man ønsker å utføre. Vår tjeneste har 2 queries; ett for å hente alle arbeidsforhold tilhørende en opplysningspliktig, og ett for å hente alle arbeidsforholdene til en gitt arbeidstaker hos en opplysningspliktig. Begge tjenestene støtter Paginering.

3.5.1. Arbeidsforhold pr Opplysningspliktig

Tjeneste for å hente alle arbeidsforhold tilknyttet en gitt opplysningspliktig.

Denne returnerer en oversikt over arbeidsforholdene, og inneholder ikke felter som for eksempel persmisjoner.

Query

Query angir hvilken spørring som skal utføres og hvilke felter en ønsker i retur. Vedlagt under er en eksempelfil på tjenesten finnArbeidsforholdoversikterPrOpplysningspliktig hvor alle felter er spesifisert.

finnArbeidsforholdoversikterPrOpplysningspliktig_full.graphql
query($opplysningspliktigId: ID!, $ansattFraMaaned: String!, $ansattTilMaaned: String, $skip: Int, $limit: Int) {
    finnArbeidsforholdoversikterPrOpplysningspliktig(opplysningspliktigId: $opplysningspliktigId, ansattFraMaaned: $ansattFraMaaned, ansattTilMaaned: $ansattTilMaaned, skip: $skip, limit: $limit) {
        id
        type {
            kode
            beskrivelse
        }
        arbeidstaker {
            ident
        }
        arbeidssted {
            type
            ident
        }
        opplysningspliktig {
            type
            ident
        }
        ansettelsesperiode {
            startdato
            sluttdato
            sluttaarsak {
                kode
                beskrivelse
            }
            varsling {
                kode
                beskrivelse
            }
        }
        ansettelsesdetaljer {
            type
            arbeidstidsordning {
                kode
                beskrivelse
            }
            ansettelsesform {
                kode
                beskrivelse
            }
            yrke {
                kode
                beskrivelse
            }
            antallTimerPrUke
            avtaltStillingsprosent
            sisteStillingsprosentendring
            sisteLoennsendring
            rapporteringsmaaneder {
                fra
                til
            }
        }
        idHistorikk {
            id
        }
        varsler {
            entitet
            varsling {
                kode
                beskrivelse
            }
        }
        opprettet
        sistBekreftet
        sistEndret
    }
}
Variabler
Table 1. Variabler for finnArbeidsforholdoversikterPrOpplysningspliktig
Navn Beskrivelse Type Valgfri Eksempelverdi

opplysningspliktigId

Organisasjonsnummeret til den opplysningspliktige (hovedenheten)

String

Nei

81549300

ansattFraMaaned

Angir tidligste dato hvor det foreligger et ansettelsesforhold

String

Nei

2020-01

ansattTilMaaned

Angir seneste dato hvor det foreligger et ansettelsesforhold

String

Ja

2020-01

skip

Benyttes ved paginering. Antall arbeidsforhold en ønsker å hoppe over

Int

Ja

100

limit

Benyttes ved paginering. Angir maskimalt antall arbeidsforhold responsen skal inneholde

Int

Ja

100

3.5.2. Eksempel

Request

Eksempel på spørring. Merk at opplysningspliktigId er maskert.

JSON støtter ikke en streng over flere linjer og query feltet må derfor ligge i en linje.
Korrekt formatert body
{
  "query": "query($opplysningspliktigId: ID!, $ansattFraMaaned: String!, $ansattTilMaaned: String, $skip: Int, $limit: Int) {finnArbeidsforholdoversikterPrOpplysningspliktig(opplysningspliktigId: $opplysningspliktigId, ansattFraMaaned: $ansattFraMaaned, ansattTilMaaned: $ansattTilMaaned, skip: $skip, limit: $limit){id type{kode beskrivelse} arbeidstaker{ident} arbeidssted{type ident} opplysningspliktig{type ident} ansettelsesperiode{startdato sluttdato sluttaarsak{kode beskrivelse} varsling{kode beskrivelse}} ansettelsesdetaljer{type arbeidstidsordning{kode beskrivelse} ansettelsesform {kode beskrivelse} yrke{kode beskrivelse} antallTimerPrUke avtaltStillingsprosent sisteStillingsprosentendring sisteLoennsendring rapporteringsmaaneder{fra til}} idHistorikk{id} varsler{entitet varsling{kode beskrivelse}} opprettet sistBekreftet sistEndret}}",
  "variables": {
    "opplysningspliktigId": "123456789",
    "ansattFraMaaned": "2020-01",
    "ansattTilMaaned": "2020-02",
    "skip": 0,
    "limit": 0
  }
}
Response

Svaret på spørringen benyttet i eksempelet over. Merk at organisasjonsnummer og personnummer er maskert. Responsen inneholder ikke ekte data.

{
    "data": {
        "finnArbeidsforholdPrArbeidstaker": {
            "arbeidsforhold": [
                {
                    "id": "ARBEIDSFORHOLD_ID",
                    "type": {
                        "kode": "ordinaertArbeidsforhold",
                        "beskrivelse": "Ordinært arbeidsforhold"
                    },
                    "arbeidstaker": {
                        "ident": "ARBEIDSTAKER_FNR"
                    },
                    "arbeidssted": {
                        "type": "Underenhet",
                        "ident": "UNDERENHET_ORG_NR"
                    },
                    "opplysningspliktig": {
                        "type": "Hovedenhet",
                        "ident": "HOVEDENHET_ORG_NR"
                    },
                    "ansettelsesperiode": {
                        "startdato": "2019-03-01",
                        "sluttdato": null,
                        "sluttaarsak": null,
                        "varsling": null
                    },
                    "ansettelsesdetaljer": [
                        {
                            "type": "Ordinaer",
                            "arbeidstidsordning": {
                                "kode": "ikkeSkift",
                                "beskrivelse": "Ikke skift"
                            },
                            "ansettelsesform": null,
                            "yrke": {
                                "kode": "5221126",
                                "beskrivelse": "BUTIKKMEDARBEIDER"
                            },
                            "antallTimerPrUke": 37.5,
                            "avtaltStillingsprosent": 15.0,
                            "sisteStillingsprosentendring": null,
                            "sisteLoennsendring": "2019-03-01",
                            "rapporteringsmaaneder": {
                                "fra": "2019-04",
                                "til": null
                            }
                        }
                    ],
                    "permisjoner": [],
                    "permitteringer": [],
                    "timerMedTimeloenn": [],
                    "idHistorikk": [],
                    "varsler": [],
                    "opprettet": "2019-04-09T11:03:28.690",
                    "sistBekreftet": "2019-04-09T11:03:28",
                    "sistEndret": "2020-04-17T16:36:33"
                }
            ]
        }
    }
}

3.5.3. Arbeidsforhold pr Arbeidstaker

Tjeneste for å hente en arbeidsforhold tilknyttet en spesifikk arbeidstaker hos en gitt opplysningspliktig.

Denne tjenesten kan returnere en detaljert oversikt over arbeidsforhold(ene), eksempelvis med permisjoner.

Table 2. Variabler for finnArbeidsforholdPrArbeidstaker
Navn Beskrivelse Type Valgfri Eksempelverdi

opplysningspliktigId

Organisasjonsnummeret til den opplysningspliktige (hovedenheten)

String

Nei

81549300

arbeidstakerId

Folkeregistrert identifikator til arbeidstakeren (hovedenheten)

String

Nei

01020312345

ansattFraMaaned

Angir tidligste dato hvor det foreligger et ansettelsesforhold

String

Nei

2020-01

ansattTilMaaned

Angir seneste dato hvor det foreligger et ansettelsesforhold

String

Ja

2020-01

skip

Benyttes ved paginering. Antall arbeidsforhold en ønsker å hoppe over

Int

Ja

100

limit

Benyttes ved paginering. Angir maskimalt antall arbeidsforhold responsen skal inneholde

Int

Ja

100

Eksempel på query med alle felter
query($opplysningspliktigId: ID!, $arbeidstakerId: ID!, $ansattFraMaaned: String!, $ansattTilMaaned: String, $skip: Int, $limit: Int) {
    finnArbeidsforholdPrArbeidstaker(opplysningspliktigId: $opplysningspliktigId, arbeidstakerId: $arbeidstakerId, ansattFraMaaned: $ansattFraMaaned, ansattTilMaaned: $ansattTilMaaned, skip: $skip, limit: $limit) {
        id
        type {
            kode
            beskrivelse
        }
        arbeidstaker {
            ident
        }
        arbeidssted {
            type
            ident
        }
        opplysningspliktig {
            type
            ident
        }
        ansettelsesperiode {
            startdato
            sluttdato
            sluttaarsak {
                kode
                beskrivelse
            }
            varsling {
                kode
                beskrivelse
            }
        }
        ansettelsesdetaljer {
            type
            arbeidstidsordning {
                kode
                beskrivelse
            }
            ansettelsesform {
                kode
                beskrivelse
            }
            yrke {
                kode
                beskrivelse
            }
            antallTimerPrUke
            avtaltStillingsprosent
            sisteStillingsprosentendring
            sisteLoennsendring
            rapporteringsmaaneder {
                fra
                til
            }
        }
        permisjoner {
            id
            type {
                kode
                beskrivelse
            }
            startdato
            sluttdato
            prosent
            varsling {
                kode
                beskrivelse
            }
        }
        permitteringer {
            id
            type {
                kode
                beskrivelse
            }
            startdato
            sluttdato
            prosent
            varsling {
                kode
                beskrivelse
            }
        }
        timerMedTimeloenn {
            antall
            startdato
            sluttdato
            rapporteringsmaaned
        }
        idHistorikk {
            id
        }
        varsler {
            entitet
            varsling {
                kode
                beskrivelse
            }
        }
        opprettet
        sistBekreftet
        sistEndret
    }
}

3.6. Paginering

Paginering kan enkelt utføres ved å spesifisere 'skip' og 'limit' i variablene til spørringen.

{
    "query": "..."
},
{
    "...",
    "skip": 100
    "limit": 100
}

Som vist i eksemplet vil en skip på 100 og limit på 100 hoppe over de første 100 og returnere de neste 100.

Siden det utføres ny spørring mot databasen for hver GraphQL-spørring kan vi ikke garantere at resultatsettet forblir det samme ved gjentatte GraphQL-spørringer. Dette grunnet oppdatering av data fra masterdatabasen.

3.7. Filtrering av resultater

For å ikke utlevere data som er utenfor perioden det spørres på utfører vi filtrering ved hjelp av De Morgan’s lov på resultatsettet.

Vi benytter ansattFraMaaned og ansattTilMaaned i GraphQL spørringen som grunnlag for filtreringen. Dersom ansattTilMaaned ikke er oppgitt settes denne til nåværende måned.

3.7.1. Arbeidsforhold

For at et arbeidsforhold skal være en del av resultatsettet må det være overlapp mellom søkeperioden og ansettelsesperiodens start- og sluttdato. Dersom sluttdato for ansettelsesperioden ikke er satt er arbeidsforholdet aktivt og alle spørringer som har intervall etter ansettelsesperiodens startdato inkluderes.

Ansettelsesdetaljer

Et arbeidsforhold kan bestå av en rekke ansettelsesdetaljer. Eksempelvis vil det legges til nytt objekt dersom stillingsprosenten endres. Filtrering av ansettelsesdetaljer utføres basert på månedene de ble rapportert.

Det kan oppstå situasjoner hvor ansettelsesperioden har startdato før rapporteringsmånedenes fra-dato. I disse situasjonene returnerer vi de tidligste rapporterte ansettelsesdetaljene.
Permisjoner og Permitteringer

Filtreres basert på start- og sluttdato. Dersom sluttdato er null er permisjonen/permitteringen aktiv og vil inkluderes i alle spørringer som har intervall etter startdato for permisjonen/permitteringen.

Timer med timelønn

Siden start- og sluttdato er ikke pålagt å oppgi ved rapportering utføres filtrering basert på rapporteringsmåned.

3.7.2. Eksempler

3.7.3. Eksempel 1

Datagrunnlag

I AA-registeret har vi registrert følgende opplysninger om et arbeidsforhold:

{
    "id": "ARBEIDSFORHOLD_ID",
    "type": {
        "kode": "ordinaertArbeidsforhold",
        "beskrivelse": "Ordinært arbeidsforhold"
    },
    "arbeidstaker": {
        "ident": "ARBEIDSTAKER_FNR"
    },
    "arbeidssted": {
        "type": "Underenhet",
        "ident": "UNDERENHET_ORG_NR"
    },
    "opplysningspliktig": {
        "type": "Hovedenhet",
        "ident": "HOVEDENHET_ORG_NR"
    },
    "ansettelsesperiode": {
        "startdato": "2019-11-01",
        "sluttdato": null,
        "sluttaarsak": null,
        "varsling": null
    },
    "ansettelsesdetaljer": [
        {
            "type": "Ordinaer",
            "arbeidstidsordning": {
                "kode": "ikkeSkift",
                "beskrivelse": "Ikke skift"
            },
            "ansettelsesform": {
                "kode": "fast",
                "beskrivelse": "Fast ansettelse"
            },
            "yrke": {
                "kode": "1228103",
                "beskrivelse": "SJEFSYKEPLEIER"
            },
            "antallTimerPrUke": 37.5,
            "avtaltStillingsprosent": 100.0,
            "sisteStillingsprosentendring": "2020-01-01",
            "sisteLoennsendring": "2019-11-01",
            "rapporteringsmaaneder": {
                "fra": "2020-01",
                "til": null
            }
        },
        {
            "type": "Ordinaer",
            "arbeidstidsordning": {
                "kode": "ikkeSkift",
                "beskrivelse": "Ikke skift"
            },
            "ansettelsesform": {
                "kode": "fast",
                "beskrivelse": "Fast ansettelse"
            },
            "yrke": {
                "kode": "1228103",
                "beskrivelse": "SJEFSYKEPLEIER"
            },
            "antallTimerPrUke": 37.5,
            "avtaltStillingsprosent": 50.0,
            "sisteStillingsprosentendring": null,
            "sisteLoennsendring": "2019-11-01",
            "rapporteringsmaaneder": {
                "fra": "2019-11",
                "til": "2020-01"
            }
        }
    ],
    "permisjoner": [
        {
            "id": "PERMISJON_ID",
            "type": {
                "kode": "permisjonMedForeldrepenger",
                "beskrivelse": "Permisjon med foreldrepenger"
            },
            "startdato": "2020-01-20",
            "sluttdato": "2020-01-31",
            "prosent": 100.0,
            "varsling": null
        },
        {
            "id": "PERMISJON_ID",
            "type": {
                "kode": "velferdspermisjon",
                "beskrivelse": "Velferdspermisjon"
            },
            "startdato": "2020-02-20",
            "sluttdato": "2020-03-01",
            "prosent": 100.0,
            "varsling": null
        }
    ],
    "permitteringer": [
        {
            "id": "PERMITTERING_ID",
            "type": {
                "kode": "permittering",
                "beskrivelse": "Permittering"
            },
            "startdato": "2020-03-15",
            "sluttdato": null,
            "prosent": 100.0,
            "varsling": null
        }
    ],
    "timerMedTimeloenn": [
        {
            "antall": 35.0,
            "startdato": null,
            "sluttdato": null,
            "rapporteringsmaaned": "2019-11"
        },
        {
            "antall": 40.0,
            "startdato": null,
            "sluttdato": null,
            "rapporteringsmaaned": "2019-12"
        }
    ],
    "idHistorikk": [],
    "varsler": [],
    "opprettet": "2019-11-16T16:21:27.213",
    "sistBekreftet": "2020-09-22T16:22",
    "sistEndret": "2020-04-02T16:34:58"
}

For å enklere illustrere eksemplene viser tabellen under elementene som inngår i arbeidsforholdet.

Objekt Startdato Sluttdato Rapporteringsmåned Rapportert-fra Rapportert-til

Ansettelsesperiode

01.11.2019

null

-

-

-

Ansettelsesdetaljer 1

-

-

-

2019-11

2020-01

Ansettelsesdetaljer 2

-

-

-

2020-01

null

Permisjon 1

10.01.2020

20.01.2020

-

-

-

Permisjon 2

20.02.2020

01.03.2020

-

-

-

Permittering 1

15.03.2020

null

-

-

-

Timer-med-timelønn 1

null

null

2019-11

-

-

Timer-med-timelønn 2

null

null

2019-12

-

-

Scenario 1
Formål

Ønsker å hente data fra første måned.

Parametre i query
ansattFraMaaned (yyyy-MM) ansattTilMaaned (yyyy-MM)

2019-11

2019-11

Svar fra tjenesten
Objekt Inkluderes Forklaring

Ansettelsesperiode

Ja

startdato er før ansattTilMaaned og sluttdato er null og dermed etter ansattFraMaaned

Ansettelsesdetaljer 1

Ja

rapportert-fra er lik ansattTilMaaned og rapportert-til er null og dermed etter ansattFraMaaned

Ansettelsesdetaljer 2

Nei

rapportert-fra er etter ansattTilMaaned

Permisjon 1

Nei

startdato er etter ansattTilMaaned

Permisjon 2

Nei

startdato er etter ansattTilMaaned

Permittering 1

Nei

startdato er etter ansattTilMaaned

Timer-med-timelønn 1

Ja

rapporteringsmåned er lik ansattTilMaaned og ansattFraMaaned

Timer-med-timelønn 2

Nei

rapporteringsmåned er etter ansattTilMaaned

Scenario 2
Formål

Ønsker å hente data fra nåværende måned.

Parametre i query
ansattFraMaaned ansattTilMaaned

2020-10

2020-10

Svar fra tjenesten
Objekt Inkluderes Forklaring

Ansettelsesperiode

Ja

startdato er før ansattTilMaaned og sluttdato er null og dermed etter ansattFraMaaned

Ansettelsesdetaljer 1

Nei

rapportert-til er før ansattFraMaaned

Ansettelsesdetaljer 2

Ja

rapportert-fra er før ansattFraMaaned og rapportert-til er null og dermed etter ansattFraMaaned

Permisjon 1

Nei

sluttdato er før ansattFraMaaned

Permisjon 2

Nei

sluttdato er før ansattFraMaaned

Permittering 1

Ja

startdato er før ansattTilMaaned og sluttdato er null og dermed etter ansattFraMaaned

Timer-med-timelønn 1

Nei

rapporteringsmåned er før ansattFraMaaned

Timer-med-timelønn 2

Nei

rapporteringsmåned er før ansattFraMaaned

Scenario 3
Formål

Ønsker å hente all informasjon etter stillingsprosenten ble endret

Siden ansattTilMaaned er null blir den satt til nåværende måned (2020-10 i dette scenarioet)
Parametre i query
ansattFraMaaned ansattTilMaaned

2020-01

null

Svar fra tjenesten
Objekt Inkluderes Forklaring

Ansettelsesperiode

Ja

startdato er før ansattTilMaaned og sluttdato er null og dermed etter ansattFraMaaned

Ansettelsesdetaljer 1

Ja

rapportert-fra er før ansattTilMaaned og rapportert-til er lik ansattFraMaaned

Ansettelsesdetaljer 2

Ja

rapportert-fra er før ansattTilMaaned og rapportert-til er null og dermed etter ansattFraMaaned

Permisjon 1

Ja

startdato er før ansattTilMaaned og sluttdato er etter ansattFraMaaned

Permisjon 2

Ja

startdato er før ansattTilMaaned og sluttdato er etter ansattFraMaaned

Permittering 1

Ja

startdato er før ansattTilMaaned og sluttdato er null og dermed etter ansattFraMaaned

Timer-med-timelønn 1

Nei

rapporteringsmaaned er før ansattFraMaaned

Timer-med-timelønn 2

Nei

rapporteringsmaaned er før ansattFraMaaned

3.7.4. Eksempel 2

Datagrunnlag

I AA-registeret har vi registrert følgende opplysninger om et arbeidsforhold:

{
    "id": "ARBEIDSFORHOLD_ID",
    "type": {
        "kode": "ordinaertArbeidsforhold",
        "beskrivelse": "Ordinært arbeidsforhold"
    },
    "arbeidstaker": {
        "ident": "ARBEIDSTAKER_FNR"
    },
    "arbeidssted": {
        "type": "Underenhet",
        "ident": "UNDERENHET_ORG_NR"
    },
    "opplysningspliktig": {
        "type": "Hovedenhet",
        "ident": "HOVEDENHET_ORG_NR"
    },
    "ansettelsesperiode": {
        "startdato": "2016-08-01",
        "sluttdato": "2016-10-31",
        "sluttaarsak": null,
        "varsling": null
    },
    "ansettelsesdetaljer": [
        {
            "type": "Ordinaer",
            "arbeidstidsordning": {
                "kode": "ikkeSkift",
                "beskrivelse": "Ikke skift"
            },
            "ansettelsesform": {
                "kode": "fast",
                "beskrivelse": "Fast ansettelse"
            },
            "yrke": {
                "kode": "1228103",
                "beskrivelse": "SJEFSYKEPLEIER"
            },
            "antallTimerPrUke": 37.5,
            "avtaltStillingsprosent": 100.0,
            "sisteStillingsprosentendring": null,
            "sisteLoennsendring": "2016-08-01",
            "rapporteringsmaaneder": {
                "fra": "2016-09",
                "til": null
            }
        }
    ],
    "permisjoner": [],
    "permitteringer": [],
    "timerMedTimeloenn": [
        {
            "antall": 35.0,
            "startdato": "2016-08-01",
            "sluttdato": "2016-08-31",
            "rapporteringsmaaned": "2016-09"
        },
        {
            "antall": 35.0,
            "startdato": "2016-09-01",
            "sluttdato": "2016-09-30",
            "rapporteringsmaaned": "2016-10"
        },
        {
            "antall": 35.0,
            "startdato": "2016-10-01",
            "sluttdato": "2016-10-31",
            "rapporteringsmaaned": "2016-11"
        },
    ],
    "idHistorikk": [],
    "varsler": [],
    "opprettet": "2016-09-06T16:21:27.213",
    "sistBekreftet": "2020-09-22T16:22",
    "sistEndret": "2016-11-02T16:34:58"
}

For å enklere illustrere eksemplene viser tabellen under elementene som inngår i arbeidsforholdet.

Objekt Startdato Sluttdato Rapporteringsmåned Rapportert-fra Rapportert-til

Ansettelsesperiode

2016-08-01

2016-10-31

-

-

-

Ansettelsesdetaljer 1

-

-

-

2016-09

null

Timer-med-timelønn 1

2016-08-01

2016-08-31

2016-09

-

-

Timer-med-timelønn 2

2016-09-01

2016-09-30

2016-10

-

-

Timer-med-timelønn 2

2016-10-01

2016-10-31

2016-11

-

-

Scenario 1
Formål

Ønsker å hente data fra første måned.

Parametre i query
ansattFraMaaned (yyyy-MM) ansattTilMaaned (yyyy-MM)

2016-08

2016-08

Svar fra tjenesten
Objekt Inkluderes Forklaring

Ansettelsesperiode

Ja

startdato er før ansattTilMaaned og sluttdato er etter ansattFraMaaned

Ansettelsesdetaljer 1

Ja

UNNTAK:

rapportert-fra er etter ansattTilMaaned å resulterer i ingen overlapp.

Men siden dette resulterer i ingen ansettelsesdetaljer returnerer vi første rapporterte ansettelsesdetaljer.

Timer-med-timelønn 1

Nei

rapporteringsmåned er etter ansattTilMaaned

NB: Selv om start- og sluttdato for timene er innenfor søkeperioden baserer ikke filtreringen seg på disse.

Timer-med-timelønn 2

Nei

rapporteringsmåned er etter ansattTilMaaned

Timer-med-timelønn 3

Nei

rapporteringsmåned er etter ansattTilMaaned

Appendix A: Verktøy

A.1. GraphQL

Vi benytter GraphQL for oppslag av arbeidsforhold fra Aa-registeret. Dette gir konsumenter muligheten til å spesifisere hvilke felter de ønsker i retur når de utfører en spørring.

A.1.1. Skjemadefinisjon

Tegn og Typer

Skjemaet definerer et sett med typer som GraphQL benytter når man utfører en spørring

Kort forkaring av tegn:

[type] = Liste av type
f.eks:
arbeidsforhold: [Arbeidsforhold]

type = Enkelt objekt
f.eks:
arbeidsavtale: Arbeidsavtale

! = non-nullable
f.eks:
arbeidsforhold: [Arbeidsforhold!]!
Vår løsning benytter ikke non-nullable.Med andre ord kan ALLE typer og lister være null!

Eksempler på non-nullable

arbeidsforhold: Arbeidsforhold!
- Forklaring:
'Arbeidsforhold' kan aldri være null / har alltid en verdi
- Eksempler:
"arbeidsforhold": { ...Data... }    // gyldig
"arbeidsforhold": null              // ugyldig

arbeidsforhold: [Arbeidsforhold]!
- Forklaring:
'Arbeidsforhold' kan være null, men ikke listen
- Eksempler:
"arbeidsforhold": { [] }             // gyldig
"arbeidsforhold": { [null] }         // gyldig
"arbeidsforhold": { [...Data...] }   // gyldig
"arbeidsforhold": null               // ugyldig

arbeidsforhold: [Arbeidsforhold!]!
- Forklaring:
Både 'Arbeidsforhold' og listen kan aldri være null / har alltid en verdi
- Eksempler:
"arbeidsforhold": { [...Data...] }          // gyldig
"arbeidsforhold": { [...Data...], null }    // ugyldig
"arbeidsforhold": { [null] }                // ugyldig
"arbeidsforhold": null                      // ugyldig

arbeidsforhold: [Arbeidsforhold]
- Forklaring:
Alt kan være null

Typer kan være primitiv (f.eks: String) eller et objekt som inneholder andre typer.La oss se på et utdrag fra skjemaet:

type Ansettelsesperiode {
    startdato: Date
    sluttdato: Date
    sluttaarsak: Kodeverksentitet
    varsling: Kodeverksentitet
}

Som vist over er inneholder typen 'Ansettelsesperiode' 4 andre typer. Dersom vi ser nærmere på feltet 'sluttaarsak' ser vi at den er av typen 'Kodeverksentitet'

"""
Description
"""
type Kodeverksentitet {
    """
    Kode
    """
    kode: String
    """
    Beskrivelse fra kodeverk
    """
    beskrivelse: String
}

Som vi ser inneholder typen 'Kodeverksentitet' 2 felter: kode og beskrivelse. I tillegg har hvert felt/type beskrevet ved bruk av følgende format: """…​""". Dette er verdier man får returnert dersom man ber om 'description' ved Introspection

A.1.2. Introspection

Introspection er en måte å lese skjema på.Ved en spørring til GraphQL endepunket kan man enklet få forklart blandt annet tilgjengelige spørringer (queries) og forklaring av typer.

For full beskrivelse av Introspection kan man lese dokumentasjonen på GraphQLs hjemmeside

Her er en enkel spørring for å få tak i alle tilgjengelige spørringer (queries).

{
  __schema {
    queryType {
      name
    }
  }
}

Dersom man ønsker å forklart f.eks 'Arbeidsforholdoversikt' kan man sende denne spørringen:

{
    __type(name: "Arbeidsforholdoversikt") {
        name
        description
        fields {
            name
            description
        }
    }
}

A.1.3. Verktøy for testing

Vi anbefaller nyere versjoner av Postman for testing eller for å bli kjent med GraphQL.

For vår tjeneste kreves det et gyldig token fra Maskinporten.

Ikke opprett konto/logg inn i Postman da den cacher resultatsettet og da potensielt lekker data. Det er en litt skjult "skip registration" knapp på introduksjons-siden.

A.1.4. Eksempelspørringer

JSON støtter ikke en streng over flere linjer og eksemplene vil derfor fremstå som uoversiktlig. Hele "query" feltet må derfor ligge i en linje.
Eksempel på gyldig query
{
  "query": "query($opplysningspliktigId: ID!, $arbeidstakerId: ID!, $ansattFraMaaned: String!, $ansattTilMaaned: String, $skip: Int, $limit: Int) {finnArbeidsforholdPrArbeidstaker(opplysningspliktigId: $opplysningspliktigId, arbeidstakerId: $arbeidstakerId, ansattFraMaaned: $ansattFraMaaned, ansattTilMaaned: $ansattTilMaaned, skip: $skip, limit: $limit) {id type{kode beskrivelse} arbeidstaker{ident} arbeidssted{type ident} opplysningspliktig{type ident} ansettelsesperiode{startdato sluttdato sluttaarsak{kode beskrivelse} varsling{kode beskrivelse}} ansettelsesdetaljer0{type arbeidstidsordning{kode beskrivelse} ansettelsesform{kode beskrivelse} yrke{kode beskrivelse} antallTimerPrUke avtaltStillingsprosent sisteStillingsprosentendring sisteLoennsendring rapporteringsmaaneder{fra til}} permisjoner{id type{kode beskrivelse} startdato sluttdato prosent varsling{kode beskrivelse}} permitteringer{id type{kode beskrivelse} startdato sluttdato prosent varsling{kode beskrivelse}} timerMedTimeloenn{antall startdato sluttdato rapporteringsmaaned} idHistorikk{id} varsler{entitet varsling{kode beskrivelse}}opprettet sistBekreftet sistEndret}}",
  "variables": {
    "opplysningspliktigId": "123456789",
    "arbeidstakerId": "12345678912",
    "ansattFraMaaned": "2020-01",
    "ansattTilMaaned": "2020-02",
    "skip": 0,
    "limit": 0
  }
}
Samme spørring som eksempelet over, men med gal formattering.
{
  "query": "query($opplysningspliktigId: ID!, $arbeidstakerId: ID!, $ansattFraMaaned: String!, $ansattTilMaaned: String, $skip: Int, $limit: Int) {
finnArbeidsforholdPrArbeidstaker(opplysningspliktigId: $opplysningspliktigId, arbeidstakerId: $arbeidstakerId, ansattFraMaaned: $ansattFraMaaned, ansattTilMaaned: $ansattTilMaaned, skip: $skip, limit: $limit) {
            id
            type {
                kode
                beskrivelse
            }
            arbeidstaker {
                ident
            }
            arbeidssted {
                type
                ident
            }
            opplysningspliktig {
                type
                ident
            }
            ansettelsesperiode {
                startdato
                sluttdato
                sluttaarsak {
                    kode
                    beskrivelse
                }
                varsling {
                    kode
                    beskrivelse
                }
            }
            arbeidsavtaler {
                type
                arbeidstidsordning {
                    kode
                    beskrivelse
                }
                ansettelsesform {
                    kode
                    beskrivelse
                }
                yrke {
                    kode
                    beskrivelse
                }
                antallTimerPrUke
                avtaltStillingsprosent
                sisteStillingsprosentendring
                sisteLoennsendring
                gyldighetsperiode {
                    startdato
                    sluttdato
                }
            }
            permisjoner {
                id
                type {
                    kode
                    beskrivelse
                }
                startdato
                sluttdato
                prosent
                varsling {
                    kode
                    beskrivelse
                }
            }
            permitteringer {
                id
                type {
                    kode
                    beskrivelse
                }
                startdato
                sluttdato
                prosent
                varsling {
                    kode
                    beskrivelse
                }
            }
            timerMedTimeloenn {
                antall
                startdato
                sluttdato
                rapporteringsmaaned
            }
            idHistorikk {
                id
            }
            varsler {
                entitet
                varsling {
                    kode
                    beskrivelse
                }
            }
            opprettet
            sistBekreftet
            sistEndret
        }
    }",
  "variables": {
    "opplysningspliktigId": "123456789",
    "arbeidstakerId": "12345678912",
    "ansattFraMaaned": "2020-01",
    "ansattTilMaaned": "2020-02",
    "skip": 0,
    "limit": 0
  }
}