# Fra Datafordelerens DAR GraphQL tilbage til REST

> Find det REST-endpoint, der svarer til din DAR GraphQL-forespørgsel, og forstå hvilke id'er der passer sammen, og hvilke der ikke gør.
>
> https://danadresse.dk/guides/migrer-fra-datafordeleren · verified 2026-11-02
Nogle teams flyttede fra DAWA til Danmarks Adresseregister (DAR) på Datafordeleren, før DAWA lukkede. DAR's GraphQL-tjeneste indeholder de samme data, men på registerets egen form: mange små entiteter, der refererer til hinanden med UUID'er, og forespørgsler, der skal have et registrerings- og virkningstidspunkt.

Danadresse henter adresserne fra DAR og serverer dem i DAWA's REST-form. Denne guide viser, hvilket endpoint der svarer til den forespørgsel, du har i dag, og hvordan id'erne hænger sammen.

## Det, du slipper for

En adresse i DAR er spredt over flere entiteter. For at vise "Rådhuspladsen 1, 1550 København V" med koordinat og kommune skal du typisk hente:

- `DAR_Husnummer` (husnummeret og referencer til vej, postnummer og adgangspunkt),
- `DAR_NavngivenVej` (vejnavnet),
- `DAR_NavngivenVejKommunedel` (kommune og vejkode),
- `DAR_Postnummer` (postnummer og navn),
- `DAR_Adressepunkt` (koordinaten).

Hver forespørgsel skal have argumenterne `registreringstid` og `virkningstid`, og du skal selv sætte svarene sammen. Hos os er det ét kald, og svaret har allerede vejnavn, postnummer, kommune, koordinat og de administrative områder indlejret.

Sådan ser et opslag af et husnummer ud i DAR GraphQL. Feltnavnene er fra DAR's offentlige skema:

```graphql id=dar-query run=no
{
  DAR_Husnummer(
    where: { id_lokalId: { eq: "0a3f507a-ec01-32b8-e044-0003ba298018" } }
    registreringstid: "2026-10-15T00:00:00Z"
    virkningstid: "2026-10-15T00:00:00Z"
    first: 1
  ) {
    nodes { id_lokalId husnummertekst status navngivenVej postnummer adgangspunkt }
  }
}
```

`navngivenVej`, `postnummer` og `adgangspunkt` er UUID-referencer, som kræver tre forespørgsler mere. Det samme opslag hos os:

```bash id=rest-lookup run=live expect="adressebetegnelse"
curl -s "https://api.danadresse.dk/adgangsadresser/0a3f507a-ec01-32b8-e044-0003ba298018" \
  -H "X-Api-Key: $DANADRESSE_API_KEY"
```

Her læser vi de felter, du før skulle samle fra fem entiteter. `srid=25832` giver koordinaten i ETRS89/UTM32, samme system som DAR's adressepunkter:

```python id=rest-fields run=live expect="Rådhuspladsen"
import os

import requests

r = requests.get(
    "https://api.danadresse.dk/adgangsadresser/0a3f507a-ec01-32b8-e044-0003ba298018",
    params={"srid": 25832},
    headers={"X-Api-Key": os.environ["DANADRESSE_API_KEY"]},
    timeout=10,
)
r.raise_for_status()
a = r.json()
print("vej:      ", a["vejstykke"]["navn"], a["husnr"])
print("postnr:   ", a["postnummer"]["nr"], a["postnummer"]["navn"])
print("kommune:  ", a["kommune"]["kode"], a["kommune"]["navn"])
print("vejkode:  ", a["vejstykke"]["kode"])
print("sogn:     ", (a.get("sogn") or {}).get("navn"))
print("øst/nord: ", a["adgangspunkt"]["koordinater"])
```

## Id'erne er de samme

Det vigtigste for en migrering: de id'er, du har gemt fra DAR, virker direkte hos os.

| DAR-entitet | Felt | Hos Danadresse |
|---|---|---|
| `DAR_Adresse` | `id_lokalId` | `id` på en adresse – `/adresser/{id}` |
| `DAR_Husnummer` | `id_lokalId` | `id` på en adgangsadresse – `/adgangsadresser/{id}` |
| `DAR_Adresse` | `husnummer` | `adgangsadresseid` på en adresse |
| `DAR_NavngivenVej` | `id_lokalId` | `id` på en navngiven vej – `/navngivneveje/{id}` |
| `DAR_Postnummer` | `postnr` | `nr` – `/postnumre/{nr}`. Vi bruger det firecifrede nummer, ikke `id_lokalId` |
| `DAR_NavngivenVejKommunedel` | `kommune`, `vejkode` | `/vejstykker/{kommunekode}/{kode}` |

Det er de samme UUID'er, som DAWA brugte, fordi DAWA også byggede på DAR.

Pas på med adressereferencer fra andre registre. CVR på Datafordeleren refererer fx til adresser med andre UUID'er, som ikke matcher DAR's `id_lokalId`. Vil du koble data fra sådan et register med vores adresser, så brug den strukturerede adresse: kommunekode, vejkode og husnummer (plus etage og dør for en enhed). Vi udstiller den samme kombination som `kvh` (12 tegn) på adgangsadresser og `kvhx` (19 tegn) på adresser, og du kan søge på dem med `/adgangsadresser?kvh=…` og `/adresser?kvhx=…`.

## Opgave for opgave

| Opgave | I DAR GraphQL | Hos Danadresse |
|---|---|---|
| Søg-mens-du-skriver | Findes ikke. Du filtrerer selv | `GET /autocomplete?q=…` |
| Slå en adresse op | `DAR_Adresse` + `DAR_Husnummer` + vej, postnummer og adressepunkt | `GET /adresser/{id}` |
| Slå en adgangsadresse op | `DAR_Husnummer` + referencerne | `GET /adgangsadresser/{id}` |
| Alle adresser i et postnummer | Filtrér `DAR_Husnummer` på postnummer-referencen | `GET /adgangsadresser?postnr=8000` med `side` og `per_side` |
| Vejnavne | `DAR_NavngivenVej` | `/navngivneveje`, `/vejnavne` |
| Postnumre | `DAR_Postnummer` | `/postnumre` |
| Supplerende bynavn | `DAR_SupplerendeBynavn` | Feltet `supplerendebynavn` og `/supplerendebynavne2` |
| Kommune, sogn, politikreds m.fl. | Referencer fra `DAR_Husnummer` til DAGI, som du slår op i DAGI-registret | Indlejret i adgangsadressen: `kommune`, `sogn`, `region`, `retskreds`, `politikreds`, `opstillingskreds`, `afstemningsområde` m.fl. |
| Koordinat til adresse | Ikke en DAR-funktion | `/adgangsadresser/reverse?x=…&y=…` |
| Rens en indtastet adresse | Ikke en DAR-funktion | `/datavask/adresser?betegnelse=…` |
| Hent ændringer | `DAR_Events` eller filtrering på `registreringFra` | `/replikering/haendelser?entitet=…&sekvensnummerfra=…` eller webhooks |

## Status og tid

DAR har sine egne statuskoder. Vi oversætter dem til DAWA's `status`:

| DAR-status | Betydning | `status` hos os |
|---|---|---|
| 2 | foreløbig | 3 |
| 3 | gældende | 1 |
| 4 | nedlagt | 2 |
| 5 | henlagt | 4 |

Lister returnerer gældende og foreløbige adresser (`status` 1 og 3), som DAWA gjorde, medmindre du beder om mere med `status` eller `medtagnedlagte`. Autocomplete foreslår kun adresser, der ikke er nedlagt. Hver adresse har også DAR's egen kode som `darstatus`. Se [status, darstatus og nedlagte adresser](/guides/status-og-darstatus).

Vores API viser det aktuelle billede. Der er ingen parametre svarende til `registreringstid` og `virkningstid`. Versionerne af én adresse over tid får du med `/historik/adresser?id=…` og `/historik/adgangsadresser?id=…`: en liste af versioner med `virkningstart`, `virkningslut` og `status`, som i DAWA. Versionerne bygges ud fra vores ændringslog, som starter i juli 2026. Har du brug for DAR's fulde bitemporale model (hvad registret vidste på et bestemt registreringstidspunkt), så brug DAR direkte.

## Ændringer og sekvensnumre

`DAR_Events` har intet sekvensnummer, så du skal selv holde styr på, hvor langt du er nået, typisk med tidsvinduer på `registreringFra`. Vi giver hver ændring et stigende `sekvensnummer` i DAWA's replikeringsformat. Du gemmer det sidste nummer, du har behandlet, og spørger efter alt derefter. Se [Hent ændringer med hændelser](/guides/replikering-haendelser).

Sekvensnumrene er vores egne. De stiger videre fra det sted, hvor DAWA's nummerering slap, men de findes ikke i DAR og kan ikke sammenlignes med noget der.

## Næste skridt

- Forskellen på adresse og adgangsadresse: [Adresse eller adgangsadresse](/guides/adresse-vs-adgangsadresse).
- Hele datasættet lokalt: [Første udtræk](/guides/replikering-foerste-udtraek).
- Kendte forskelle fra DAWA: [Skift fra DAWA](/guides/migrer-fra-dawa#5-kendte-huller).
