Vask adresser i Make med HTTP-modulet
Opsæt HTTP-modulet i et Make-scenarie mod datavask, map felterne korrekt, og håndter 429 og fejl med en router eller en error handler.
Make har ikke brug for en særlig Danadresse-app. Det indbyggede HTTP-modul kalder API'et direkte, og med Parse response slået til bliver svaret til felter, du kan mappe videre. Den korte opskrift står på /integrationer/make. Denne guide går længere: præcis feltmapping, nøglen i en header, og hvad du gør ved fejl og 429.
1. Opsæt HTTP-modulet
Tilføj HTTP → Make a request efter det modul, der leverer adressen (Google Sheets, en webhook, dit CRM). Udfyld:
| Felt | Værdi |
|---|---|
| URL | https://api.danadresse.dk/datavask/adgangsadresser |
| Method | GET |
| Headers | Name X-Api-Key, Value din nøgle |
| Query String | Name betegnelse, Value adressen fra forrige modul, fx {{1.Adresse}} |
| Parse response | Yes |
Send nøglen som header frem for api_key i query-strengen. Query-strengen står i scenariets kørselslog sammen med URL'en, så alle med adgang til loggen kan se nøglen. Har dit HTTP-modul et felt til godkendelse med en API-nøgle, kan du gemme nøglen der med header-navnet X-Api-Key.
/datavask/adgangsadresser matcher opgangen (vej, husnummer, postnummer). Skal du ramme en bestemt lejlighed, så brug /datavask/adresser: den læser etage og dør direkte fra betegnelse (Strandvejen 100, 2. tv, 2900 Hellerup), og adresse har så også etage, dør og adgangsadresseid. Har du delene i separate felter, kan du i stedet sende vejnavn, husnr, etage, dør og postnr som hver sin query-parameter.
2. Map felterne
Med Parse response ligger svaret under data. resultater er en liste med det bedste match først, og Make tæller fra 1. Antag, at HTTP-modulet er modul nummer 2:
| Du skal bruge | Mapping |
|---|---|
| Kategori (A, B eller C) | {{2.data.kategori}} |
| Adgangsadressens id | {{2.data.resultater[1].adresse.id}} |
| Vejnavn | {{2.data.resultater[1].adresse.vejnavn}} |
| Husnummer | {{2.data.resultater[1].adresse.husnr}} |
| Postnummer | {{2.data.resultater[1].adresse.postnr}} |
| By | {{2.data.resultater[1].adresse.postnrnavn}} |
| HTTP-status | {{2.statusCode}} |
Svaret, mappingen bygger på, ser sådan ud:
{
"kategori": "A",
"resultater": [
{
"adresse": {
"id": "0a3f507c-0624-32b8-e044-0003ba298018",
"vejnavn": "Strandvejen",
"adresseringsvejnavn": "Strandvejen",
"husnr": "100",
"supplerendebynavn": null,
"postnr": "2900",
"postnrnavn": "Hellerup",
"status": 1,
"href": "…"
},
"aktueladresse": { "…": "samme felter, den gældende version" },
"vaskeresultat": {
"afstand": 0,
"forskelle": { "vejnavn": 0, "husnr": 0, "postnr": 0, "postnrnavn": 0 },
"ukendtetokens": []
}
}
]
}Er resultater tom, er kategorien C, og alle resultater[1]-felter er tomme. Tjek det i et filter, før du skriver tilbage.
Vaskesvaret har ikke kommune eller koordinater. Skal du bruge dem, så tilføj et HTTP-modul mere med URL'en https://api.danadresse.dk/adgangsadresser/{{2.data.resultater[1].adresse.id}} og samme header. Map kommune.kode, kommune.navn og adgangspunkt.koordinater[1] / [2] (længde, bredde) fra dets data. Det er ét kald mere pr. række.
3. Del flowet med en router
Læg en Router efter HTTP-modulet med tre ruter:
- Filter:
{{2.statusCode}}= 200 og{{2.data.kategori}}er A eller B → skriv adressen tilbage. A er et præcist match. B er ét sikkert match med små stavefejl, så skriv den officielle tekst fra resultatet tilbage, ikke inputtet. - Filter:
{{2.statusCode}}= 200 og{{2.data.kategori}}= C → send til manuel kontrol (Slack, mail, en fane i dit regneark). C betyder flere kandidater eller større afvigelser; godkend det aldrig automatisk. - Fallback-ruten: alt andet → log status og adresse, så du kan køre dem igen.
Routeren virker kun, hvis HTTP-modulet ikke stopper scenariet ved fejl. Sæt derfor Evaluate all states as errors til No under modulets avancerede indstillinger. Så kommer 4xx- og 5xx-svar videre som almindelige bundter med statusCode.
4. 429 og genforsøg
Der er to slags 429, og de skal behandles forskelligt:
| Kode | Header | Hvad du gør |
|---|---|---|
rate_limit_per_minute | Retry-After (1-60 sekunder) | For mange kald i minuttet. Vent og prøv igen |
quota_exceeded | ingen Retry-After | Gratisplanens månedskvote og dens buffer på 20 % er brugt. Stop indtil den 1. i næste måned, eller opgrader |
Koden står i {{2.data.code}}, fordi fejlsvar på DAWA-stierne har formen {"type", "title", "details", "code"}. Ved quota_exceeded er {{2.data.title}} en forklaring i klar tekst, {{2.data.details.resets_at}} siger, hvornår kvoten nulstilles, og {{2.data.details.upgrade_url}} linker til opgraderingssiden. Afviste kald tæller ikke.
Vil du hellere lade Make prøve igen automatisk, så lad Evaluate all states as errors stå på Yes, højreklik på HTTP-modulet, og vælg Add error handler → Break. Sæt antal forsøg til 3 og intervallet til 1 minut. Det kræver, at Allow storing of incomplete executions er slået til i scenariets indstillinger. Break hjælper ved minutgrænsen, ikke ved en brugt månedskvote.
Behandler scenariet mange rækker på én gang, så indsæt Tools → Sleep på 1 sekund efter HTTP-modulet. På gratisplanen er grænsen 360 kald i minuttet.
Test kaldet
Samme kald som HTTP-modulet, fra en terminal:
curl -s "https://api.danadresse.dk/datavask/adgangsadresser?betegnelse=Strandvejen%20100%2C%202900%20Hellerup" \ -H "X-Api-Key: $DANADRESSE_API_KEY"
Næste skridt
- Zapier og n8n — samme opsætning i andre værktøjer.
- Grænser, kvoter og 429
- Kort opskrift: /integrationer/make
Relaterede guides
Markdown-kilde Fejl i guiden? Skriv til os API-reference (Swagger)