Generel guide til Swagger

Hvad er Swagger?

Swagger er en samling af værktøjer, som gør det nemmere at udvikle, interagere og dokumentere arbejde med API'er (kommunikation mellem to programmer).
I dette eksempel bruges Swagger til at vise, hvad der vil være muligt at gøre gennem den nye funktionalitet 'REST API' for Plandata indberetning.

Fordelen med Swagger er, at man kan opsætte en brugergrænseflade, som er nem at dele og kan tilgås gennem et link.
Swagger kræver også kun én opsætning af udviklerholdet, i stedet for f.eks. at alle brugere af REST API'en selv skal opsætte kommunikationen, downloade filer og andet gennem lignende værktøjer som f.eks. Postman.

Swagger er desværre ikke ment som det mest brugervenlige værktøj, da det samtidig skal fungere som dokumentation til udviklingsprocessen. Denne guide er forhåbentlig med til at hjælpe førstegangsbrugere godt i gang.

Links til Swagger for TEST og PREPROD miljøerne

Link til Swagger kan findes i dette afsnit. Dog kan Swagger ikke bruges til meget før man har opsat en authorize token, som giver adgang til at bruge Swaggers forskellige kald på det relevante miljø (se næste afsnit):

PREPROD: https://indberetpreprod.plandata.dk/plandata-api/swagger/

 

Opsæt "Authorize" token

Før man kan bruge Swagger, så skal man hente og bruge en gyldig "token" for det miljø, som man vil arbejde med.

OBS: Du vil have de samme rettigheder tilsvarende den bruger du vælger. Hvis din PREPROD bruger f.eks. ikke må oprette planer, så kan du heller ikke gøre dette igennem Swagger.

TEST-miljøet

I TEST miljøet hentes token via TIP, hvor der findes et stort antal oprettede TIP-brugere med forskellige privilegier.

For at hente en access token, gøres følgende:

1. Tilgå OpenID Connect (OIDC) siden https://indberettest.plandata.dk/plandata-api/oidcClient/index

2. I toppen, klik "Login/forny session":

3. Brugeren bliver viderestillet til TIP.

4. Fremsøg relevant bruger, som man gerne vil bruge, og klik "Log på"

5. Brugeren bliver herefter viderestillet tilbage til OIDC siden

Hvis alt er gået godt så skal teksten efter Status: være "Bruger er logget ind". I toppen vises også JSON data for brugerens profil, inklusive brugerens navn og en liste af privilegier (hvis brugeren har nogle tildelt):

 

Herefter kan du finde din token ved "Access token" på siden - ej at forveksle med "ID token". Denne token skal kopieres:


PREPROD-miljøet

For at hente en access token, gør følgende:

1. Tilgå OpenID Connect (OIDC) siden for PREPROD på https://indberetpreprod.plandata.dk/plandata-api/oidcClient/index
2. I toppen, klik "Login/forny session":


3. Brugeren bliver viderestillet til NemLog-in.
4. I toppen, vælg "Test login":

5. Udfyld med din testbruger
6. Her kan du blive spurgt om at logge ind som enten "private user" eller "professional user". Vælg i dette tilfælde "professional user".
7. Brugeren bliver herefter viderestillet tilbage til OIDC-siden.

Hvis alt er gået godt så skal teksten efter Status: være "Bruger er logget ind". I toppen vises også JSON data for brugerens profil, inklusive brugerens navn og en liste af privilegier (hvis brugeren har nogle tildelt):

 

 

Herefter kan du finde din token ved "Access token" på siden - ej at forveksle med "ID token". Denne token skal kopieres:

 

 

Indsæt token i Swagger

Når en gyldig token er blevet indhentet, kan denne indsættes i Swagger. I øverste højre hjørne af Swagger siden er der en "Authorize" knap:

 

Klik på denne for at indsætte den gyldige token. I tekstfeltet skrives der "Bearer" (vigtigt at det starter med stort B), mellemrum, og din token:

 


Klik "Authorize", og derefter kan boksen lukkes med "Close". Swagger medsender nu token med til kald til API'en.

Generel introduktion til brug af Swagger

Overordnet kan Swagger deles op i to ting: "Parameters" og "Responses".

Parameters er der, hvor man skriver "input"-værdier til kaldet, som man sender afsted. Det vil sige de værdier, som man skal bruge til at oprette, opdatere, hente planer osv.
Dette kan f.eks. være planID'et, status på planen, osv.

Responses er, hvor systemet sender et svar tilbage ift. det afsendte kald. Dette kan være et svar vedrørende, at alt gik godt, men også at der er fejl, eller at indtastede værdier er forkerte, osv.

 

Nedenstående screenshots gennemgår de grundlæggende funktionaliteter i Swagger. Efterfølgende er forklaringerne til hvert nummer.

Parameters afsnittet:


1. "Try it out" knappen bruges til at aktivere redigering i Swagger. Hvis denne ikke er brugt, så er det ikke muligt at redigere parametre til kaldet.

2. Felter som har "required" skal udfyldes, før man kan bruge kaldet. Ellers får man en fejlbesked om manglende værdier.

3. Denne type af parameter kræver, at brugeren selv indtaster værdien.

4. Denne type af parameter er en dropdown, hvor det kun er muligt at vælge valide værdier.

5. "Execute" knappen bruges til at sende kaldet afsted.

        a. Herefter får man et response/svar tilbage fra systemet, som dukker op lige under "Parameters". Indtil man sender et kald afsted, vil der kun være forklaringstekst og eksempler for responses under "Parameters".

6. Denne type af parameter er en JSON-streng, som brugeren selv skal redigere manuelt.

 

OBS Eksemplet til kaldet har alle kaldets mulige værdier, så brugeren må selv fjerne og redigere ift. hvilke værdier, som de vil sende med. Ikke alle værdier er relevante for alle planstatusser. F.eks. har kladde til forslag ikke en ikrafttrædelsesdato.

Hvis en værdi fjernes fra kaldet og derved ikke sendes afsted (f.eks. fjerner man "plannavn" fra kaldet), så vil planens plannavn bevare sin originale værdi, og den ændres ikke. Det er desværre ikke muligt at nulstille eksemplet uden at genindlæse siden, hvis man f.eks. skriver forkert eller vil have det originale eksempel tilbage. Det kan anbefales at kopiere eksemplet ind i f.eks. Notepad, hvis man regner med at arbejde en del med det Husk at hvis man genindlæser siden, så skal man indsætte authorize token igen.

Responses afsnittet:

7. Alle svar indeholder en kode, som overordnet forklarer, hvordan kaldet til systemet gik. F.eks. er 200 og 204 koder ift. success, mens f.eks. 400 eller 404 koder er ift. problemer med kaldet

8. Uddybende forklaring på, hvad svarets kode betyder.

9. Nogle svar fremsender også information om den plan, som man har arbejdet med. Dette er et eksempel på, hvilken data man kan få med i svaret.


OBS: Før man sender et kald afsted, så vil responses afsnittet kun indeholde response eksempler.

Eksempel på oprettelse af kommuneplantillæg gennem Swagger

For at komme godt i gang med Swagger, så vil nedenstående afsnit forklare processen af at oprette et kommuneplantillæg fra bunden og tilføje rammer samt digitale retningslinjer til det.

Denne gennemgang skal ses som inspiration og er ikke nødvendigvis en perfekt gennemgang af, hvordan indholdet og processen for et kommuneplantillæg skal se ud.

Opret kommuneplantillæg

Start med at oprette et tomt kommuneplantillæg i status kladde til forslag gennem kaldet: kommuneplantillaeg/opret.

Tryk på "Try it out" så det er muligt at redigere eksemplet og udfyld herefter kaldets eksempel:

OBS: Hvis der er citationstegn (f.eks. "string"), så skal den ønskede værdi skrives indenfor citationstegnene.

  • Plannavn udfyldes med det navn, som du vil give planen.
  • Planstatus bør allerede være sat til "KLADDE_TIL_FORSLAG", som er den eneste valide værdi.
  • Kommunekode skal sættes til kommunekoden på den kommune, som der arbejdes på. København er f.eks. 101.
    Husk at du kun kan oprette og redigere planer på en kommune, som din bruger giver dig adgang til
  • KommuneplanId skal være planid'et for den kommuneplan, som kommuneplantillægget er relateret til.

Brug herefter "Execute" knappen til at oprette et tomt kommuneplantillæg på den ønskede kommune.

Svaret fra systemet vil oplyse planid'et på det nyoprettede kommuneplantillæg. Notér dette id. Det vil fremover blive refereret til som KPT_ID.

TIP: Brug CTRL + F genvejen til hurtigt at udsøge de kald som du skal bruge på Swagger.

Opdater stamdata for kommuneplantillæg

Find kaldet /kommuneplantillaeg/opdater/{planid} som skal bruges til at opdatere kommuneplantillæggets stamdata.

Indsæt KPT_ID som værdi til planId.

Udskift KommuneplantillaegOpdaterDTO eksemplet med følgende hvilket vil opdatere forslagsdatoen og høringsperioden for planen:

{
"datoer": {
"forslagsDato": "2023-09-10",
"hoeringsperiodeStartDato": "2023-09-20",
"hoeringsperiodeSlutDato": "2023-11-10"
}
}

Man kan eventuelt rette datoerne til noget andet, hvis det er ønsket.

OBS: I øjeblikket er der ikke en simpel måde at uploade et plandokument til planen gennem Swagger. Det anbefales derfor, at man anvender PPRAM til at tilføje det til planen, hvis dette er ønsket.

Tilføj digitale retningslinjer

Digitale retningslinjer er bygget op af emne-, indhold- og område-objekter. Kort fortalt opretter man indhold under emner og områder oprettes under indhold.

Følgende afsnit om digitale retningslinjer giver eksempler på, hvordan digital retningslinjer til en plan kan bygges op.

Opret emne-objekter

Find kaldet /emne/opret i Swagger og start med at oprette seks tomme emne-objekter, som er vores fundament for planens digitale retningslinjer.

Husk at notere emnernes planId'er (emner, indhold og områder anses alle som værende planer), da de skal bruges senere. De vil blive refereret til som emne1, emne2, emne3, osv.

TIP: Hvis du glemmer at notere id på kommuneplantillæggets emner, indhold og områder, så kan du hente dem gennem tilsvarende hent kald (f.eks. /emne/hent), hvor du angiver KPT_ID som kommuneplantillaegId og uden at angive et planId i kaldet.

Emnerne skal oprettes på samme kommune som KPT_ID, så husk at tilrette kommunekode og tilføj KPT_ID som værdi til "kommuneplantillaegId".

"KommuneplanId" skal ikke bruges, så den skal fortsat stå som null. Null betyder, at kommuneplanId ikke er relevant her og systemet skal ignorere det.

Eksempel på København kommune:

{
"planstatus": "KLADDE_TIL_FORSLAG",
"kommunekode": 101,
"kommuneplanId": null,
"kommuneplantillaegId": 12345678
}


Opdater emne-objekterne

Find kaldet /emne/opdater/{planid} hvilket skal bruges til at indsætte data i de tomme emne-objekter.
PlanId skal være id på det emne, som du vil opdatere (f.eks. emne1).

I dette eksempel bruges emne-objekter til at indsætte overordnet introduktionstekst til de forskelle retningslinjer.

OBS: Eksemplet har en parameter som hedder indeks. Denne vil ikke blive brugt her, da den ikke er relevant. indeks angiver læseorden og kan bruges til at ændre rækkefølgen på emnerne.

Opdater de seks emner med følgende eksempler (kopier fra filen og indsæt i opdater hele kaldet).
Nogle af eksemplerne er ret lange, da der er meget tekst eller billederne er blevet oversat til base64 tekst (det som er en masse volapyk), hvilket kan oversættes tilbage til billeder i PPRAM.
De lange eksempler skal derfor downloades og åbnes i f.eks. Notepad, da de ellers kommer til at fylde for meget på denne side.

emne1 skal opdateres med emne1_eksempel.txt
emne2 skal opdateres med emne2_eksempel.txt
emne3 skal opdateres med emne3_eksempel.txt
emne4 skal opdateres med emne4_eksempel.txt
emne5 skal opdateres med emne5_eksempel.txt
emne6 skal opdateres med emne6_eksempel.txt

Opret indhold-objekter

Nu hvor vi har oprettet og opdateret seks emner, så skal vi have oprettet indhold-objekter til nogle af emne-objekterne.

Det mest vigtige ved indhold-objekter, er, at man angiver en lovgivningsbeskrivelse/paragraf-henvisning ved oprettelse. Indholdets underliggende områder er bundet til den samme lovgivning som indholdet.

I dette eksempel vil alle emner ikke få oprettet indhold under sig.

Find kaldet /indhold/opret i Swagger. Her er de relevante felter "kommunekode", "parentId" og "kode". Kommunekode er set før, så den vil ikke nævnes mere herfra (altid sæt denne til samme kommunekode som tidligere).

  • parentId skal være id'et på det emne, som indholdet skal høre under - f.eks. emne1
  • kode skal være den paragrafkode/-henvisning, som indholdet skal gælde for - f.eks. 1103 (Planloven: § 11a, 3). Se Kodeliste her.
    OBS: Husk at notere id'er til de indhold-objekter, som bliver oprettet. De bliver relevante ift. opdatering af indhold og oprettelse af område-objekter.

Følgende indhold skal oprettes:

  • emne4 skal have oprettet ét indhold-objekt under sig: indhold1
    • Kode skal være 1103 (hvilket er Planloven: § 11a, 3)
  • emne5 skal have oprettet ét indhold-objekt under sig: indhold2
    • Kode skal være 1105 (hvilket er Planloven: § 11a, 4)
  • emne6 skal have oprettet ét indhold-objekt under sig: indhold3
    • Kode skal være 1114 (hvilket er Planloven: § 11a, 14)

Eksempel til brug af oprettelse. Husk at tilrette parentId og kode:

{
"planstatus": "KLADDE_TIL_FORSLAG",
"kommunekode": 101,
"parentId": 12345678,
"paragraf": {
"kode": 1103
}
}

Opdater indhold-objekter

Find kaldet /indhold/opdater/{planId}. Ligesom med emner skal indhold-objekterne også opdateres med data.

Planid skal være id'et på indholdet - f.eks. indhold1.

Følgende indhold skal opdateres med eksemplerne:

indhold1 skal opdateres med indhold1_eksempel.txt
indhold2 skal opdateres med indhold2_eksempel.txt
indhold3 skal opdateres med indhold3_eksempel.txt


Opret område-objekter

Nu hvor der er oprettet emne- og indhold-objekter for vores digitale retningslinjer, så mangler vi kun at oprette område-objekter.

Områder-objekter er de objekter, som har retningslinjenr. (f.eks. Bydelscentre) og retningslinjegeometri.

Find kaldet /omraade/opret i Swagger:

  • ParentId skal sættes til id'et på indholdet, som området skal oprettes under - f.eks. indhold1
  • Kode skal sættes til koden for den områdetype, som området skal have - f.eks. 110302 (Bydelscentre). Se Kodeliste her.

OBS: Husk at notere id'er til de område-objekter, som bliver oprettet. De bliver relevante ift. opdatering af områderne.

Følgende område-objekter skal oprettes:

  • indhold1 skal have oprettet syv områder under sig - område1 til område7
    • To af områderne skal have kode 110301 (Bymidter) (område1 og 2)
    • To af områderne skal have kode 110302 (Bydelscentre) (område3 og 4)
    • Tre af områderne skal have kode 110304 (Lokalcentre) (område5, 6 og 7)
  • indhold2 skal have oprettet fire områder under sig - område8 til område11
    • To af områderne skal have kode 110501 (Veje) (område8 og 9)
    • To af områderne skal have kode 110504 (Stisystemer) (område10 og 11)
  • indhold3 skal have oprettet ét område under sig - område12
    • Området skal have kode 111501 (Økologiske forbindelser)

Opdater område-objekter

Find kaldet /omraade/opdater/{planid}.

Dette kald kan bruges til at opdatere områdets geometri, overskrift, indholdstekst og retningslinjenr. (retningslinjenr. vil ikke blive opdateret i eksemplerne).

Følgende områder skal opdateres med eksemplerne:

Område1:

{
"geometri": "{\"coordinates\":[[[[571141.582,6324564.523],[570802.026,6324553.856],[570766.471,6324761.856],[571162.915,6324829.412],[571141.582,6324564.523]]],[[[571678.354,6324913.456],[571730.799,6324928.568],[571716.576,6324818.345],[571666.799,6324837.012],[571678.354,6324913.456]]],[[[571573.465,6323919.679],[571521.91,6323957.901],[571260.576,6324019.234],[571273.91,6324061.012],[571550.354,6324002.345],[571602.799,6323959.679],[571573.465,6323919.679]]]],\"type\":\"MultiPolygon\"}",
"overskrift": "Bymidte Gandrup ",
"tekst": null
}


Område2:

{
"geometri": "{\"coordinates\":[[[[549315.804,6318448.967],[549324.692,6318338.745],[549383.359,6318075.634],[549530.915,6318102.301],[549475.803,6318322.745],[549607.359,6318354.745],[549587.803,6318422.301],[549690.915,6318473.856],[549737.137,6318536.078],[549685.581,6318544.967],[549577.137,6318491.634],[549445.581,6318459.634],[549315.804,6318448.967]]]],\"type\":\"MultiPolygon\"}",
"overskrift": "Bymidte Frejlev",
"tekst": null
}


Område3:

{
"geometri": "{\"coordinates\":[[[[559298.026,6327816.079],[558933.581,6327716.523],[558668.693,6327599.19],[558647.359,6327839.19],[558334.47,6327832.079],[558350.47,6327503.19],[558595.804,6327309.412],[558677.581,6327435.634],[558691.804,6327181.412],[559395.804,6327657.856],[559298.026,6327816.079]]]],\"type\":\"MultiPolygon\"}",
"overskrift": "Bydelscenter Bouet",
"tekst": "Bouet består primært af en række store vejsammenføringer og industriområde."
}


Område4:

{
"geometri": "{\"coordinates\":[[[[556727.359,6321062.301],[556869.582,6321053.412],[557218.026,6321439.19],[556946.026,6321798.301],[556787.804,6321999.19],[556540.693,6321965.412],[556501.581,6321627.634],[556451.804,6321472.967],[556601.137,6321401.856],[556846.47,6321355.634],[556727.359,6321062.301]]]],\"type\":\"MultiPolygon\"}",
"overskrift": "Bydelscenter Eternitten ",
"tekst": "Eternitten er nyere bydel i Aalborg."
}

Område5:

{
"geometri": "{\"coordinates\":[[[[557973.815,6321541.323],[557888.482,6321523.545],[557984.482,6321217.767],[558169.37,6320776.878],[558521.37,6320225.767],[558581.815,6320318.212],[558340.037,6320730.656],[558123.148,6321217.767],[557973.815,6321541.323]]]],\"type\":\"MultiPolygon\"}",
"overskrift": "Lokalcenter Hadsundvej",
"tekst": null
}

Område6:

{
"geometri": "{\"coordinates\":[[[[554770.026,6319174.301],[554645.581,6319049.856],[554400.248,6318873.856],[554633.137,6318656.967],[554910.47,6318866.745],[555134.47,6318749.412],[555271.359,6318973.412],[554770.026,6319174.301]]]],\"type\":\"MultiPolygon\"}",
"overskrift": "Lokalcenter Skalborg Bakke ",
"tekst": null
}


Område7:

{
"geometri": "{\"coordinates\":[[[[554533.581,6319846.301],[554325.581,6320002.745],[554211.804,6320223.19],[554206.47,6320372.523],[553998.47,6320408.078],[554185.137,6320644.523],[554554.915,6320560.967],[554515.804,6320324.523],[554853.581,6320280.078],[554533.581,6319846.301]]],[[[554930.026,6320242.745],[554960.248,6320276.523],[555347.804,6320397.412],[555324.692,6320104.078],[555127.359,6320175.19],[554930.026,6320242.745]]]],\"type\":\"MultiPolygon\"}",
"overskrift": "Lokalcenter Sofiendal, Skelagervej",
"tekst": null
}


Område8:

{
"geometri": "{\"coordinates\":[[[[579468.845779126,6317260.66656508],[579467.9874999999,6317264.800000001],[579480.39375,6317410.800000001],[579490.7937500001,6317467.200000001],[579501.1937500001,6317510.800000001],[579504.596875,6317512.000000001],[579486.796875,6317429.000000001],[579481.396875,6317372.000000001],[579475.196875,6317301.6],[579471.4212552448,6317260.0425510425],[579471.596875,6317260.000000001],[579470.9968750001,6317257.000000001],[579369.9968750001,6317281.400000001],[579322.196875,6317292.800000002],[579316.196875,6317290.6000000015],[579313.796875,6317287.6000000015],[579312.796875,6317284.6000000015],[579287.996875,6317166.6],[579285.996875,6317169.0],[579293.196875,6317201.399999999],[579304.396875,6317254.6],[579310.596875,6317287.200000001],[579313.396875,6317291.400000001],[579317.596875,6317294.400000001],[579321.596875,6317295.400000001],[579326.9968750001,6317294.800000002],[579335.396875,6317293.000000001],[579468.845779126,6317260.66656508]]]],\"type\":\"MultiPolygon\"}",
"overskrift": "Overordnede trafikvej",
"tekst": "Nuværende trafikvej ved Hals Havn."
}


Område9:

{
"geometri": "{\"coordinates\":[[[[579263.1979910716,6317245.995758928],[579263.19375,6317246.0],[579297.19375,6317306.399999999],[579312.3937499999,6317300.399999999],[579315.19375,6317295.199999999],[579320.3937499999,6317296.8],[579337.9937499999,6317292.399999999],[579335.9937499999,6317288.0],[579316.79375,6317290.399999999],[579309.59375,6317294.8],[579300.3937499999,6317300.0],[579269.2649828765,6317240.136986301],[579269.9937499999,6317239.6],[579232.79375,6317177.199999999],[579226.79375,6317182.399999999],[579262.3937499999,6317245.199999999],[579262.4248195043,6317245.17710668],[579263.1979910716,6317245.995758928]]]],\"type\":\"MultiPolygon\"}",
"overskrift": "Principelle reservationer til veje",
"tekst": "Reserveret til potentiel trafikvej."
}


Område10:

{
"geometri": "{\"coordinates\":[[[[579418.3937499999,6317520.800000001],[579438.79375,6317518.800000001],[579437.59375,6317512.800000001],[579417.9937499999,6317515.600000001],[579418.3937499999,6317520.800000001]]],[[[579432.39375,6317513.2],[579437.59375,6317511.6],[579431.99375,6317478.0],[579422.3937499999,6317423.600000001],[579412.79375,6317378.400000001],[579391.3184181921,6317281.363315536],[579391.99375,6317281.2],[579390.39375,6317275.2],[579322.39375,6317291.600000001],[579316.79375,6317289.2],[579312.79375,6317283.2],[579302.79375,6317230.4],[579292.3937499999,6317178.000000001],[579287.59375,6317179.200000001],[579309.59375,6317287.600000001],[579312.79375,6317292.000000001],[579316.3937499999,6317295.200000001],[579321.9937499999,6317297.200000001],[579330.79375,6317296.000000001],[579387.0374119751,6317282.398591549],[579385.9937499999,6317282.800000001],[579410.7937500001,6317386.800000001],[579420.39375,6317435.2],[579429.59375,6317500.0],[579432.39375,6317513.2]]]],\"type\":\"MultiPolygon\"}",
"overskrift": "Rekreative cykelruter",
"tekst": "Nuværende cykelruter ved Hals Havn."
}


Område11:

{
"geometri": "{\"coordinates\":[[[[579263.1979910716,6317245.995758928],[579263.19375,6317246.0],[579297.19375,6317306.399999999],[579312.3937499999,6317300.399999999],[579315.19375,6317295.199999999],[579320.3937499999,6317296.8],[579337.9937499999,6317292.399999999],[579335.9937499999,6317288.0],[579316.79375,6317290.399999999],[579309.59375,6317294.8],[579300.3937499999,6317300.0],[579269.2649828765,6317240.136986301],[579269.9937499999,6317239.6],[579232.79375,6317177.199999999],[579226.79375,6317182.399999999],[579262.3937499999,6317245.199999999],[579262.4248195043,6317245.17710668],[579263.1979910716,6317245.995758928]]]],\"type\":\"MultiPolygon\"}",
"overskrift": "Principelle reservationer til sti og stisystemer",
"tekst": "Reserveret til potentielle sti og stisystemer."
}


Område12:

{
"geometri": "{\"coordinates\":[[[[579445.314,6318726.664],[579470.297,6318508.216],[579476.408,6318454.781],[579466.4,6318452.479],[579475.375,6318443.998],[579462.692,6318424.618],[579457.17,6318416.167],[579456.824,6318415.638],[579453.557,6318414.138],[579453.496,6318412.096],[579326.02,6318406.518],[579321.434,6318406.328],[579319.477,6318406.242],[579274.083,6318404.36],[579251.985,6318403.392],[579252.031,6318402.646],[579202.477,6318395.006],[579204.739,6318483.856],[579203.508,6318483.876],[579203.755,6318490.07],[579205.179,6318548.798],[579252.2,6318545.872],[579288.116,6318543.637],[579323.595,6318541.43],[579323.186,6318564.167],[579320.303,6318724.544],[579343.534,6318725.712],[579445.314,6318726.664]]],[[[579328.658,6317363.359],[579310.335,6317305.149],[579309.835,6317305.149],[579296.681,6317312.817],[579270.93,6317264.975],[579255.203,6317253.476],[579248.74,6317260.958],[579241.521,6317274.977],[579238.268,6317290.25],[579237.756,6317302.242],[579240.604,6317321.876],[579238.485,6317333.378],[579237.451,6317336.013],[579234.978,6317342.32],[579226.585,6317355.384],[579224.345,6317358.868],[579220.537,6317364.801],[579210.163,6317380.501],[579201.383,6317389.534],[579193.876,6317394.313],[579201.337,6317410.244],[579210.661,6317404.742],[579238.553,6317388.282],[579240.33,6317387.233],[579241.53,6317386.143],[579261.492,6317380.916],[579273.243,6317377.839],[579294.503,6317372.275],[579314.595,6317367.03],[579328.658,6317363.359]]],[[[579299.504,6317242.544],[579299.049,6317240.012],[579298.714,6317240.161],[579285.623,6317173.605],[579284.644,6317171.162],[579283.635,6317169.897],[579282.375,6317168.317],[579258.998,6317136.802],[579255.175,6317143.347],[579248.424,6317154.626],[579252.37,6317182.881],[579276.785,6317235.694],[579282.279,6317247.579],[579283.328,6317249.848],[579300.17,6317286.281],[579300.77,6317286.881],[579301.844,6317288.159],[579303.1,6317289.259],[579304.508,6317290.156],[579306.036,6317290.828],[579306.195,6317290.883],[579309.144,6317291.524],[579308.627,6317288.775],[579299.225,6317242.668],[579299.504,6317242.544]]]],\"type\":\"MultiPolygon\"}",
"overskrift": "Økologiske forbindelser og potentielle økologiske forbindelser",
"tekst": null
}


Hent kommuneplantillæg, emne, indhold og områder


De indberettede oplysninger omkring de forskellige planobjekter kan hentes gennem deres hent-kald - f.eks. /kommuneplantillaeg/hent eller /indhold/hent

Flow for generering og hentning af PDF'er

For at kunne generere og hente en PDF for et digitale kommuneplantillæg, så kræver det, at man gør brug af tre kald i følgende rækkefølge:

  1. /kommuneplantillaeg/startPDFGenerering/{planId}
  2. /kommuneplantillaeg/hentPDFGenerering
  3. /kommuneplantillaeg/hentPDFDokument

Disse kald vil blive uddybet i de efterfølgende afsnit.

Start generering af PDF for kommuneplantillæg

For at starte flowet for generering og hent af en PDF, skal man begynde med selve PDF genereringen. For et kommuneplantillæg gøres dette gennem kaldet /kommuneplantillaeg/startPDFGenerering/{planId}.

Her skal man blot indsætte planId'et for kommuneplantillægget som en parameter og trykke "execute".

I svaret til kaldet vil der fremgå teksten "Generering af PDF er registreret med id: ". Noter det efterfølgende id som gen_ID.

Hent ID for PDF genereringen

Når genereringen for PDF'en er startet, så skal man vente indtil genereringen er kørt færdigt. Herefter kan man bruge kaldet /kommuneplantillaeg/hentPDFGenerering.

Indsæt gen_ID i parameteren "pdfId" og tryk execute. Når genereringen er færdig, så vil der komme et svar, hvor "dokumentId" har en værdi - husk dette som dok_ID. ID'et skal bruges i næste kald til at hente PDF'en.

OBS: Hvis du får et svar tilbage vedr. at der ikke findes en PDF generering med dok_ID, så vent et par minutter og prøv igen.
Der er desværre ikke en officiel timer eller noget, som man kan følge ift. genereringen. For mindre planer med enkelte retningslinjer og rammer kan det tage et par minutter og for store planer kan det tage mere end en time (f.eks. den officielle kommuneplan for København kommune).

OBS: Hvis du bruger "planId" for kommuneplantillægget i stedet for "pdfId" til at hente PDF genereringen, og der er genereret flere PDF'er for planen, så husk at holde øje med "genereringstid" i svaret på kaldet. Genereringstidspunktet kan hjælpe dig med at være sikker, at du har den nyeste generering.

Hent PDF'en gennem ID'et

Til sidst skal selve PDF'en hentes gennem kaldet /kommuneplantillaeg/hentPDFDokument.

Indsæt dok_ID i parameteren "dokumentId" og tryk execute.

Hvis Swagger kan finde et dokument med det id, så vil du få svar 200 tilbage og PDF'en kan downloades gennem "Download file":

 

FAQ - fejlbeskeder

Intet sker når man trykker på execute


Hvis der ikke sker noget, når du trykket på "execute"-knappen, så plejer det at være pga. fejl i input ved f.eks. opdatering af planer. Hvis der er fejl i den JSON-tekst, som du sætter ind, så kan systemet ikke håndtere det, og der vil derfor ikke ske noget.

Dobbelttjek om alting er kopieret korrekt ind (f.eks. om der mangler et komma eller tuborgklamme). Ellers ræk ud til en Swagger-ansvarlig som kan hjælpe dig videre.

Fejlbesked vedr. problemer med token

Hvis du får denne fejl, så har du glemt "Bearer", da du indsatte din adgangstoken ift. afsnit "Indsæt token i Swagger":