Versjonssammenligning

Nøkkel

  • Denne linjen ble lagt til.
  • Denne linjen ble fjernet.
  • Formateringen ble endret.

...

MERK at denne siden er utdatert. Følgende skal brukes for validering i v2:

...

Alle valideringsregler ligger i en valideringstjeneste utenfor altinn appen. Den blir brukt som en del av innsendingsprosessen i appen, men kan og brukes for å prevalidere data.

Prevalidering - Ftpb validationService

Validering av data i henhold til planvarsel.xsd

Valideringstjeneste (ValService) for nye byggsøknader og plantjenester

Innsending

...

Validering i altinn app - varselplanoppstart

Altinn appen sjekker at data som lastes opp til instansen er i henhold til konfigurasjonen av dataelementet i applicationMetadata. Det blir og gjort validering ved process next, der det sjekkes om alle påkrevde data er lastet opp for det aktuelle prosessteget.

Altinn har i tillegg endepunkt for å prevalidere data og intans. Her har vi koblet på våre valideringer fra valideringstjenseten og gjør de samme valideringene som ved prevalidering.

https://

...

docs.

...

altinn.

...

studio/nb/

...

api/

...

apps/

...

validation/

...

Det kjøres i tillegg alltid en validering ved process next
image-20240321-135601.pngImage Removed

Valideringsrapport

Etter validering kan man hente ut en valideringsrapport som tilsvarer responsen man får fra ValService. Den kan hentes på instansen på datatype Valideringsrapport

Forskjellige miljøer

...

Miljø - angitt som {miljø} i videre tekst

...

Basis-url

...

Testmiljø (tt02)

...

https://dibk.apps.tt02.altinn.no

...

Produksjon

...

https://dibk.apps.altinn.no

Autentisering

Det er ikke behov for autentisering mot API-et for validering.

APIet

Open API (Swagger)-dokumentasjon på alle API:

Opplasting av data - utvidet filvalidering

DataTyper

  • Planvarsel

I tillegg til altinn appen sine valideringer, om data er i henhold til konfigurasjon i applicationMetadata, så har vi lagt på data analyse og validering av enkelte datatyper, for å sjekke at data er henhold til datamodellen.

GET /api/v1/applicationmetadata

  • enabledFileAnalysers

  • enabledFileValidator

...

Eksempel - Legg til data

POST https://dibk.apps.tt02.altinn.no/dibk/varselplanoppstart/instances/swagger/

Basis-url til API for validering er:

Kodeblokk
POST {miljø}/dibk/varselplanoppstart/validering

heretter angitt som {validering}.

Alle forespørsler mot API-et må sendes som “multipart/form-data”.

Endepunkter

API for validering har tre endepunkter:

  • POST {validering}/planvarsel

    • Validerer xml-filen som utgjør planvarslet

  • POST {validering}/planomraade

    • Validerer gml-filen som definerer planområdet

  • POST {validering}/innsending

    • Validerer planvarselet i sin helhet

Respons fra API-et

Responsen fra API-et har følgende form:

Kodeblokk
languagejson
{
	"correlationId": guid,
	"namespace": string,
	"errors": int,
	"warnings": int,
	"rules": [
		{
			"id": string,
			"name": string,
			"description": string,
			"status": string,
			"messageType": string,
			"timeUsed": double,
			"messages": []
		}
	],
	"startTime": "yyyy-MM-ddThh:mm:ss.zzzzzzz+00:00",
	"endTime": "yyyy-MM-ddThh:mm:ss.zzzzzzz+00:00",
	"files": [
		// list of file names
	],
	"timeUsed": double
}

...

correlationId - Sporings-ID for valideringsforespørselen.

...

namespace - Ikke i bruk i denne løsningen.

...

warnings - Totalt antall rules som er validert med "status": "FAILED" og "messageType": "WARNING".

...

rules

  • id - Regelens identifikator.

  • name - Regelens navn.

  • description - Regelens beskrivelse.

  • status - Indikerer om regelen har validert som gyldig med PASSED/FAILED, eller om den ikke er sjekket (SKIPPED).

  • messageType - Indikerer om regelen innebærer et MÅ- eller BØR-krav, ved henholdsvis ERROR/WARNING.

  • timeUsed - Indikerer antall sekunder medgått til sjekk av regelen.

  • messages - Dersom regelen ikke har "status": "PASSED", vil det her ligge en nærmere beskrivelse av årsaken.

...

startTime - Tidspunkt for når valideringsprosessen startet.

...

endTime - Tidspunkt for når valideringsprosessen var ferdig.

...

files - Liste av navn på xml/gml-filer som er validert mot skjema.

...

timeUsed - Indikerer antall sekunder (med to desimaler) medgått til valideringen.

Eksempler på bruk

Planvarsel

Url

Kodeblokk
POST {validering}/planvarsel

Multipart-request

Kodeblokk
languagejson
{
  "file": File //planvarsel.xml
}

...

Respons

Kodeblokk
languagejson
{
	"correlationId": "f33d1cd5-fe3f-44c7-bfd4-a60d69903a6f",
	"namespace": "",
	"errors": 2,
	"warnings": 0,
	"rules": [
		{
			"id": "vph.xsd.1",
			"name": "Innholdet må være i henhold til informasjonsmodell/XSD for skjema. Ta kontakt med søknadssystemet du bruker.",
			"description": "Innholdet må være i henhold til informasjonsmodell/XSD for skjema. Ta kontakt med søknadssystemet du bruker.",
			"status": "PASSED",
			"messageType": "ERROR",
			"timeUsed": 0,
			"messages": []
		},
		//Resten av reglene....
	],
	"startTime": "2023-12-20T09:12:54.6621183+00:00",
	"endTime": "2023-12-20T09:12:54.7059069+00:00",
	"files": [
		"planvarsel.xml"
	],
	"timeUsed": 0.04
}

Planområde

Url

Kodeblokk
POST {validering}/planomraade

Multipart-request

Kodeblokk
languagejson
{
  "file": File //planomraade.gml
}

...

Respons

Kodeblokk
languagejson
{
	"correlationId": "55aba585-32be-4cd0-884c-41128650f6fb",
	"namespace": "",
	"errors": 0,
	"warnings": 0,
	"rules": [
		{
			"id": "gml.xsd.po",
			"name": "Skjemavalidering for GML-plangrense",
			"description": "Datasettet må være i henhold til oppgitt applikasjonsskjema",
			"status": "PASSED",
			"messageType": "ERROR",
			"timeUsed": 0,
			"messages": []
		},
		{
			"id": "gml.gmlid.1",
			"name": "GML-ID for alle objekter i planen skal være unike",
			"status": "PASSED",
			"messageType": "ERROR",
			"timeUsed": 0.0028365,
			"messages": []
		},
		{
			"id": "gml.uuid.1",
			"name": "LokalId er en gyldig UUID",
			"description": "Egenskapen 'LokalId' må være en gyldig UUID",
			"status": "PASSED",
			"messageType": "ERROR",
			"timeUsed": 0.0078424,
			"messages": []
		},
		{
			"id": "gml.kurve.1",
			"name": "Kurver skal ha gyldig geometri",
			"status": "PASSED",
			"documentation": "https://dibk.atlassian.net/wiki/spaces/FP/pages/1918763029/gml.kurve.1",
			"messageType": "ERROR",
			"timeUsed": 0.0015616,
			"messages": []
		},
		{
			"id": "gml.kurve.2",
			"name": "Kurver skal ikke ha dobbeltpunkter",
			"status": "PASSED",
			"messageType": "ERROR",
			"timeUsed": 0.0066684,
			"messages": []
		},
		{
			"id": "gml.bue.1",
			"name": "Sirkelbuer kan kun inneholde tre punkter",
			"status": "PASSED",
			"messageType": "ERROR",
			"timeUsed": 0.0024707,
			"messages": []
		},
		{
			"id": "gml.bue.2",
			"name": "Punktene kan ikke ligge på rett linje for sirkelbue",
			"status": "PASSED",
			"messageType": "ERROR",
			"timeUsed": 0.0021363,
			"messages": []
		},
		{
			"id": "gml.flate.1",
			"name": "Flater skal ha gyldig geometri",
			"status": "PASSED",
			"documentation": "https://dibk.atlassian.net/wiki/spaces/FP/pages/1933574255/gml.flate.1",
			"messageType": "ERROR",
			"timeUsed": 0.002271,
			"messages": []
		},
		{
			"id": "gml.flate.2",
			"name": "Avgrensningen til en flate kan ikke krysse seg selv",
			"status": "PASSED",
			"messageType": "ERROR",
			"timeUsed": 0.0084871,
			"messages": []
		},
		{
			"id": "gml.flate.3",
			"name": "Avgrensningene til en flate skal nøstes i riktig retning",
			"description": "Ytre flateavgrensning skal nøstes i retning mot klokken, og indre avgrensing i retning med klokken.",
			"status": "PASSED",
			"messageType": "ERROR",
			"timeUsed": 0.0278683,
			"messages": []
		},
		{
			"id": "gml.flate.4",
			"name": "Hull i flate må ligge innenfor flatens ytre avgrensning",
			"status": "PASSED",
			"messageType": "ERROR",
			"timeUsed": 0.0862205,
			"messages": []
		},
		{
			"id": "gml.flate.5",
			"name": "Hull i flate kan ikke overlappe andre hull i samme flate",
			"status": "PASSED",
			"messageType": "ERROR",
			"timeUsed": 0.081594,
			"messages": []
		},
		{
			"id": "gml.avgr.1",
			"name": "Samsvarende avgrensingsgeometri",
			"description": "Unionen av avgrensingslinjene til en flate må samsvare med flategeometrien.",
			"status": "SKIPPED",
			"messageType": "ERROR",
			"timeUsed": 0.0068963,
			"messages": []
		}
	],
	"startTime": "2023-12-20T09:42:31.7357459+00:00",
	"endTime": "2023-12-20T09:42:31.9679267+00:00",
	"files": [
		"VORPAH-planområde.gml"
	],
	"timeUsed": 0.23
}

Fullstendig innsending

Url

Kodeblokk
POST {validering}/innsending

Multipart-request

Kodeblokk
languagejson
{
  "Planvarsel": File //Planvarsel.xml
  "Planomraade": File //Planområde.gml
  "PlanomraadePdf": File //Planområde.pdf
  "PlanomraadeSosi": File //Planområde.sos
  "KartDetaljert": File //Detaljert_Kart.pdf
  "Planinitiativ": File //Planinitiativ.pdf
  "ReferatOppstartsmøte": File //Referat fra oppstartsmøte.pdf
  "Planprogram": File //Planprogram.pdf
  "Annet": File //Annet.pdf
}

...

Respons

...

languagejson

...

50096175/b1f579d4-5f9b-4bae-92ce-8c4cdf20a55b/data?dataType=Planvarsel

Tips

Sender inn data i henhold til datamodell

Respons - 201 Created

Advarsel

Sender inn feil data

Respons - 400 Bad Request

Innholdet er ikke gyldig i henhold til datamodell. Feilmelding: There is an error in XML document (1, 7).

Data validering

https://docs.altinn.studio/nb/api/apps/validation/#validate-stored-data

Altinn appen sitt endepunkt for prevalidering av data. Her kobler vi på Ftpb validationService og returnerer valideringsmeldinger i responsen til altinn som ValidationIssue. I tillegg blir det lagret en valideringsrapport som tilsvarer responsen fra validationService. Denne er tilgjengelig på datatypen Valideringsrapport etter validering.

Her skal man altså få den samme informasjonen som ved prevalidering til validationService

Mapping mellom Ftpb validationService og altinn ValidationIssue

ValidationIssue

ValidationReport .ValidationMessages

Eksempel

Severity

MessageType

Error 1, Warning 2

DataElementId

DataType

Fra appen: Planvarsel

Field

XpathField

Planvarsel/vedlegg/KartDetaljert

Code

Reference

11000.1.79.51.12

Description

Message

Detaljert kart bør sendes med varselet. Husk å markere kartet med gårds- og bruksnummer eller adresse.

Source

Settes av altinn, hvilke validator som er brukt.

Altinn.App.logic.Validator.DataElement.PlanvarselValidator-*

 

Valideringsrapport

Det vil kun være tilgjengelig en valideringsrapport pr dataelement. På denne datatypen har instanseier kun lesetilgang.

Datatype

Valideringsrapport

Filnavn på valideringsrapport

Valideringsrapport-{dataType}-{dataElementId}.xml