...
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.
...
...
...
...
...
...
...
Det kjøres i tillegg alltid en validering ved process next
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
...
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 | ||
---|---|---|
| ||
{
"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 medPASSED
/FAILED
, eller om den ikke er sjekket (SKIPPED
).messageType
- Indikerer om regelen innebærer et MÅ- eller BØR-krav, ved henholdsvisERROR
/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 | ||
---|---|---|
| ||
{
"file": File //planvarsel.xml
} |
...
Respons
Kodeblokk | ||
---|---|---|
| ||
{
"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 | ||
---|---|---|
| ||
{
"file": File //planomraade.gml
} |
...
Respons
Kodeblokk | ||
---|---|---|
| ||
{
"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 | ||
---|---|---|
| ||
{
"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
...
language | json |
---|
...
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 |
DataElementId | DataType | Fra appen: |
Field | XpathField |
|
Code | Reference |
|
Description | Message |
|
Source | Settes av altinn, hvilke validator som er brukt. |
|
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