WebHook Payload Models
Events Bridge exposes two endpoints that return a fully populated example of each WebHook payload. They exist purely so you can build and test a receiver before any real detection has happened — point a code generator at them, save them as test fixtures, or paste one into your own service to check that it deserializes.
The response is a static, hard-coded sample. Nothing is looked up, nothing is stored, and the values are the same on every call apart from messageId and the timestamps.
Unlike every other Events Bridge API, /api/v1/webhook-models/* is anonymous — no JWT, no login. They return a fixed schema example and expose no customer data. This makes them convenient in a build pipeline, where you may not want to hold credentials.
API Endpoints
- HTTP Method:
GET - Endpoints:
/api/v1/webhook-models/face— returns aWebHookFaceRecPayload/api/v1/webhook-models/lpr— returns aWebHookLprPayload
- Private Server Base URL:
https://10.0.0.123:5022 - Cloud Server Base URL:
https://customername.econnectcloud.com/eventsbridge
Authentication
None. See the note above.
Code Examples
- C#
- Curl
- PowerShell
using eConnect.EventsBridge.Sdk;
using eConnect.EventsBridge.Sdk.Client;
// Assuming sdk is already initialized.
// These two endpoints are anonymous - the SDK works, but a plain
// HttpClient with no Authorization header works just as well.
var faceModel = await sdk.GetFacePayloadModelExampleAsync();
var lprModel = await sdk.GetLprPayloadModelExampleAsync();
Console.WriteLine($"Face discriminator: {faceModel.PublishType}"); // WebHookFaceRecPayload
Console.WriteLine($"Face source: {faceModel.SourceName}");
Console.WriteLine($"Detected person: {faceModel.Payload.PersonInfo.FirstName} {faceModel.Payload.PersonInfo.LastName}");
Console.WriteLine($"Lpr discriminator: {lprModel.PublishType}"); // WebHookLprPayload
Console.WriteLine($"Detected plate: {lprModel.Payload.LprPlateInfo.Plate}");
# Define variables
API_URL="https://your-domain.com/eventsbridge"
# No Authorization header is required for these two endpoints
# Face detection payload shape
curl -X GET "$API_URL/api/v1/webhook-models/face"
# License plate payload shape
curl -X GET "$API_URL/api/v1/webhook-models/lpr"
# Save both to disk to feed a code generator or a test fixture
curl -s -X GET "$API_URL/api/v1/webhook-models/face" > webhook-face-model.json
curl -s -X GET "$API_URL/api/v1/webhook-models/lpr" > webhook-lpr-model.json
# Define variables
$API_URL = "https://your-domain.com/eventsbridge"
# No Authorization header is required for these two endpoints
$faceModel = Invoke-RestMethod -Uri "$API_URL/api/v1/webhook-models/face" -Method Get
$lprModel = Invoke-RestMethod -Uri "$API_URL/api/v1/webhook-models/lpr" -Method Get
Write-Output "Face discriminator: $($faceModel.publishType)" # WebHookFaceRecPayload
Write-Output "Detected person: $($faceModel.payload.personInfo.firstName) $($faceModel.payload.personInfo.lastName)"
Write-Output "Lpr discriminator: $($lprModel.publishType)" # WebHookLprPayload
Write-Output "Detected plate: $($lprModel.payload.lprPlateInfo.plate)"
# Save both to disk to feed a code generator or a test fixture
$faceModel | ConvertTo-Json -Depth 10 | Set-Content webhook-face-model.json
$lprModel | ConvertTo-Json -Depth 10 | Set-Content webhook-lpr-model.json
Raw Sample — Face
Request
GET https://10.0.0.123:5022/api/v1/webhook-models/face
Response
- 200 OK: The example payload was returned. This endpoint has no failure path of its own.
{
"publishType": "WebHookFaceRecPayload",
"sourceName": "eConnect Fr Location A",
"externalId": "01010101-2222-3333-4444-123456789103",
"fields": [
{
"fieldName": "TenantId",
"fieldValue": "123456"
}
],
"serverContext": null,
"payload": {
"personInfo": {
"faceId": "44443333-1234-1234-1234-123456789012",
"firstName": "Chuck",
"lastName": "Norris",
"middleName": "Ray",
"tags": [
{
"tagName": "VIP",
"expires": null
}
],
"fields": [
{
"fieldName": "PartnerName-TenantId",
"stringValue": "123456",
"dateValue": null,
"numberValue": null,
"boolValue": null
}
],
"notes": [
{
"noteTitle": "Test",
"noteBody": "Test Note"
}
]
},
"detectionInfo": {
"dateTimeUtc": "2026-08-10T17:04:22.918Z",
"timeZone": "America/Los_Angeles",
"confidence": 0.999,
"detectId": "120987654-1212-1212-1212-120987654321",
"detectorName": "Camera 1"
},
"detectionImage": {
"image": "NzU="
},
"defaultPhoto": {
"image": "NzU="
},
"detectionHistory": {
"visitHistory": [
{
"dateTimeUtc": "2026-08-10T17:04:22.918Z",
"detectorName": "Camera 1"
},
{
"dateTimeUtc": "2026-08-10T16:04:22.918Z",
"detectorName": "Camera 2"
}
],
"printHistory": [
{
"dateTimeUtc": "2026-08-10T17:04:22.918Z",
"printerName": "Printer 1"
}
]
},
"resentEvent": false,
"messageId": "9f1d6b5a-3c2e-4a71-9d88-0b4c5e6f7a81"
}
}
Every field is described on the Face WebHook page.
Raw Sample — LPR
Request
GET https://10.0.0.123:5022/api/v1/webhook-models/lpr
Response
- 200 OK: The example payload was returned. This endpoint has no failure path of its own.
{
"publishType": "WebHookLprPayload",
"sourceName": "eConnect Lpr Location A",
"externalId": "01010101-2222-3333-4444-123456789103",
"fields": [
{
"fieldName": "TenantId",
"fieldValue": "123456"
}
],
"serverContext": null,
"payload": {
"lprPlateInfo": {
"plate": "ON3WEGO",
"similar1Plate": "ON3WEGO",
"vehicleMake": "Cadillac",
"vehicleModel": "CTS-V",
"vehicleColor": "Gray",
"vehicleState": "NV",
"tags": [
{
"tagName": "Vip",
"expires": "2027-08-10T17:04:22.918Z"
}
],
"fields": [
{
"fieldName": "PartnerName-TenantId",
"stringValue": "00000000-2222-3333-4444-123456789103",
"dateValue": null,
"numberValue": null,
"boolValue": null
}
]
},
"detectionInfo": {
"dateTimeUtc": "2026-08-10T17:04:22.918Z",
"timeZone": "America/Los_Angeles",
"detectorName": "Camera 1"
},
"detectionImages": [
{
"image": "NzU=",
"cropSizeName": "Close"
},
{
"image": "NzU=",
"cropSizeName": "Medium"
}
],
"detectionHistory": {
"visitHistory": [
{
"dateTimeUtc": "2026-08-10T17:04:22.918Z",
"detectorName": "Camera 1"
},
{
"dateTimeUtc": "2026-08-10T16:04:22.918Z",
"detectorName": "Camera 2"
}
]
},
"resentEvent": false,
"messageId": "2b7e4c19-8a63-4f05-b1de-6c3a9d240f57"
}
}
Every field is described on the LPR WebHook page.
similar1Plate is produced by the plate normalizerIts value is derived from plate by internal normalization rules and may or may not differ from it for any given plate. Treat it as opaque: compare an incoming plate against it, rather than trying to reproduce the normalization yourself.
Differences From a Live Event
These samples are schema references, not realistic traffic. Three things differ from what your receiver will actually see:
serverContextisnull. In production it carries the key/value context configured for the server that produced the detection. Handle both a populated dictionary and a missing one.imagevalues are two bytes of filler ("NzU="), not a real photo. A liveimageis a base64-encoded JPEG and is by far the largest part of the payload — size your request limits for hundreds of kilobytes, not bytes.- The timestamps are generated when you call, so
dateTimeUtcis always "now" and the history entries are always one hour apart.
Additional Notes
- To exercise your receiver end-to-end — real HTTP, real authentication headers, real TLS — use Send a Test Event instead. That posts a synthetic detection to your server, while these endpoints only hand the shape back to you.
- For code generation across the whole API rather than just these two payloads, use the Swagger schema.