Person API information model
This page provides a concise introduction to the information model used in the Person API. While the technical specification is available in the OpenAPI specification, this document offers a more human-readable overview of the data structure.
The Person API's information model is a superset of the model used by the National Population Register ("Folkeregisteret/FREG"). While maintaining the same core structure, the Person API enriches certain data points beyond FREG's base data. For details on these enrichments, see: Enrichments
For comprehensive information about FREG's information model, refer to: Folkeregisterets informasjonsmodell or the latest documentation: Informasjonsmodell v4.51
General Structure and Information Metadata
The person document consists of distinct information parts, typically provided as lists. Each list item represents a specific piece of information with associated metadata, indicating its current status (valid or historic), registration details, source information, etc.
Key metadata fields for each information item:
Metadata JSON Name | FREG Name | Data Type | Description |
---|---|---|---|
isValid | erGjeldende | boolean | Indicates whether this information is currently valid and in use |
registeredAt | ajourholdstidspunkt | datetime | Registration timestamp in FREG |
source | kilde | string | Information source (e.g., individual, UDI, hospital) |
reason | aarsak | string | Registration reason (e.g., "født i Norge" (born in Norway) or "innflyttet til Norge" (immigrated to Norway) for resident status) |
validFrom | gyldighetstidspunkt | datetime | Timestamp when the information became valid (e.g., a national identity number is valid from birth but may be registered later) |
validTo | opphoerstidspunkt | datetime | Expiration timestamp for historical information |
A minified json sample from test data for a persons name with relevant metadata is given below:
{
"name": [
{
"givenName": "RAKRYGGET",
"familyName": "ABBED",
"registeredAt": "2022-02-22T07:36:17.753116Z",
"isValid": true,
"source": "Synutopia",
"reason": "Patch",
"validFrom": "2022-02-22T07:36:17.753113Z",
"validTo": null
}
]
}
A complete JSON response example is available in the JSON Response Example section below.
Common Information Parts
The Person API returns information as lists containing both current and historical data. Each list item is marked with
an isValid
flag to indicate whether it represents current or historical information. There are three main patterns:
- Single Valid Item: Some fields, like Norwegian identification numbers (NINs), must have exactly one valid item
- Multiple Valid Items: Fields like family relations can have multiple concurrent valid items
- Empty or Historical: Empty (
null
) fields are ignored in the response. Fields can contain only historical records.
The table below summarizes the most commonly used information parts and their characteristics:
Information Part | JSON Node Name | Valid Items | Description | |
---|---|---|---|---|
Norwegian Identification Numbers (NINs) | norwegianIdentificationNumber | 1 | The person's current and historical identification numbers. Exactly one number must be valid at any time. | |
Name | name | 1 | The person's current and historical names. Only one name can be valid at a time. | |
Gender | gender | 1 | The person's gender information. Only one gender can be valid at a time. | |
Person Status | status | 1 | Current status in Norway (resident, deceased, emigrated, etc). One status must be valid. | |
Birth | birth | 1 | Birth information. Typically contains a single record. | |
Death | death | N/A | Death information if applicable. Not a list - either contains data or is null . |
|
Family Relations | familyRelation | 0-n | Current and historical family relationships. Multiple relationships can be valid concurrently. | |
Parental Responsibility | parentalResponsibility | 0-n | Current and historical parental responsibilities. Multiple records can be valid concurrently. | |
Address Protection | addressProtection | 0-1 | The person's overall address protection level across residential, present, and shared residence addresses. Can be set to: unclassified, confidential, or strictly confidential. When no data (null ), treated as unclassified. |
|
Common Contact Register Information (KRR) | commonContactRegisterInformation | N/A | Contact information from the Common Contact Register (KRR). Contains only current valid information without history. Either present with data or null if no information exists. |
Address Information
The Person API and FREG support multiple address types for each person. The appropriate address type depends on your use case (e.g., postal communication versus determining physical residence). For detailed information about addresses, refer to chapter 5.9 in the FREG Information Model Documentation.
Available address types:
Address Type | JSON Node Name | Valid Items | Description |
---|---|---|---|
Residential Address | residentialAddress | 0-1 | Primary residential address for Norwegian citizens with a national identity number (fødselsnummer). Must match the Norwegian Property Register (Matrikkelen). |
Present Address | presentAddress | 0-1 | Temporary address for non-residents with a d-number. Limited to one valid address at a time. |
Shared Residence | sharedResidence | 0-1 | Additional residence address, typically used for children with shared custody arrangements. |
Postal Address | postalAddress | 0-1 | Alternative mailing address when regular mail should not go to the residential address. |
Foreign Postal Address | foreignPostalAddress | 0-1 | International mailing address for persons residing abroad. |
Additional Information
The Person API includes other relevant information types such as:
- Marital status
- Citizenship
- Additional identifiers
- Family relationships
For comprehensive documentation of these fields, refer to the FREG Information Model.
For questions about the Person API or its information model, contact us at utvikling-persontjenesten@nhn.no.
JSON Response Example
Below is a representative JSON response from our test environment. While not exhaustive, it demonstrates typical data structures and relationships. Note that in version 3 of the API, null values are omitted from responses.
Json example
{
"id": "b55209b9-0be0-43c3-b1df-4d3e3cdeda63",
"sequenceNumber": 185183,
"norwegianIdentificationNumber": [
{
"status": "InUse",
"identificationNumber": "06896496989",
"identificationNumberType": "NationalIdentityNumber",
"registeredAt": "2020-12-22T16:08:24.354Z",
"isValid": true,
"source": "KILDE_DSF"
}
],
"identityVerification": [],
"residuaryEstateContactInformation": [],
"identificationDocument": [],
"status": [
{
"status": "Resident",
"registeredAt": "2020-12-22T16:08:24.354Z",
"isValid": true,
"source": "KILDE_DSF",
"validFrom": "2020-12-22T16:08:24.354Z"
}
],
"immigrationAuthoritiesIdentificationNumber": [],
"foreignPersonIdentificationNumber": [],
"sharedResidence": [],
"gender": [
{
"gender": "Male",
"isValid": true,
"source": "KILDE_DSF"
}
],
"birth": [
{
"birthDate": "1964-09-06T00:00:00Z",
"birthYear": "1964",
"birthMunicipalityNumber": "3020",
"birthCountry": "NOR",
"registeredAt": "2022-02-18T13:35:07.043124Z",
"isValid": true,
"source": "Synutopia",
"validFrom": "1964-09-06T13:35:07.04312Z"
}
],
"birthInNorway": [
{
"organizationName": "Bra Testinstitusjon",
"multipleBirthNumber": 11,
"registeredAt": "2022-02-18T13:35:07.13083Z",
"isValid": true,
"source": "Synutopia",
"reason": "Fødsel",
"validFrom": "1964-09-06T13:35:07.13083Z"
}
],
"familyRelation": [
{
"relatedPerson": "26879497719",
"relatedPersonsRole": "Child",
"myRoleForRelatedPerson": "Father",
"registeredAt": "2022-02-18T13:35:06.690672Z",
"isValid": true,
"source": "Synutopia",
"reason": "Patch",
"validFrom": "1994-07-25T23:00:00Z"
},
{
"relatedPerson": "13926298253",
"relatedPersonsRole": "SpouseOrPartner",
"myRoleForRelatedPerson": "SpouseOrPartner",
"registeredAt": "2022-03-11T15:35:30.391334Z",
"isValid": true,
"source": "Synutopia",
"reason": "Patch",
"validFrom": "1991-02-09T15:35:30.143021Z"
},
{
"relatedPerson": "22848797212",
"relatedPersonsRole": "Child",
"myRoleForRelatedPerson": "Father",
"registeredAt": "2022-02-23T14:55:25.645122Z",
"isValid": true,
"source": "Synutopia",
"reason": "Patch",
"validFrom": "1987-04-21T23:00:00Z"
},
{
"relatedPerson": "07893049740",
"relatedPersonsRole": "Father",
"myRoleForRelatedPerson": "Child",
"registeredAt": "2022-03-11T15:35:31.290816Z",
"isValid": true,
"source": "Synutopia",
"reason": "Patch",
"validFrom": "1964-09-05T23:00:00Z"
},
{
"relatedPerson": "04922649486",
"relatedPersonsRole": "Mother",
"myRoleForRelatedPerson": "Child",
"registeredAt": "2022-03-11T15:35:31.062102Z",
"isValid": true,
"source": "Synutopia",
"reason": "Patch",
"validFrom": "1964-09-05T23:00:00Z"
}
],
"maritalStatus": [
{
"status": "Married",
"statusDate": "1991-02-09T00:00:00Z",
"authority": "DEN_NORSKE_KIRKE",
"municipalityNumber": "0301",
"municipalityName": "Oslo",
"countyNumber": "03",
"countyName": "Oslo",
"place": "Sist Testkirke",
"relatedByMaritalStatus": "13926298253",
"registeredAt": "2022-03-11T15:35:30.143022Z",
"isValid": true,
"source": "Synutopia",
"reason": "Patch",
"validFrom": "1991-02-09T15:35:30.143021Z"
}
],
"name": [
{
"givenName": "FRISK",
"familyName": "BÅT",
"registeredAt": "2022-02-18T13:35:07.224651Z",
"isValid": true,
"source": "Synutopia",
"reason": "Patch",
"validFrom": "2022-02-18T13:35:07.224649Z"
}
],
"addressProtection": [],
"residentialAddress": [
{
"streetAddress": {
"separatelyOccupiedUnitNumber": "H0202",
"separatelyOccupiedUnitType": "Housing",
"addressName": "Kirkegata",
"addressNumber": {
"houseNumber": "19",
"houseLetter": "B"
},
"addressCode": "13707",
"city": {
"cityName": "OSLO",
"postalCode": "0153"
},
"municipalityNumber": "0301",
"municipalityName": "Oslo",
"countyNumber": "03",
"countyName": "Oslo"
},
"cadastralIdentifier": "285856075",
"addressConfidentiality": "Unclassified",
"moveDate": "2022-03-11T00:00:00Z",
"basicStatisticalUnit": 102,
"fullBasicStatisticalUnitNumber": "03010102",
"basicStatisticalUnitName": "Sentrum 1 - Rode 2",
"constituency": 1601,
"schoolDistrict": 216,
"churchDistrict": 5,
"urbanDistrictCode": "030104",
"urbanDistrictName": "St.Hanshaugen",
"geographicalUrbanDistrictCode": "030116",
"geographicalUrbanDistrictName": "Sentrum",
"registeredAt": "2022-03-11T15:35:33.018848Z",
"isValid": true,
"source": "Synutopia",
"reason": "Flytting innenlands",
"validFrom": "2022-03-10T23:00:00Z"
}
],
"presentAddress": [
{
"isAddressUnknown": true,
"addressConfidentiality": "Unclassified",
"presentAddressDate": "2022-12-18T00:00:00Z",
"stayElsewhere": "Military",
"registeredAt": "2022-12-18T10:01:01.189209Z",
"isValid": true,
"source": "Synutopia",
"reason": "Oppholdsadresse og opphold annet sted",
"validFrom": "2022-12-17T23:00:00Z"
}
],
"immigrationToNorway": [],
"emigrationFromNorway": [],
"useOfSamiLanguage": [],
"samiParliamentElectoralRegistryStatus": [],
"postalAddress": [
{
"addressConfidentiality": "Unclassified",
"postBoxAddress": {
"postBoxIdentification": "Test 61",
"city": {
"cityName": "VESTSIDA",
"postalCode": "2863"
}
},
"registeredAt": "2022-12-18T10:01:00.568046Z",
"isValid": true,
"source": "Synutopia",
"reason": "Oppholdsadresse og opphold annet sted",
"validFrom": "2022-12-17T23:00:00Z"
}
],
"foreignPostalAddress": [],
"parentalResponsibility": [],
"citizenship": [
{
"countryCode": "NOR",
"aquiredDate": "1964-09-06T00:00:00Z",
"registeredAt": "2022-02-18T13:35:07.316077Z",
"isValid": true,
"source": "Synutopia",
"reason": "Fødsel",
"validFrom": "1964-09-06T13:35:07.316093Z"
}
],
"citizenshipRetention": [],
"residencePermit": [],
"stayOnSvalbard": [],
"guardianshipOrFuturePowerOfAttorney": [],
"legalAuthority": [],
"commonContactRegisterInformation": {
"reservation": "No",
"status": "Active",
"notificationStatus": "CanBeNotified",
"contactInformation": {
"email": "kjetil.braadland@capgemini.com",
"emailLastUpdated": "2023-11-15T12:39:49+01",
"emailLastVerified": "2023-11-15T12:39:49+01",
"phoneNumber": "+4741522179",
"phoneNumberLastUpdated": "2023-11-15T12:39:49+01",
"phoneNumberLastVerified": "2023-11-15T12:39:49+01"
},
"digitalPost": {}
}
}