Versjonssammenligning

Nøkkel

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

...

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

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

...