Riktig rekkefølge på API-kall – unngå 409 Conflict
Denne siden beskriver riktig rekkefølge på API-kall for å fullføre en Altinn 3-instans. Feil rekkefølge er den vanligste årsaken til at leverandører får HTTP 409 Conflict fra Altinn.
Hvorfor oppstår 409 Conflict?
En 409 Conflict ved kall til process/next betyr at én eller flere valideringer blokkerer videre fremdrift i prosessflowet. Det er tre vanlige årsaker:
Feilkode | Årsak | Løsning |
|---|---|---|
| Et eller flere vedlegg er lastet opp, men virusskanning er ikke ferdig | Vent til skanning er fullført – bruk |
| Et påkrevd dataelement (f.eks. XML-skjema) er ikke lastet opp. Påkrevde datatyper er konfigurert med | Last opp alle påkrevde dataelementer før du kaller |
| Skjemadata inneholder valideringsfeil som blokkerer innsending | Kall |
To måter å opprette instans på
Leverandører kan opprette en instans på to måter. Begge ender i de samme validerings- og innsendingsstegene.
Alternativ A – Steg-for-steg
Instans, XML og vedlegg lastes opp i separate kall:
POST /instances
PUT .../data/{dataGuid}
POST .../data?dataType={type}Alternativ B – Multipart request
Instans, XML og vedlegg sendes samlet i ett kall:
POST /instances
(multipart/form-data)Også ved multipart starter filskanningen asynkront etter at 201-responsen er mottatt. Du er ikke klar til å sende inn umiddelbart.
Felles steg etter opprettelse
Uansett hvilken metode du bruker for å opprette instansen, følger de samme stegene videre.
Steg 1 – Valider instansen (og poll om nødvendig)
GET /instances/{partyId}/{instanceGuid}/validateKall validate umiddelbart etter at instansen er opprettet. Bruk dette endepunktet som poll-mekanisme – det sjekker både filskanningstatus og skjemavalidering i ett kall.
Sjekk listen av validationIssues i responsen:
Kode i responsen | Betyr | Handling |
|---|---|---|
| Virusskanning av ett eller flere vedlegg pågår fortsatt | Vent 1–2 sekunder og kall |
Feil med | Blokkerende feil – vil alltid hindre innsending | Skjemadata må rettes |
Advarsel med | Teknisk advarsel, men blokkerer likevel innsending | Skjemadata må rettes eller feltet må fylles ut |
Advarsel med | Ikke-blokkerende advarsel | Kan gå videre til innsending |
Ikke kall process/next mens DataElementFileScanPending er til stede. Dette gir HTTP 409 selv om alt annet er i orden. Bruk /validate-responsen til å avgjøre når du er klar.
Steg 2 – Send inn
PUT /instances/{partyId}/{instanceGuid}/process/nextKall process/next kun når /validate ikke returnerer blokkerende feil. For tjenester med signering skjer dette i to omganger: først signering, deretter endelig innsending.
Oppsummert flyt
Alternativ A (steg-for-steg):
POST /instances
PUT .../data/{dataGuid} → XML-skjema(er)
POST .../data?dataType=… → Vedlegg
GET .../validate → Poll til DataElementFileScanPending forsvinner + sjekk øvrige feil
PUT .../process/nextAlternativ B (multipart):
POST /instances (multipart) → Instans + XML + vedlegg i ett kall
GET .../validate → Poll til DataElementFileScanPending forsvinner + sjekk øvrige feil
PUT .../process/nextEksempel på 409-respons
Slik ser en typisk feilrespons ut når process/next kalles for tidlig:
{
"title": "Validation failed for task",
"status": 409,
"detail": "2 validation errors found for task Task_1",
"validationIssues": [
{
"severity": 1,
"dataElementId": "d78c6976-da7e-43d0-931c-6643a0eb59cf",
"field": "Utomhusplan",
"code": "DataElementFileScanPending",
"description": "DataElementFileScanPending",
"source": "Altinn.App.Core.Features.Validation.Default.DefaultDataElementValidator-*",
"noIncrementalUpdates": true
},
{
"severity": 2,
"dataElementId": "e76776db-211c-4566-b80c-0b3dfb2d907b",
"field": "/nabovarsel[1]",
"code": "Nabovarsel.DispensasjonOversikt.Dispensasjon.Utfylt",
"description": "Du bør oppgi informasjon om dispensasjonen/dispensasjonene du søker om.",
"source": "Altinn.App.logic.Validator.DataElement.NVDataElementValidator-NV",
"noIncrementalUpdates": true
}
]
}To problemer blokkerer innsendingen i dette eksemplet:
DataElementFileScanPendingfor filen «Utomhusplan» – virusskanning er ikke ferdig ennå. Kall/validatepå nytt om noen sekunder.Manglende dispensasjonsinformasjon i nabovarslet – severity 2, men blokkerende fordi
noIncrementalUpdates: true.
Sjekkliste før process/next
☑ Alle påkrevde XML-skjemaelementer er lastet opp
☑ Alle påkrevde vedlegg er lastet opp
☑
/validatereturnerer ikkeDataElementFileScanPending☑
/validatereturnerer ingen feil medseverity: 1☑
/validatereturnerer ingen advarsler mednoIncrementalUpdates: true
Relaterte lenker
Altinn App API – fullstendig API-referanse for instanser, dataelementer, validering og prosess