OTP-API

API utviklet for å gi pensjonsinnretninger tilgang til informasjon i AA-registeret.

Generell informasjon om onboarding er tilgjengelig her: DSOP dokumentasjon

  1. Testdata
  2. Miljøer
  3. Skjema
  4. Tilgang
  5. Tjenester
    1. Ping og helsesjekk
    2. Arbeidsforholdoversikter pr opplysningspliktig
    3. Arbeidsforhold pr Arbeidstaker
  6. Filtrering
    1. Arbeidsforhold
  7. Korrelasjon-id’er
    1. Forespørsel
    2. Arbeidsforhold
  8. Feilmeldinger
    1. Feilkoder og forklaring
    2. Eksempler (feilmeldinger)

Testdata

Testdata fra Aa-registeret kan nå søkes opp i Tenor. Les mer om Tenor på Skatteetatens github-sider her

Miljøer

MERK: Dersom dere tidligere kontaktet oss via vår API-Portal, se Migreringsguide for API-Portalen.

APIet er tilgjengelig på følgende adresser:

Test: https://arbeidsforhold-gw.ekstern.dev.nav.no/aareg/v1/arbeidsforhold/otp/graphql

Produksjon: https://arbeidsforhold-gw.nav.no/aareg/v1/arbeidsforhold/otp/graphql

MERK: Testmiljøet kan periodevis være utilgjengelig grunnet kodeendringer og testing. Vi prøver å begrense dette til et minimum.

Skjema

GraphQL-skjema er tilgengelig for nedlasting her.

Det kan også inspiseres ved bruk av Introspection.

Tilgang

For å benytte API’et må konsumenten være registrert hos Maskinporten.

Maskinporten-scope: nav:aareg/v1/arbeidsforhold/otp

Vi sjekker også avtalen i Tjenestepensjonsavtale API’et

Se for øvrig egen side på nav.no for søknad om tilgang til AA-registeret.

Tjenester

Ping og helsesjekk

Etter utfasing av API-Portalen er helsesjekk dessverre utilgjengelig. Vi jobber med ny løsning for dette.

Send et kall med HttpMethod.OPTIONS og authorization til /graphql endepunket. Forventet resultat er HttpStatus.OK

Arbeidsforholdoversikter pr opplysningspliktig

Tjeneste for å hente arbeidsforholdoversikter tilhørende en gitt opplysningspliktig og periode.

Denne returnerer et minimum av opplysninger tilknyttet et arbeidsforhold:

  • Arbeidsforholdets ID
  • Arbeidstakers ID
  • Yrke (gjeldende)
  • Hisoriske IDer for arbeidsforholdet
  • Når arbeidsforholdet sist ble endret

Spørring (request)

query($opplysningspliktigId: ID!, $ansattFraMaaned: String!, $ansattTilMaaned: String) {
    finnArbeidsforholdoversikterPrOpplysningspliktig(opplysningspliktigId: $opplysningspliktigId, ansattFraMaaned: $ansattFraMaaned, ansattTilMaaned: $ansattTilMaaned) {
        arbeidsforholdoversikter {
            id
            arbeidstaker {
                ident
            }
            yrke {
                kode
                beskrivelse
            }
            idHistorikk {
                id
            }
            sistEndret
            sjekksum
        }
    }
}

Variabler

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

Eksempel (request: spørring med variabler)

Merk:

  • opplysningspliktigId er maskert.
  • JSON støtter ikke en streng over flere linjer og query feltet må derfor ligge i en linje.
{
  "query": "query($opplysningspliktigId: ID!, $ansattFraMaaned: String!, $ansattTilMaaned: String) {finnArbeidsforholdoversikterPrOpplysningspliktig(opplysningspliktigId: $opplysningspliktigId, ansattFraMaaned: $ansattFraMaaned, ansattTilMaaned: $ansattTilMaaned){arbeidsforholdoversikter{id arbeidstaker{ident} idHistorikk{id} sistEndret}}}",
  "variables": {
    "opplysningspliktigId": "123456789",
    "ansattFraMaaned": "2020-01",
    "ansattTilMaaned": "2020-02"
  }
}

Eksempler (response)

Eksempel #1
  • arbeidstaker (1)
  • arbeidsforholdoversikt (2)
  • arbeidssted (2) - implisitt
{
  "data": {
    "finnArbeidsforholdoversikterPrOpplysningspliktig": {
      "arbeidsforholdoversikter": [
        {
          "id": "ARBEIDSFORHOLD_ID_1",
          "arbeidstaker": {
            "ident": "ARBEIDSTAKER_FNR"
          },
          "yrke": {
            "kode": "5221126",
            "beskrivelse": "BUTIKKMEDARBEIDER"
          },
          "idHistorikk": [],
          "sistEndret": "2020-01-06T08:58:21",
          "sjekksum": "DMS+X8mCVqHHWsIN50BMWQ=="
        },
        {
          "id": "ARBEIDSFORHOLD_ID_3",
          "arbeidstaker": {
            "ident": "ARBEIDSTAKER_FNR"
          },
          "yrke": {
            "kode": "5221126",
            "beskrivelse": "BUTIKKMEDARBEIDER"
          },
          "idHistorikk": [
            {
              "id": "ARBEIDSFORHOLD_ID_2"
            }
          ],
          "sistEndret": "2020-01-06T08:57:27",
          "sjekksum": "HmWIKuHAdKmRmPeAiAm5dA=="
        }
      ]
    }
  }
}
Eksempel #2
  • arbeidstaker (1)
  • arbeidsforholdoversikt (2)
  • arbeidssted (1) - implisitt
  • ansettelsesperiode (2, ikke-overlappende) - implisitt
{
  "data": {
    "finnArbeidsforholdoversikterPrOpplysningspliktig": {
      "arbeidsforholdoversikter": [
        {
          "id": "ARBEIDSFORHOLD_ID_1",
          "arbeidstaker": {
            "ident": "ARBEIDSTAKER_FNR"
          },
          "yrke": {
            "kode": "5221126",
            "beskrivelse": "BUTIKKMEDARBEIDER"
          },
          "idHistorikk": [],
          "sistEndret": "2020-04-17T16:36:32",
          "sjekksum": "MkPDiQKf4ODksDGQCRhJ1A=="
        },
        {
          "id": "ARBEIDSFORHOLD_ID_3",
          "arbeidstaker": {
            "ident": "ARBEIDSTAKER_FNR"
          },
          "yrke": {
            "kode": "5221126",
            "beskrivelse": "BUTIKKMEDARBEIDER"
          },
          "idHistorikk": [
            {
              "id": "ARBEIDSFORHOLD_ID_2"
            }
          ],
          "sistEndret": "2020-04-17T16:36:32",
          "sjekksum": "gLqIo1lg5PYXSHHE03OjEw=="
        }
      ]
    }
  }
}

Arbeidsforhold pr Arbeidstaker

Tjeneste for å hente detaljer for arbeidsforholdene til en gitt arbeidstaker, opplysningspliktig og periode.

Spørring (request)

query($opplysningspliktigId: ID!, $arbeidstakerId: ID!, $ansattFraMaaned: String!, $ansattTilMaaned: String) {
    finnArbeidsforholdPrArbeidstaker(opplysningspliktigId: $opplysningspliktigId, arbeidstakerId: $arbeidstakerId, ansattFraMaaned: $ansattFraMaaned, ansattTilMaaned: $ansattTilMaaned) {
        arbeidsforhold {
            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
                }
            }
            uuid
            opprettet
            sistBekreftet
            sistEndret
            sjekksum
        }
    }
}

Eksempler (response)

Eksempel #1
  • ordinært arbeidsforhold
  • ansettelsesperiode uten varsling
  • ansettelsesdetaljer (1)
  • permisjoner (0)
  • permitteringer (0)
  • timer-med-timelønn (0)
  • arbeidsforhold-id-historikk (0)
  • varsler (0)
{
  "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": [],
          "uuid": "37317576-979a-406b-9127-2c53b0111d1a",
          "opprettet": "2019-04-09T11:03:28.690",
          "sistBekreftet": "2019-04-09T11:03:28",
          "sistEndret": "2020-04-17T16:36:33",
          "sjekksum": "Cnh87i4hMmaAz8IoXirRGQ=="
        }
      ]
    }
  }
}
Eksempel #2
  • ordinært arbeidsforhold
  • ansettelsesperiode med sluttårsak
  • ansettelsesdetaljer (2)
  • permisjoner (0)
  • permitteringer (0)
  • timer-med-timelønn (0)
  • arbeidsforhold-id-historikk (0)
  • varsler (0)
{
  "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-14",
            "sluttdato": "2019-04-07",
            "sluttaarsak": {
              "kode": "arbeidstakerHarSagtOppSelv",
              "beskrivelse": "Fant ingen beskrivelse som var gyldig 01.09.2017"
            },
            "varsling": null
          },
          "ansettelsesdetaljer": [
            {
              "type": "Ordinaer",
              "arbeidstidsordning": {
                "kode": "ikkeSkift",
                "beskrivelse": "Ikke skift"
              },
              "ansettelsesform": null,
              "yrke": {
                "kode": "3493104",
                "beskrivelse": "SKOLEBIBLIOTEKAR"
              },
              "antallTimerPrUke": 37.5,
              "avtaltStillingsprosent": 45.33,
              "sisteStillingsprosentendring": "2019-03-21",
              "sisteLoennsendring": "2019-03-14",
              "rapporteringsmaaneder": {
                "fra": "2019-03",
                "til": null
              }
            },
            {
              "type": "Ordinaer",
              "arbeidstidsordning": {
                "kode": "ikkeSkift",
                "beskrivelse": "Ikke skift"
              },
              "ansettelsesform": null,
              "yrke": {
                "kode": "3493104",
                "beskrivelse": "SKOLEBIBLIOTEKAR"
              },
              "antallTimerPrUke": 37.5,
              "avtaltStillingsprosent": 40.0,
              "sisteStillingsprosentendring": "2019-03-14",
              "sisteLoennsendring": "2019-03-14",
              "rapporteringsmaaneder": {
                "fra": "2019-01",
                "til": "2019-02"
              }
            }
          ],
          "permisjoner": [],
          "permitteringer": [],
          "timerMedTimeloenn": [],
          "idHistorikk": [],
          "varsler": [],
          "uuid": "2e3038bf-442a-479f-9649-b0abfd17a410",
          "opprettet": "2019-04-05T08:44:53.807",
          "sistBekreftet": "2019-04-05T14:57:44",
          "sistEndret": "2019-10-14T13:10:57",
          "sjekksum": "JJuXtWYFviY1QakuXGtt2w=="
        }
      ]
    }
  }
}
Eksempel #3
  • ordinært arbeidsforhold
  • ansettelsesperiode uten varsling
  • ansettelsesdetaljer (1)
  • permisjoner (1)
  • permitteringer (1)
  • timer-med-timelønn (0)
  • arbeidsforhold-id-historikk (0)
  • varsler (0)
{
  "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": "2018-11-01",
            "sluttdato": null,
            "sluttaarsak": null,
            "varsling": null
          },
          "ansettelsesdetaljer": [
            {
              "type": "Ordinaer",
              "arbeidstidsordning": {
                "kode": "ikkeSkift",
                "beskrivelse": "Ikke skift"
              },
              "ansettelsesform": null,
              "yrke": {
                "kode": "1319123",
                "beskrivelse": "DAGLIG LEDER (FÆRRE ENN 10 ANSATTE - REHABILITERING)"
              },
              "antallTimerPrUke": 37.5,
              "avtaltStillingsprosent": 100.0,
              "sisteStillingsprosentendring": null,
              "sisteLoennsendring": "2018-11-01",
              "rapporteringsmaaneder": {
                "fra": "2019-03",
                "til": null
              }
            }
          ],
          "permisjoner": [
            {
              "id": "PERMISJON_ID",
              "type": {
                "kode": "permisjonMedForeldrepenger",
                "beskrivelse": "Permisjon med foreldrepenger"
              },
              "startdato": "2018-11-01",
              "sluttdato": "2019-03-14",
              "prosent": 100.0,
              "varsling": null
            }
          ],
          "permitteringer": [
            {
              "id": "PERMITTERING_ID",
              "type": {
                "kode": "permittering",
                "beskrivelse": "Permittering"
              },
              "startdato": "2019-03-15",
              "sluttdato": null,
              "prosent": 100.0,
              "varsling": null
            }
          ],
          "timerMedTimeloenn": [],
          "idHistorikk": [],
          "varsler": [],
          "uuid": "3a80935e-97d7-4d69-bfb8-f7c1185c121a",
          "opprettet": "2019-03-14T13:57:05.180",
          "sistBekreftet": "2019-04-04T13:19:31",
          "sistEndret": "2019-10-10T10:52:46",
          "sjekksum": "3ttAs54geMOCmhJOZcmbHA=="
        }
      ]
    }
  }
}
Eksempel #4
  • ordinært arbeidsforhold
  • ansettelsesperiode med varsling
  • ansettelsesdetaljer (1)
  • permisjoner (0)
  • permitteringer (0)
  • timer-med-timelønn (0)
  • arbeidsforhold-id-historikk (1)
  • varsler (2)
{
  "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": "2018-01-01",
            "sluttdato": "2018-11-30",
            "sluttaarsak": null,
            "varsling": {
              "kode": "IBARBG",
              "beskrivelse": "Sluttdato satt av NAV. Arbeidsforholdet har ikke blitt bekreftet. Sluttdato er siste dato i kalendermåneden som arbeidsforholdet er bekreftet."
            }
          },
          "ansettelsesdetaljer": [
            {
              "type": "Ordinaer",
              "arbeidstidsordning": {
                "kode": "ikkeSkift",
                "beskrivelse": "Ikke skift"
              },
              "ansettelsesform": null,
              "yrke": {
                "kode": "1210160",
                "beskrivelse": "STYREMEDLEM"
              },
              "antallTimerPrUke": 37.5,
              "avtaltStillingsprosent": 100.0,
              "sisteStillingsprosentendring": "2018-01-01",
              "sisteLoennsendring": "2018-01-01",
              "rapporteringsmaaneder": {
                "fra": "2018-01",
                "til": null
              }
            }
          ],
          "permisjoner": [],
          "permitteringer": [],
          "timerMedTimeloenn": [],
          "idHistorikk": [
            {
              "id": "HISTORISK_ARBEIDSFORHOLD_ID"
            }
          ],
          "varsler": [
            {
              "entitet": "Arbeidsforhold",
              "varsling": {
                "kode": "MATCH",
                "beskrivelse": "Arbeidsforholdet er matchet av NAV og har en historikk for arbeidsforhold-id"
              }
            },
            {
              "entitet": "Ansettelsesperiode",
              "varsling": {
                "kode": "IBARBG",
                "beskrivelse": "Sluttdato satt av NAV. Arbeidsforholdet har ikke blitt bekreftet. Sluttdato er siste dato i kalendermåneden som arbeidsforholdet er bekreftet."
              }
            }
          ],
          "uuid": "a1c61883-bfb9-4cc8-a875-398402317da6",
          "opprettet": "2019-02-27T13:02:30.970",
          "sistBekreftet": "2019-03-06T14:56:29",
          "sistEndret": "2019-03-09T18:12:06",
          "sjekksum": "2sabymIPZNa7oHOPySbRyQ=="
        }
      ]
    }
  }
}
Eksempel #5
  • maritimt arbeidsforhold
  • ansettelsesperiode uten varsling
  • ansettelsesdetaljer (1)
  • permisjoner (0)
  • permitteringer (0)
  • timer-med-timelønn (3)
  • arbeidsforhold-id-historikk (0)
  • varsler (0)
{
  "data": {
    "finnArbeidsforholdPrArbeidstaker": {
      "arbeidsforhold": [
        {
          "id": "ARBEIDSFORHOLD_ID",
          "type": {
            "kode": "maritimtArbeidsforhold",
            "beskrivelse": "Maritimt arbeidsforhold"
          },
          "arbeidstaker": {
            "ident": "ARBEIDSTAKER_FNR"
          },
          "arbeidssted": {
            "type": "Underenhet",
            "ident": "UNDERENHET_ORG_NR"
          },
          "opplysningspliktig": {
            "type": "Hovedenhet",
            "ident": "HOVEDENHET_ORG_NR"
          },
          "ansettelsesperiode": {
            "startdato": "2007-03-01",
            "sluttdato": null,
            "sluttaarsak": null,
            "varsling": null
          },
          "ansettelsesdetaljer": [
            {
              "type": "Maritim",
              "arbeidstidsordning": {
                "kode": "ikkeSkift",
                "beskrivelse": "Ikke skift"
              },
              "ansettelsesform": null,
              "yrke": {
                "kode": "3141113",
                "beskrivelse": "MASKINSJEF"
              },
              "antallTimerPrUke": 37.0,
              "avtaltStillingsprosent": 100.0,
              "sisteStillingsprosentendring": "2019-01-01",
              "sisteLoennsendring": "2019-01-01",
              "rapporteringsmaaneder": {
                "fra": "2019-01",
                "til": null
              }
            }
          ],
          "permisjoner": [],
          "permitteringer": [],
          "timerMedTimeloenn": [
            {
              "antall": 45.0,
              "startdato": null,
              "sluttdato": null,
              "rapporteringsmaaned": "2019-01"
            },
            {
              "antall": 27.0,
              "startdato": null,
              "sluttdato": null,
              "rapporteringsmaaned": "2019-02"
            },
            {
              "antall": 15.0,
              "startdato": null,
              "sluttdato": null,
              "rapporteringsmaaned": "2019-03"
            }
          ],
          "idHistorikk": [],
          "varsler": [],
          "uuid": "b383adab-114a-46a5-b192-8689e7902c37",
          "opprettet": "2019-02-08T12:29:55.673",
          "sistBekreftet": "2019-04-03T14:36:04",
          "sistEndret": "2019-09-03T15:38:07",
          "sjekksum": "PHkXIAvma7CA+LcagSbPRg=="
        }
      ]
    }
  }
}

Filtrering

For å ikke utlevere data som er utenfor perioden det spørres på utfører vi filtrering på resultatsettet.

Vi benytter ansattFraMaaned og ansattTilMaaned i GraphQL-spørringen som grunnlag for filtreringen. Egne regler gjelder for filtrering av Ansettelsesdetaljer, se detaljer nedenfor.

Dersom ansattTilMaaned ikke er oppgitt settes denne til nåværende måned.

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.

Tjenesten returnerer alle ansettelsesdetaljer som er rapportert fra og med ansattFraMaaned. Ansettelseasdetaljer for rapporteringsmåneder forut for ansattFraMaaned returneres ikke (se eksempel i tabell).

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.


Eksempler

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-02",
        "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-02 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

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": "2016-11-02T16:34:58",
  "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 (3) 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, og resulterer i ingen overlapp. Siden dette resulterer i ingen ansettelsesdetaljer så 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

Eksempel 3

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": "2016-11-02T16:34:58",
  "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 (3) 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

Scenario 2
Formål

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

Parametre i query
ansattFraMaaned (yyyy-MM) ansattTilMaaned (yyyy-MM)
2020-10 2020-10
Svar fra tjenesten
Objekt Inkluderes Forklaring
Arbeidsforhold Nei sluttdato er før ansattFraMaaned og arbeidsforholdet og alle underelementer ekskluderes fra resultatsettet

Korrelasjon-id’er

Forespørsel

Alle forespørsler som blir behandlet i tjenesten får sin egen unike ID (UUID) - korrelasjon-id - som blir returnert til konsumenten. Korrelasjon-id’en settes i HTTP-response-header’en (correlation-id) for alle HTTP-response 200 OK ( inkl. responser med feil).

Korrelasjon-id har også vært angitt i response-objektet som en del av extensions, men dette er deprekert og vil bli fjernet (etter nærmere avtale med eksisterende konsumenter).

Hvis ønskelig kan konsumenter benytte sin egen korrelasjon-id ved å spesifisere correlation-id i HTTP-request-header’en.

Konsumenter står fritt til å sende inn hva de vil, men vi anbefaler at det genereres en unik ID (UUID).

Ved henvendelser bør korrelasjon-id’en oppgis - det letter behandling av henvendelsen.

Arbeidsforhold

Alle arbeidsforhold har sin egen unike ID - uuid.

Dersom det er behov for å se nærmere på et bestemt arbeidsforhold, enten det er spørsmål om data eller rapportering av feil er det ønskelig at feltet uuid benyttes i kommunikasjonen for å identifisere arbeidsforholdet.

Denne ID’en returneres dersom konsumenten ber feltet uuid i tjenesten finnArbeidsforholdPrArbeidstaker

{
  "data": {
    "finnArbeidsforholdPrArbeidstaker": {
      "arbeidsforhold": [
        {
          "uuid": "unik-arbeidsforhold-uuid"
        }
      ]
    }
  }
}

Feilmeldinger

Spørringer som feiler vil respondere med en 200 HTTP-status og en json-body med en errors-liste, samt et felt som angir typen feil under “classification”.

Feilkoder og forklaring

Feilkode Forklaring Classification
AA-051 Ugyldig verdi for “opplysningspliktidId” ValidationError
AA-052 Ugyldig verdi for “arbeidstakerId” ValidationError
AA-053 Ugyldig verdi for “ansattFraMaaned” ValidationError
AA-054 Ugyldig verdi for “ansattTilMaaned” ValidationError
AA-055 “ansattTilMaaned” er før “ansattFraMaaned” ValidationError
AA-056 Ugyldig verdi for “rapporteringFraMaaned” ValidationError
AA-057 Ugyldig verdi for “rapporteringTilMaaned” ValidationError
AA-058 “rapporteringTilMaaned” er før “rapporteringFraMaaned” ValidationError
AA-101 Mangler tilgang for en eller flere perioder ExecutionAborted
AA-102 Ingen tilgang grunnet skjerming ExecutionAborted
AA-201 En ukjent feil oppstod ExecutionAborted

Eksempler (feilmeldinger)

Tilgang(er) mangler for periode(r)

{
  "errors": [
    {
      "message": "Tilgang(er) mangler",
      "extensions": {
        "errormessages": [
          {
            "code": "AA-101",
            "message": "Ingen tilgang for periode",
            "details": "2016-11"
          },
          {
            "code": "AA-101",
            "message": "Ingen tilgang for periode",
            "details": "2016-12"
          }
        ],
        "classification": "ExecutionAborted"
      }
    }
  ]
}

Valideringsfeil for variabelverdi(er)

{
  "errors": [
    {
      "message": "Ugyldig input",
      "extensions": {
        "errormessages": [
          {
            "code": "AA-051",
            "message": "Validering av parameter feilet",
            "details": "opplysningspliktidId"
          },
          {
            "code": "AA-053",
            "message": "Validering av parameter feilet",
            "details": "ansattFraMaaned"
          }
        ],
        "classification": "ValidationError"
      }
    }
  ]
}

Valideringsfeil for variabelnavn

{
  "errors": [
    {
      "message": "Variable 'opplysningspliktigId' has coerced Null value for NonNull type 'ID!'",
      "locations": [
        {
          "line": 1,
          "column": 7
        }
      ],
      "extensions": {
        "classification": "ValidationError"
      }
    }
  ]
}

Ingen tilgang grunnet skjerming

{
  "errors": [
    {
      "message": "Ingen tilgang",
      "extensions": {
        "errormessages": [
          {
            "code": "AA-102",
            "message": "Skjerming",
            "details": null
          }
        ],
        "classification": "ExecutionAborted"
      }
    }
  ]
}