Modeller¶
Alle API-responser bruger camelCase JSON og UTC timestamps (ISO 8601, fx 2026-05-26T10:15:00Z). GUID'er returneres som strenge.
Model-oversigt¶
| Model | Beskrivelse | Endpoints |
|---|---|---|
| UserProfile | Bruger + organisationskontekst | GET /v1/user |
| Authorization | Management-autorisation | GET /v1/user/authorizations |
| Group | Flad gruppe | GET /v1/user/group |
| GroupTreeNode | Rekursivt gruppe-træ | GET /v1/user/group/parents |
Felt-konventioner¶
| Type | Format | Eksempel |
|---|---|---|
| string | UTF-8 tekst | "Anna" |
| integer | 64-bit heltal for groupId | 12345 |
| guid | UUID-streng | "550e8400-e29b-41d4-a716-446655440000" |
| boolean | true / false |
"isAuthorization": false |
| datetime | ISO 8601 UTC | "2026-05-26T10:15:00Z" |
| nullable | null i JSON |
"organisationGroupOverride": null |
UserProfile¶
Brugerprofil og effektiv organisationskontekst. Returneres af GET /v1/user.
Felter¶
| Felt | Type | Nullable | Beskrivelse |
|---|---|---|---|
email |
string | nej | Brugerens e-mail (primær identitet) |
firstname |
string | nej | Fornavn |
lastname |
string | nej | Efternavn |
organisationId |
string (GUID) | nej | Organisations-GUID for effektiv kontekst |
organisationName |
string | nej | Visningsnavn for effektiv organisation |
organisationGroup |
integer | nej | Effektiv gruppe-ID — brug i alle gruppe-queries |
organisationGroupOverride |
integer | ja | Override for external bruger (allerede afspejlet i organisationGroup) |
authorizationId |
integer | ja | Aktiv autorisations-ID når isAuthorization er true |
isAuthorization |
boolean | nej | true når brugeren arbejder i autorisations-kontekst |
hasAvailableAuthorizations |
boolean | nej | Brugeren har mindst én management-autorisation |
roles |
string | nej | Komma-separeret rolle-liste |
sessionId |
string | nej | Session-id til spor/diagnose |
application |
string | nej | Keycloak-klient (azp) der identificerer kaldende app |
userType |
string | nej | local eller external |
timestamp |
datetime | nej | Tidspunkt for profil-generering (UTC) |
JSON-eksempel¶
{
"email": "bruger@eksempel.dk",
"firstname": "Anna",
"lastname": "Hansen",
"organisationId": "550e8400-e29b-41d4-a716-446655440000",
"organisationName": "Eksempel Kommune",
"organisationGroup": 12345,
"organisationGroupOverride": null,
"authorizationId": null,
"isAuthorization": false,
"hasAvailableAuthorizations": true,
"roles": "meeting-user,management-admin",
"sessionId": "abc123-session-id",
"application": "din-keycloak-klient-id",
"userType": "external",
"timestamp": "2026-05-26T10:15:00Z"
}
Brug¶
- Single source of truth for organisationskontekst — brug ikke JWT-claims direkte til
organisationGroup/organisationName. - Ved autorisationsskift opdateres
organisationGroup,organisationName,isAuthorizationogauthorizationIdautomatisk.
Se også GET /v1/user, Best practices og Authorization.
Authorization¶
En management-autorisation der giver brugeren adgang til at arbejde i en anden organisations gruppe. Returneres som element i array fra GET /v1/user/authorizations.
Felter¶
| Felt | Type | Nullable | Beskrivelse |
|---|---|---|---|
id |
integer | nej | Autorisations-ID — bruges som X-VDX-AuthorizationId |
groupId |
integer | nej | Gruppe brugeren får adgang til |
groupName |
string | nej | Visningsnavn for gruppen |
role |
string | nej | Rolle i autorisations-kontekst (fx management-admin) |
lastUse |
datetime | ja | Seneste brug af autorisationen (UTC) |
JSON-eksempel¶
{
"id": 42,
"groupId": 67890,
"groupName": "Region Nord",
"role": "management-admin",
"lastUse": "2026-05-20T14:30:00Z"
}
Brug¶
- Hent listen via
GET /v1/user/authorizations. - Vis
groupNameogrolei UI. - Ved valg: send
idsomX-VDX-AuthorizationIdpå efterfølgende kald.
Listen filtreres ikke af aktiv autorisations-header — den viser altid alle autorisationer brugeren ejer.
Se også GET /v1/user/authorizations, Autorisationsskift og UserProfile.
Group¶
Flad gruppe-repræsentation for den effektive organisationskontekst. Returneres af GET /v1/user/group.
Felter¶
| Felt | Type | Nullable | Beskrivelse |
|---|---|---|---|
organisationId |
string (GUID) | nej | Organisations-GUID knyttet til gruppen |
name |
string | nej | Gruppens visningsnavn |
groupId |
integer | nej | Gruppe-ID |
JSON-eksempel¶
{
"organisationId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Region Nord",
"groupId": 67890
}
Brug¶
- Returnerer gruppen for effektiv kontekst — respekterer
X-VDX-AuthorizationIdhvis sat. - Sammenlign med
organisationGroupi UserProfile — værdierne bør matche i samme kontekst.
Se også GET /v1/user/group og GroupTreeNode.
GroupTreeNode¶
Nested træ-struktur fra rodgruppe ned til den effektive gruppe. Returneres af GET /v1/user/group/parents.
Felter¶
| Felt | Type | Nullable | Beskrivelse |
|---|---|---|---|
organisationId |
string (GUID) | nej | Organisations-GUID for denne node |
name |
string | nej | Gruppens visningsnavn |
groupId |
integer | nej | Gruppe-ID for denne node |
children |
array of GroupTreeNode | nej | Undergrupper (kan være tom array []) |
JSON-eksempel¶
{
"organisationId": "00000000-0000-0000-0000-000000000001",
"name": "VDX Root",
"groupId": 1,
"children": [
{
"organisationId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Eksempel Kommune",
"groupId": 12345,
"children": []
}
]
}
Brug¶
- Træet bygges fra rod ned til brugerens effektive gruppe.
- Respekterer
X-VDX-AuthorizationId— ved autorisationsskift ender træet ved autorisationsgruppen.
Se også GET /v1/user/group/parents og Group.
Se også¶
- Endpoints — API-reference
- Best practices — brug
/v1/usersom sandhedskilde