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)Unprocessed data directly from sensors, primarily used for device configuration synchronization and monitoring. These events provide essential device-level information such as scan area settings, firmware versions, and detection thresholds.
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.config, 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.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.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.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.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 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 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
}