https://github.com/fintlabs/fint-kontroll-orgunit-service
https://github.com/fintlabs/fint-kontroll-orgunit-service
bas
Last synced: 3 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/fintlabs/fint-kontroll-orgunit-service
- Owner: FINTLabs
- Created: 2026-02-09T13:55:40.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-04-20T13:54:26.000Z (2 months ago)
- Last Synced: 2026-04-20T15:37:21.853Z (2 months ago)
- Topics: bas
- Language: Kotlin
- Homepage:
- Size: 111 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FINT-KONTROLL-ORGUNIT-SERVICE
Denne tjenesten er en del av FINT-KONTROLL. Den konsumerer organisasjonselementer fra Kafka, mapper dem til `OrgUnit`, lagrer dem i databasen og publiserer resultatet videre til Kafka. Tjenesten beregner også `OrgunitDistance` og eksponerer et API for oppslag i orgunit-strukturen.
Se også [Arkitettur, struktur og flyt](docs/architecture.md)
## Beskrivelse
1. Leser `OrganisasjonselementResource` fra Kafka.
2. Lagrer innkommende meldinger i cache.
3. Mapper data til intern `OrgUnit`.
4. Oppdaterer databasen.
5. Publiserer `OrgUnit` til Kafka.
6. Leser publiserte `OrgUnit` tilbake inn i cache.
7. Genererer og publiserer `OrgunitDistance` periodisk.
8. Eksponerer orgunits via REST API.
## OrgUnit modell
| Fieldname | Type | Nullable |
|---------------------|---------------|----------|
| id | Long | Yes |
| resourceId | String | No |
| organisationUnitId | String | No |
| name | String | No |
| shortName | String | Yes |
| parentRef | String | No |
| managerRef | String | Yes |
| childrenRef | List | Yes |
## OrgUnitDistance modell
| Fieldname | Type | Nullable |
|-----------------|---------------|----------|
| id | Long | Yes |
| orgUnitId | String | No |
| subOrgUnitId | String | No |
| distance | Int | No |
orgUnitId og subOrgUnitId er referanser til organisationUnitId på OrgUnit objectet.
## kafka topics
### consumer
- `administrasjon-organisasjon-organisasjonselement`
- `orgunit`
- `orgunitdistance`
**.kontroll.entity.administrasjon-organisasjon-organisasjonselement**
| Property |
|-----------------------------------------|
| .continueFromPreviousOffsetOnAssignment |
```json
Eksempel på organisasjonselement:
{
"gyldighetsperiode": {
"slutt": "2030-12-31T00:00:00Z",
"start": "2023-01-01T00:00:00Z"
},
"kortnavn": "FAK",
"navn": "FAK Finans og administrasjon",
"organisasjonsId": {
"identifikatorverdi": "5"
},
"organisasjonsKode": {
"identifikatorverdi": "V30"
},
"organisasjonsnavn": "FAK Finans og administrasjon",
"organisasjonsnummer": {
"identifikatorverdi": "5"
},
"_links": {
"overordnet": [
{
"href": "https://beta.felleskomponent.no/administrasjon/organisasjon/organisasjonselement/organisasjonsid/1"
}
],
"underordnet": [
{
"href": "https://beta.felleskomponent.no/administrasjon/organisasjon/organisasjonselement/organisasjonsid/26"
},
{
"href": "https://beta.felleskomponent.no/administrasjon/organisasjon/organisasjonselement/organisasjonsid/36"
}
],
"leder": [
{
"href": "https://beta.felleskomponent.no/administrasjon/personal/personalressurs/ansattnummer/1002"
}
],
"arbeidsforhold": [
{
"href": "https://beta.felleskomponent.no/administrasjon/personal/arbeidsforhold/systemid/5dad7056-d9bd-4c7d-ae3c-09e16344ab5d"
},
{
"href": "https://beta.felleskomponent.no/administrasjon/personal/arbeidsforhold/systemid/2d1c057e-6e85-4e40-8937-3abec7233db1"
},
{
"href": "https://beta.felleskomponent.no/administrasjon/personal/arbeidsforhold/systemid/ed3f08da-f4e8-40dd-8547-cfaeb6897fc5"
}
],
"self": [
{
"href": "https://beta.felleskomponent.no/administrasjon/organisasjon/organisasjonselement/organisasjonsid/5"
},
{
"href": "https://beta.felleskomponent.no/administrasjon/organisasjon/organisasjonselement/organisasjonskode/V30"
}
]
}
}
```
**.kontroll.entity.orgunit**
```json
Eksempel på orgUnit
{
"id": 3,
"resourceId": "https://beta.felleskomponent.no/administrasjon/organisasjon/organisasjonselement/organisasjonsid/26",
"organisationUnitId": "26",
"name": "OKO Økonomiavdeling",
"shortName": "OKO",
"parentRef": "5",
"managerRef": "[https://beta.felleskomponent.no/administrasjon/personal/personalressurs/ansattnummer/1005]",
"childrenRef": [
"27",
"30"
],
"allSubOrgUnitsRef": [
"27",
"30"
]
}
```
**kontroll.entity.orgunitdistance**
| Property |
|--------------------|
| .seekToBeginningOnAssignment |
```json
Eksempler på orgUnitDistance
{
"id": "89_89",
"orgUnitId": "89",
"subOrgUnitId": "89",
"distance": 0
}
og
{
"id": "84_89",
"orgUnitId": "84",
"subOrgUnitId": "89",
"distance": 1
}
```
### producer
- `orgunit`
- `orgunitdistance`
**.kontroll.entity.orgunit**
| Property |
|-----------------------------------------|
| .lastValueRetainedForever |
```json
Eksempel: se consumer
```
**.kontroll.entity.orgunit-distance**
| Property |
|-----------------------------------------|
| .lastValueRetainedForever |
```json
Eksempel: se consumer
```
## API
Swagger UI er tilgjengelig på `http://localhost:/swagger-ui/index.html`.
Endepunkter:
- `GET /api/orgunits`
- `GET /api/orgunits/{id}`
- `GET /api/orgunits/{id}/parents`
- `GET /api/orgunits/{id}/children`