Versjonssammenligning

Nøkkel

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

I første omgang blir oppsett av integrasjoner satt opp via henvendelser i Service Desk. Det vil bli vurdert om det bør være en større grad av selvbetjening, slik at man som integrerende system selv kan sette opp abonnement vha FtPBs adminportal.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 hendelsen Microsoft.EventGrid.SubscriptionValidationEvent. Dette er en systemhendelse som blir sendt til endepunktet når abonnementet blir opprettet.WebhookAPI-et må også håndtere lister av events da dette kan sendes batchvis alt etter hvor mye trafikk det er.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

Utvid
titleC# controller for Cloud Events
Kodeblokk
languagec#
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

Utvid
titleEksempel på payload i en CloudEvent
Kodeblokk
languagejson
{
	"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