Download OpenAPI specification:
The Silver Shield Webhook API enables real-time event notifications to be delivered to your configured callback endpoints. This push-based mechanism ensures your systems receive immediate updates as events occur in the Silver Shield platform.
Silver Shield webhooks are organized into four primary categories:
sensor.raw.config, sensor.raw.respiratory)Unprocessed data directly from sensors, primarily used for device configuration synchronization, respiratory raw data forwarding, and device monitoring. These events provide essential device-level information such as scan area settings, firmware versions, detection thresholds, and raw respiratory metrics.
sensor.detection.*)Business logic-processed events representing meaningful occurrences such as fall detection, occupancy status, and sensor health monitoring.
resource.*)Lifecycle notifications for system resources including sensors, users, homes, rooms, and configurations. These events track creation, updates, and deletion operations.
system.*)Platform-level notifications such as firmware releases and system-wide updates.
sensor.raw.*, sensor.detection.*): Complete payload with all sensor and event detailssystem.*): Full payload containing comprehensive system event informationresource.*): Lightweight payload containing only resource identifiers (id or sn) for efficient processingAll webhook requests are signed using HMAC-SHA256 symmetric encryption to verify authenticity and prevent tampering:
msg_id.timestamp.payloadv1,base64(hmac_sha256(msg_id.timestamp.payload, secret))Your webhook endpoint must handle the following responsibilities:
webhook-id header as an idempotency key. The same webhook-id may be delivered multiple times (e.g., due to retries), so ensure your processing handles duplicate events gracefullyrequired | object Security headers for request authentication and integrity verification. These headers must be validated before processing the webhook payload. Critical: Always reject requests with missing or invalid signature headers to prevent security vulnerabilities. |
Webhook event message body.
Event-specific delivery rules:
sensor.raw.respiratory is reported only when the person is in bed and valid respiratory data is detected;
no report is sent when the person is out of bed or when no respiratory data is detected. Once respiratory data is detected, the event is reported once every 30 minutes.
If the device goes offline within the 30-minute reporting interval and later comes back online, the next detected respiratory report is sent immediately once respiratory data is available again, and the 30-minute interval is reset from that report time.sensor.detection.bed_in is delivered only after the person remains in the bed area for at least 30 seconds.sensor.detection.bed_out is delivered only if the previous confirmed state was bed_in. If the person stays in bed for less than 30 seconds and then leaves, neither bed_in nor bed_out will be delivered.sensor.detection.couch_in is delivered only after the person remains in the couch area for at least 30 seconds.sensor.detection.couch_out is delivered only if the previous confirmed state was couch_in. If the person stays on the couch for less than 30 seconds and then leaves, neither couch_in nor couch_out will be delivered.sensor.detection.door_in and sensor.detection.door_out are rate-limited to at most one notification per minute for each event type.sensor.detection.occupied is delivered when occupancy transitions between vacant and occupied, or when the occupied person count changes between single-person and multi-person. The payload includes aggregated positions. Determine single-person or multi-person occupancy from the number of coordinate entries in positions. Each coordinate entry includes an id that identifies the detected person target.sensor.detection.pfall_detected is delivered when the current message enters suspected-fall state and the previous message was neither suspected fall nor fall.sensor.detection.pfall_canceled is delivered when the previous message was suspected fall and the current message becomes occupied without fall or suspected fall.sensor.detection.fall_detected is delivered only when the device has been properly calibrated. If any of the scan area parameters left, right, or height is not set, or if the device has a mount angle error, no fall detection event will be delivered.| eventId required | integer <int64> (EventId) >= 1 Unique identifier for an event in the system. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| eventType required | string (EventType) Enum: "sensor.raw.config" "sensor.raw.respiratory" "sensor.detection.online" "sensor.detection.offline" "sensor.detection.occupied" "sensor.detection.vacant" "sensor.detection.bed_in" "sensor.detection.bed_out" "sensor.detection.couch_in" "sensor.detection.couch_out" "sensor.detection.door_in" "sensor.detection.door_out" "sensor.detection.pfall_detected" "sensor.detection.pfall_canceled" "sensor.detection.fall_detected" "sensor.detection.fall_recovered" "sensor.detection.mount_angle_skewed" "sensor.detection.device_recovered" "sensor.detection.device_malfunctioning" "sensor.detection.upgrade_started" "sensor.detection.upgrade_succeeded" "sensor.detection.upgrade_failed" "resource.sensor.created" "resource.sensor.updated" "resource.sensor.deleted" "resource.sensor.config_updated" "resource.sensor.fall_threshold_updated" "resource.sensor.zones_updated" "resource.sensor.bind_room" "resource.user.created" "resource.user.batch_created" "resource.user.updated" "resource.user.deleted" "resource.user.bind_home_updated" "resource.user.bind_label_updated" "resource.home.created" "resource.home.updated" "resource.home.deleted" "resource.home.bind_user_updated" "resource.home.bind_label_updated" "resource.room.created" "resource.room.updated" "resource.room.deleted" "resource.home_label.created" "resource.home_label.updated" "resource.home_label.deleted" "resource.home_label.bind_home_updated" "resource.home_label.bind_user_updated" "resource.tenant.created" "resource.tenant.updated" "resource.tenant.deleted" "system.firmware.published" Event Type Classification
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| tenantId | integer <int64> (TenantId) >= 1 Unique identifier for a tenant in the system. A tenant represents an organization or customer entity that owns one or more homes,
users, and sensors. This ID is automatically generated when a tenant is created
and remains constant throughout the tenant's lifecycle. Used for referencing the
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| timestamp required | string <date-time> (Timestamp) Event occurrence time in ISO 8601 format | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
required | ConfigReportData (object) or RespiratoryRawReportData (object) or SensorOnlineData (object) or SensorOfflineData (object) or OccupiedData (object) or VacantData (object) or BedInData (object) or BedOutData (object) or CouchInData (object) or CouchOutData (object) or DoorInData (object) or DoorOutData (object) or PFallDetectedData (object) or PFallCanceledData (object) or FallDetectedData (object) or FallRecoveredData (object) or MountAngleSkewedData (object) or SensorRecoveredData (object) or SensorMalfunctioningData (object) or UpgradeStartedData (object) or UpgradeSucceededData (object) or UpgradeFailedData (object) or SensorThinData (object) or SensorBatchThinData (object) or UserThinData (object) or UserBatchThinData (object) or HomeThinData (object) or HomeBatchThinData (object) or RoomThinData (object) or RoomBatchThinData (object) or HomeLabelThinData (object) or HomeLabelBatchThinData (object) or TenantThinData (object) or TenantBatchThinData (object) or FirmwarePublishData (object) Event-specific payload data The structure of this field varies based on the Important delivery rules:
How to find the correct schema:
Payload Types:
|
{- "eventId": 3,
- "eventType": "sensor.raw.config",
- "tenantId": 153498752,
- "timestamp": "2024-12-24T12:00:03.456789Z",
- "data": {
- "sn": "ATR_GN_P4-250120-09527",
- "tenantId": 153498752,
- "scanArea": {
- "left": 300,
- "right": 300,
- "height": 220
}, - "firmware": {
- "model": 4,
- "version": "1.2.0"
}, - "fall": {
- "threshold": 90
}
}
}{- "success": true
}