I am unable to send Webhook POST to Azure instance, now am I able to get any readable data from REST API.
I am trying to get device statuses from within XProtect to an external server, managed by a third party who want the data, by polling the REST API.
I have also tried sending the data via Webhook and while I can use Postman to send a test message to the Azure instance, XProtect can’t send a test message - I’m not even sure if it’s leaving the application.
In the following snippet are the responses I am getting when sending the Webhook to the Azure instance vs. a webhook testing website “webhook.cool”:
# This is what we get when using Milestone Rules and Webhook to sent to webhook.cool as a test:
{
"Event": {
"EventHeader": {
"ID": "f76d54b0-a200-4f86-9ed8-fa4225f1e375",
"Timestamp": "2025-09-30T08:06:28Z",
"Type": "Access Control System Event",
"Version": "1.0",
"Name": "DRC-01-01 (01.PLT.068 ICT Riser).Device Disconnection Detected",
"Message": "Device Disconnection Detected",
"Source": {
"Name": "DRC-01-01 (01.PLT.068 ICT Riser)",
"FQID": {
"ServerId": {
"Type": "AC",
"Hostname": "Access Control",
"Id": "a42b35d4-e2fc-48cc-a7f9-d9c06edede55",
"Scheme": "http"
},
"ParentId": "f3b0a519-ce2f-4292-b637-97f93d441859",
"ObjectId": "eb10a742-7d2b-5074-86b2-68fa791af11c",
"FolderType": 0,
"Kind": "f3b0a519-ce2f-4292-b637-97f93d441859"
}
},
"MessageId": "366cfe1b-4512-530d-8c9f-9bb89f2f7a90"
},
"AccessControlSystemEventId": "7445d40d-96fc-4cae-a103-5a78b0f0b87b",
"AccessControlSystemId": "a42b35d4-e2fc-48cc-a7f9-d9c06edede55",
"AccessControlEventTypeId": "366cfe1b-4512-530d-8c9f-9bb89f2f7a90",
"AccessControlEventSourceTypeId": "024f8710-4a56-5e04-81c7-93ce279b7238",
"AccessControlEventSourceId": "eb10a742-7d2b-5074-86b2-68fa791af11c",
"RelatedAccessControlCredentialHolderIds": [],
"RelatedAccessControlElementIds": [],
"EventCategories": [
"d8ddac09-44df-56ae-8304-a3e66523af67",
"b46e40ba-9696-5174-9462-f79844f99cb7",
"465df5de-16af-5d6f-bdc8-76ccea799b3a"
],
"RelatedSurveillanceItems": [],
"Properties": [
{
"Key": "logUid",
"Value": "0"
}
],
"Reason": ""
},
"Site": {
"ServerHostname": "win-9f2rf2o88lj",
"AbsoluteUri": "https://win-9f2rf2o88lj/",
"ServerType": "XPCO"
}
}
# This is what the third party are getting via subscribbing to the Milestone API:
{
"events": [
{
"specversion": "1.0",
"type": "366cfe1b-4512-530d-8c9f-9bb89f2f7a90",
"source": "accessControlUnits/eb10a742-7d2b-5074-86b2-68fa791af11c",
"id": "f76d54b0-a200-4f86-9ed8-fa4225f1e375",
"time": "2025-09-30T08:06:28Z",
"data": {
"system": "a42b35d4-e2fc-48cc-a7f9-d9c06edede55",
"id": "7445d40d-96fc-4cae-a103-5a78b0f0b87b",
"eventType": "366cfe1b-4512-530d-8c9f-9bb89f2f7a90",
"source": "eb10a742-7d2b-5074-86b2-68fa791af11c",
"sourceType": "024f8710-4a56-5e04-81c7-93ce279b7238",
"credentialHolders": [
],
"elements": [
],
"categories": [
"d8ddac09-44df-56ae-8304-a3e66523af67",
"b46e40ba-9696-5174-9462-f79844f99cb7",
"465df5de-16af-5d6f-bdc8-76ccea799b3a"
],
"surveillanceItems": [
],
"reason": "",
"properties": {
"logUid": "0"
}
}
}
]
}
Ideally I want the third party to get the most important data in the following snippet:
"Timestamp": "2025-09-30T08:06:28Z",
"Type": "Access Control System Event",
"Name": "DRC-01-01 (01.PLT.068 ICT Riser).Device Disconnection Detected",
"Source": {
"Name": "DRC-01-01 (01.PLT.068 ICT Riser)",
}
The third party are using the following call after consulting the API documentation, in the following snippet:
1. request token/login via api
2. use token and send via websocket
{ "command": "authenticate", "commandId": 1, "token": "token_from_api" }
3. start session
{ "command": "startSession", "commandId": 2, "sessionId": "", "eventId": "" }
4. subscribe to all events
{ "command": "addSubscription", "commandId": 3, "filters": [{ "modifier": "include", "resourceTypes": ["*"], "sourceIds": ["*"], "eventTypes": ["*"] }] }
If anyone has any insight on this that would be greatly appreciated!