Vejledning i indberetning af spildevandsplaner via REST API

Denne artikel viser, hvordan spildevandsplaner kan indberettes via REST API'et

Indberetning af en spildevandsplan

Temaerne Kloakopland, Mulighed for udtræden, Undersøgelsesområder og (forsyning med håndtering af ) Terrænnært grundvand for Spildevandsplaner skal indberettes til Plandata. Dette kan gøres på flere måde via Plandata’s indberetningsside. En vejledning til dette kan

Denne vejledning er en vejledning til brug af Plandata REST API som bruges  til at indberette direkte til Plandata uden om Plandatas brugerflade. Denne service er hovedsageligt tiltænkt tredjeparter der ønsker at lave et tilpasset system til kommuner med yderligere funktionalitet funktionalitet der er struktureret anderledes. REST API'et kan bruges på mange forskellige måder og dette skaber en fleksibilitet i hvorvidt systemet blot “uploade planerne” når de er vedtagne eller man ønsker at bruge Plandatas funktioner om forslag og offentliggørelse osv.

Vejledningen gennemgår de forskellige typer af kald og forklarer dem, igennem eksempler som går fra offentliggørelsen og vedtagelsen af en ny spildevandsplan over rettelser til planen igennem tillæg og til sidst til aflysningen af dele af planen og den fulde plan.

Strukturen i en Spildevandsplan

Når en plan skal indberettes består den af to niveauer:

  • En hovedplan som rummer de generelle oplysninger om kommunens spildevandsplan eller det tillæg som der indberettes; Dokumentet, link til der hvor planen er blevet offentliggjort, datoer for planens historik.

  • De 4 temaer som skal indberettes som indeholder konkrete oplysninger om temaet samt et link til hvilken plan de er en del af. De fire temaer er: Kloakoplande, Mulighed for udtræden, Undersøgelsesområder og Terrænnært Grundvand.

Kladder/offentlige planer

For alle plantyper i Plandata findes der 3 statusser: Forslag, Vedtaget og Aflyst.

For nogle af disse findes der også en Kladde-status: Kladde til forslag og kladde til Vedtaget.

Når plandata laver regler for valideringsregler laves de altid så vidt muligt, så man har mulighed for at gemme planen i kladde uden at følge planen. Kun når det er nødvendigt laves regler så de altid skal følges også i kladde. Det kan f.eks. være at man ikke kan få lov til at gemme tekst i et tal felt. Men i en kladde er det f.eks. muligt ikke have angivet felter som skal angives i vedtaget. Dette gør det muligt at hente og gemme planer fra plandata i stedet for at have en lokal version som indberettes med mellemrum.

For spildevandsplaner er der dog ikke krav om at planer skal offentliggøres hos plandata, men indberettes. Derfor er det muligt indberette planerne bagud i tid og i øvrigt skifte status direkte til vedtaget så længe alle oplysninger er angivet.

Hent planer

For alle plantyper kan der hentes oplysninger om planer som allerede er indberettet.

Der findes to typer endepunkter:

  • Det offentlige endepunkt
  • hent kald på den specifikke plantype (alle planer inklusive kladder)

Det offentlig endepunkt kan bruges til at hente alle gældende spildevandsplaner:

https://indberet.plandata.dk/plandata-api/offentlig/hentOffentligePlaner?kommunekode=101&plantype=SPILDEVANDSPLAN
 
Der kan altså her søges på alle offentlige planer med filtrering på bl.a. kommunekode og plantype.

Planer der ikke er offentlige, altså planer i kladdestatus kan hentes via bl.a.:

https://indberet.plandata.dk/plandata-api/spildevandsplan/hent?kommunekode=101&planstatus=KLADDE_TIL_VEDTAGET&page=1&maxPageSize=20
 

Hvis man f.eks. ønsker at gøre sig klar til at vedtage en ny spildevandsplan, kan man lave et kald for at hente alle vedtagne spildevandsplaner, så disse kan aflyses:

https://indberet.plandata.dk/plandata-api/spildevandsplan/hent?kommunekode=101&planstatus=VEDTAGET&page=1&maxPageSize=20
 

Der kan også være flere vedtagne spildevandsplantillæg som hører til den vedtagne spildvandsplan.

Disse kan hentes ved at tjekke på spildevandsplaner der har et :

https://indberet.plandata.dk/plandata-api/spildevandsplantillaeg/hent?kommunekode=101&spildevandsplanId=12144759&page=1&maxPageSize=20
 

Her er det måske bedst at tjekke alle i alles statusser så alle tillæg findes.

På den måde kan man få en liste af planid’er som kan bruges til at aflyse den gældende spildevandsplan og tilhørende tillæg.

en alternativ måde til at finde gældende tillæg kan være at hente alle f.eks. kloakoplande og andre underplaner. Her kan spildevandsplanid bruges til at hente Spildevandsplaner og -tillæg som kloakoplandene er tilknyttet. f.eks.:

 
https://indberet.plandata.dk/plandata-api/spkloakopland/hent?kommunekode=101&page=1&maxPageSize=20

Eksempel på et svar for et hent-kald med spildevandsplaner (ingen status)

 
{ "data": [ { "plannavn": "Spildevandsplan 2026", "planId": 12137295, "plantype": "SPILDEVANDSPLAN", "planstatus": "FORSLAG", "kommunekode": 101, "dokumentUrl": "https://dokumenttest.plandata.dk/1210_12137295_1769121989692.pdf", "aflysningsdato": null, "ikrafttraedelsesdato": null, "datoer": { "forslagsDato": "2025-11-17", "hoeringsperiodeStartDato": null, "hoeringsperiodeSlutDato": null, "oprindeligHoeringsperiodeSlutDato": null, "vedtagelsesdato": null, "indberetningsdato": null }, "webadresse": "https://spildevandsplanen.dk" }, { "plannavn": "Spildevandsplan 2020", "planId": 12139973, "plantype": "SPILDEVANDSPLAN", "planstatus": "VEDTAGET", "kommunekode": 101, "dokumentUrl": "https://dokumenttest.plandata.dk/1210_12139973_1769121989692.pdf", "aflysningsdato": null, "ikrafttraedelsesdato": "2026-01-22", "datoer": { "forslagsDato": "2026-01-22", "hoeringsperiodeStartDato": "2026-01-22", "hoeringsperiodeSlutDato": "2026-02-26", "oprindeligHoeringsperiodeSlutDato": null, "vedtagelsesdato": "2026-03-28", "indberetningsdato": null }, "webadresse": "https://spildevandsplanen.dk" } ], "pagination": { "totalCount": 2, "pageSize": 20, "pageCount": 1, "currentPage": 1 } }

Eksempler på svar for et hent kald med Kloakoplande:

 
{ "data": [ { "plannavn": "Kloakopland 1", "planId": 12144731, "plantype": "SPKLOAKOPLAND", "planstatus": "VEDTAGET", "kommunekode": 101, "geometri": "{\"coordinates\":[[[[723539.77,6180743.25],[723510.64,6180692.350000001],[723506.2000000001,6180684.39],[723483.12,6180643.93],[723475.79,6180630.93],[723424.5700000001,6180541.0600000005],[723419.6900000001,6180532.49],[723411.55,6180529.8],[723410.9,6180531.67],[723410.17,6180531.42],[723378.25,6180626.9],[723376.71,6180633.07],[723355.61,6180717.68],[723357.85,6180722.33],[723447.85,6180767.11],[723452.63,6180769.3100000005],[723456.0700000001,6180770.9],[723464.4400000001,6180774.33],[723472.96,6180777.39],[723481.6,6180780.07],[723490.35,6180782.36],[723499.2000000001,6180784.2700000005],[723508.12,6180785.78],[723517.1,6180786.89],[723519.3200000001,6180787.11],[723516.47,6180796.39],[723525.84,6180797.100000001],[723535.23,6180797.41],[723544.62,6180797.32],[723554.01,6180796.84],[723563.36,6180795.95],[723568.4,6180795.3],[723569.54,6180791.57],[723539.77,6180743.25]]]],\"type\":\"MultiPolygon\"}", "projection": "EPSG:25832", "aflysningsdato": null, "opdateringstidspunkt": "2026-03-06T08:26:08.739", "aktuel": true, "spildevandsplanId": 12144730, "eksisterendeKloakKode": "UKLOAKERET", "planlagtKloakKode": null, "startaarKloak": null, "ikrafttraedelsesaarKloak": null, "ejerforholdskode": "PRIVAT", "validering": { "valideringsstatus": "VALIDERET_OK", "regelsaet": "1.1.1" } }, { "plannavn": "Kloakopland 2", "planId": 12144732, "plantype": "SPKLOAKOPLAND", "planstatus": "VEDTAGET", "kommunekode": 101, "geometri": "{\"coordinates\":[[[[723539.77,6180743.25],[723510.64,6180692.350000001],[723506.2000000001,6180684.39],[723483.12,6180643.93],[723475.79,6180630.93],[723424.5700000001,6180541.0600000005],[723419.6900000001,6180532.49],[723411.55,6180529.8],[723410.9,6180531.67],[723410.17,6180531.42],[723378.25,6180626.9],[723376.71,6180633.07],[723355.61,6180717.68],[723357.85,6180722.33],[723447.85,6180767.11],[723452.63,6180769.3100000005],[723456.0700000001,6180770.9],[723464.4400000001,6180774.33],[723472.96,6180777.39],[723481.6,6180780.07],[723490.35,6180782.36],[723499.2000000001,6180784.2700000005],[723508.12,6180785.78],[723517.1,6180786.89],[723519.3200000001,6180787.11],[723516.47,6180796.39],[723525.84,6180797.100000001],[723535.23,6180797.41],[723544.62,6180797.32],[723554.01,6180796.84],[723563.36,6180795.95],[723568.4,6180795.3],[723569.54,6180791.57],[723539.77,6180743.25]]]],\"type\":\"MultiPolygon\"}", "projection": "EPSG:25832", "aflysningsdato": null, "opdateringstidspunkt": "2026-03-06T08:26:08.739", "aktuel": true, "spildevandsplanId": 12144730, "eksisterendeKloakKode": "UKLOAKERET", "planlagtKloakKode": "FAELLES", "startaarKloak": 2025, "ikrafttraedelsesaarKloak": 2030, "ejerforholdskode": "OFFENTLIG", "validering": { "valideringsstatus": "VALIDERET_FEJL", "regelsaet": "1.1.1" } } ], "pagination": { "totalCount": 2, "pageSize": 20, "pageCount": 1, "currentPage": 1 } }

Oprettelse af planer

For at lave en ny plane skal planobjektet først oprettes. Planobjekterne oprettes som næsten tomme skaller og opdateres først efterfølgende.

Når objekter skal oprettes bruges kald med denne struktur:

https://indberet.plandata.dk/plandata-api/spkloakopland/opret

Der kan kun medsendes følgende informationer:

{
"plannavn": "Kloakopland 1",
"planstatus": "KLADDE_TIL_FORSLAG",
"kommunekode": 101,
"spildevandsplanId": 1212233
}


Kun for spildevandsplan skal der ikke medsendes spildevandsplanId, da dette er referencen til hvilken spildevandsplan hvad underplantypen er en del af.

At spildevandsplanId’et skal medsendes betyder at Spildevandsplanen (eller Spildevandsplantillægget) skal være oprettet for at kunne oprette de tilhørende Kloakoplande, Mulighed for udtræden, Undersøgelsesområder og Forsyning for Terrænnært grund.

 

Når planobjektet oprettes sendes et svar som ligner det nedenstående:

{
"plannavn": "En ny plan",
"planId": 12149638,
"plantype": "SPKLOAKOPLAND",
"planstatus": "KLADDE_TIL_FORSLAG",
"kommunekode": 101,
"geometri": null,
"projection": "EPSG:25832",
"aflysningsdato": null,
"opdateringstidspunkt": "2026-04-14T10:54:32.614",
"aktuel": true,
"spildevandsplanId": 12138287,
"eksisterendeKloakKode": null,
"planlagtKloakKode": null,
"startaarKloak": null,
"ikrafttraedelsesaarKloak": null,
"ejerforholdskode": null,
"validering": {
"valideringsstatus": "VALIDERET_FEJL",
"regelsaet": "1.1.1"
}
}

Når dette er gjort kan man gå i gang med at opdatere det relevante planobjekt.

Opdatering af planer

Opdatering af planer sker efter planobjekter er oprettet. En række af felterne kan opdateres og der kan læses mere om hvilke og hvordan under datamodel på Plandatas hjemmeside her

Planer kan opdateres i Kladde-status både i Kladde til Forslag og Kladde til Vedtaget. Der forhindres som hovedregel ikke i at opdaterer i kladde status selvom der forsøges indberettet noget forkert, medmindre det er noget som ikke kan lade sig gøre i systemet. Et eksempel kan være at fjerne eller opdatere SpildevandsplanId. Dette kan ikke fjernes fordi en lang række dele af systemet er bygget op om at relationer som denne ikke ændrer sig fra version til version. Når planen skal rykkes til en offentlig plantype skal den leve op til valideringsregler før den kan komme igennem.

Når en vedtaget plan opdateres forstås dette som en fejlrettelse af det indberettede. det er altså ikke indberetninger ændringer til planen der skal indberettes på en vedtaget plan. opdateringer/indberetninger af vedtagne planer kan kun udføres hvis de følger valideringsreglerne. Dette er for at sikre datakvaliteten af offentligt indberettede planer.

Et kald som opdaterer et kloakopand med planid 12149638

https://indberet.plandata.dk/plandata-api/spkloakopland/opdater/12149638


Eksempel på json-struktur der medsendes når et opland opdateres

{
"plannavn": "Et nt kloakopland",
"geometri": "{\"type\":\"MultiPolygon\",\"coordinates\":[[[[723587.3333333336,6175951.50605744],[723772.9333333336,6175932.30605744],[723728.1333333335,6175573.906057441],[723561.7333333335,6175529.10605744],[723587.3333333336,6175951.50605744]]]]}",
"eksisterendeKloakKode": "FAELLES",
"planlagtKloakKode": "FAELLES",
"startaarKloak": 2020,
"ikrafttraedelsesaarKloak": 2020,
"ejerforholdskode": "OFFENTLIG"
}


Eksempel retursvaret:

 

{
"plannavn": "Et nt kloakopland",
"planId": 12149638,
"plantype": "SPKLOAKOPLAND",
"planstatus": "KLADDE_TIL_FORSLAG",
"kommunekode": 101,
"geometri": "{\"coordinates\":[[[[723772.93,6175932.3100000005],[723728.13,6175573.91],[723561.73,6175529.11],[723587.33,6175951.51],[723772.93,6175932.3100000005]]]],\"type\":\"MultiPolygon\"}",
"projection": "EPSG:25832",
"aflysningsdato": null,
"opdateringstidspunkt": "2026-04-14T11:26:33.719",
"aktuel": true,
"spildevandsplanId": 12138287,
"eksisterendeKloakKode": "FAELLES",
"planlagtKloakKode": "FAELLES",
"startaarKloak": 2020,
"ikrafttraedelsesaarKloak": 2020,
"ejerforholdskode": "OFFENTLIG",
"validering": {
"valideringsstatus": "VALIDERET_OK",
"regelsaet": "1.1.1"
}
}

Valider planer

indberettede planer, valideres ved et get kald. man angives planens planid og status på planen og får et svar tilbage med valideringsregler der er brudt.

https://indberettest.plandata.dk/plandata-api/spkloakopland/valider/12149638?planstatus=KLADDE_TIL_FORSLAG

Eksempel på retursvar med valideringsregler

 

{
"besked": "Planen er valideret med en eller flere valideringsfejl",
"fejlType": "VALIDERINGSFEJL",
"fejl": [
{
"felt": "startaarKloak",
"feltSti": "startaarKloak",
"error": "Startår må kun angives, hvis planlagt kloaktype er angivet",
"regel": "KLO8"
},
{
"felt": "ikrafttraedelsesaarKloak",
"feltSti": "ikrafttraedelsesaarKloak",
"error": "Slutår må kun angives, hvis planlagt kloaktype er angivet",
"regel": "KLO8"
}
]
}

Skift status på planer

Når en plan skal skifte status sker det på hovedplanniveau. En plan skifter således fra Kladde til forslag til forslag til kladde til vedtaget til vedtaget og til sidst aflyst ved at man skifter Hovedplanens status. Når status skifter på hovedplanen skiftes også status på alle underplaner.

https://indberet.plandata.dk/plandata-api/spildevandsplan/skiftStatus/12149638?planstatus=VEDTAGET

Det eneste der skal angives ved statusskift er planid og status der skiftes til. Hvis Valideringsfejl blokerer for statusskifte sendes de valideringsfejl som skal rettes før der kan skiftes status, eller som blokerer for statusskiftet:

{
"besked": "Ikke muligt at skifte status fra KLADDE_TIL_FORSLAG til VEDTAGET for plan med ID 12149638",
"fejlType": "VALIDERINGSFEJL",
"fejl": []
}

I dette eksempel er det ikke muligt at skifte status fordi der ikke må skiftes status fra Kladde til forslag til Vedtaget.Når der skiftes status til kladde til vedtaget opretter det en kladde fra forslaget. Denne kladde kan slettes og man skal derefter oprette den igen ved statusskift hvis dette ønskes.

Kun hvis statusskifte er til aflysning skal der angives et felt, nemlig dato for aflysning.

Det eneste statusskifte der laves på underplaner er til aflysning. Dette skyldes at mindre dele af planen kan blive aflyst ved et tillæg, hvor de nye oplysninger i tillægget nu er gældende. Dette gøres ved at aflyse Kloakoplandet i spildevandsplanen når det nye Kloakopland til spildevandsplantillæget træder i kraft:

 

https://indberet.plandata.dk/plandata-api/spkloakopland/skiftStatus/12149638?planstatus=AF

Slet kladder af planer

Planer kan slettes i kladde status. Dette har lidt forskellig betydning alt efter hvordan det bruges:

  • For en kladde der slettes i kladde til forslag slettes planobjektet helt.
  • For en kladde der slettes i kladde til vedtaget slettes planen i kladde status men findes stadig i forslagsstatus. Hvis man ønsker at fjerne et forslag der ikke blev vedtaget gøres dette ved at aflyse forslaget (statusskift fra Forslag til Aflyst). Det vil herefter fremgå som “bortfaldet” i plandata.

 

https://indberet.plandata.dk/plandata-api/spkloakopland/sletKladde/12149638