Oppsett og registrering av abonnement

Oppsett av abonnement gjøres via henvendelse til Service Desk. Følgende må være en del av henvendelsen;

  • Søknadssystemetsnavn (typisk identifikatoren som brukes i xml-noden metadata/fraSluttbrukersystem )

  • URL til WebhookAPIet som det ønskes å motta hendelser på

Krav til Webhook API

WebhookAPI-et må kunne ta i mot en POST-request med støtte for Cloud Event Schema v1.0. I tillegg til dette må API-et støtte validering av abonnementet. For cloud events gjøres dette ved et OPTIONS kall til endepunktet. Se spec for detaljer https://github.com/cloudevents/spec/blob/v1.0/http-webhook.md#4-abuse-protection

Eksempel på en controller i Dotnet som håndterer Cloud Events

using Azure.Messaging; using Microsoft.AspNetCore.Mvc; using System.Text; namespace CloudEventController { [ApiController] [Route("api/[controller]")] public class CloudEventController(ICloudEventService cloudEventService) : ControllerBase { [HttpPost] public async Task<IActionResult> PostCloudEvent(CloudEvent cloudEvent) { await cloudEventService.HandleEventAsync(cloudEvent); return Ok(); } [HttpOptions] public IActionResult Validate() { using var reader = new StreamReader(Request.Body, Encoding.UTF8); var webhookRequestOrigin = HttpContext.Request.Headers["WebHook-Request-Origin"].FirstOrDefault(); var webhookRequestCallback = HttpContext.Request.Headers["WebHook-Request-Callback"]; var webhookRequestRate = HttpContext.Request.Headers["WebHook-Request-Rate"]; HttpContext.Response.Headers.Append("WebHook-Allowed-Rate", "*"); HttpContext.Response.Headers.Append("WebHook-Allowed-Origin", webhookRequestOrigin); return Ok(); } } }

CloudEvent payload eksempel

{ "id": "50006a30-2113-49f7-b826-e19656eba5b8", "source": "Dibk.Ftpb.DbWatcher.App.FtpbApi.KvitteringSyncService", "type": "no.dibk.bygg.innsending.arkiv.kvittering-mottatt", "data": { "System": "Søknadssystem2000", "Content": { "Metadata": { "FraEbyggesaksystem": "VårtSystem", "InnsendingReferanse": "AR123456", "FtBId": "341424234143241214", "AvsenderId": "3817", "AvsenderNavn": "Midt-Telemark Kommune", "EkspedertDato": "2024-09-04T14:50:59Z", "OffentligJournalUrl": "https://midt-telemark.kommune.no/" }, "Saksnummer": { "Saksaar": "2024", "Sakssekvensnummer": "12421", "Journalpostnummer": "6549871" }, "AvsenderKontaktpunkt": { "Navn": "Byggesaksavdelingen", "Epost": "user@example.com", "Telefon": "+4799999999", "Mobil": "+4799999999" }, "Milepæl": "MS", "Saksbehandlingsfrist": "2024-10-12T08:47:59Z", "MottattDato": "2023-01-12T08:47:59Z", "RegistrertDato": "2023-01-12T08:47:59Z", "MottattDokument": [ { "DokumentNavn": "Kart.pdf", "MimeType": "application/pdf", "DokumentStorrelse": 123456, "EkstraMetadata": [ { "Key": "skjemaversjon.dokument.9", "Value": "5797.42813" } ] } ] } }, "time": "2024-09-04T11:15:03.2582556+00:00", "specversion": "1.0", "dataschema": "https://bitbucket.org/dibk/ftpb-saksbehandlingsdata/src/main/ftpb-eventschemas/KvitteringEvent.json", "datacontenttype": "application/json", "subject": "no/dibk/bygg/innsending/AR19200955/arkiv/kvittering/", "traceparent": "00-d614def0ac43ef04f590f7aa4eed5ae0-627f02658d539201-01", "tracestate": "es=s:1" }

Ressurser:

Mer info om Microsoft sine krav til Webhook-API: WebHook event delivery - Azure Event Grid

Microsoft CloudEvents docs: https://learn.microsoft.com/en-us/azure/event-grid/cloudevents-schema

Cloud Events Abuse Protection docs: https://github.com/cloudevents/spec/blob/v1.0/http-webhook.md#4-abuse-protection