Method: POST
URL: https://api.climacert.io/integrations/{platformId}/webhook
TLS: Required (valid public certificate)
Headers:
- Content‑Type: application/json
- Signature:
X‑Platform‑Signature (or Disrupt‑X‑Signature)
- Optional (Mode B):
X‑Request‑Timestamp (ISO 8601 in UTC)
Body (envelope):
{
"timestamp": "2025-08-27T16:48:45.878Z",
"type": "IgniteShield_Reading",
"data": { /* provider-specific payload */ }
}
How to sign:
- Mode A (Simple):
signature = HMAC_SHA256(secret, JSON.stringify(body))
- Mode B (Hardened):
signature = HMAC_SHA256(secret, "<timestamp>.<rawBody>")
Retries: retry on non‑200. Treat only HTTP 200 as success. Respect 429 with backoff.
Sample cURL (bash + openssl):
SECRET=<32-byte-hex-secret>
BODY='{"timestamp":"2025-08-27T16:48:45.878Z","type":"Ping","data":{"hello":"world"}}'
# Mode A
SIG=$(printf "%s" "$BODY" | openssl dgst -sha256 -hmac "$SECRET" -binary | xxd -p -c 256)
curl -sS -X POST \
-H 'Content-Type: application/json' \
-H 'X-Platform-Signature: '$SIG \
--data "$BODY" \
https://api.climacert.io/integrations/{platformId}/webhook