Eduki nagusira joan

Webhook-en ikuspegi orokorra

Zer dira webhook-ak?

Webhook-ek vitalera-ri zure aplikaziora denbora errealeko HTTP POST jakinarazpenak bidaltzea ahalbidetzen diote plataforman gertaerak gertatzen direnean. APIa aldaketen bila kontsultatu beharrean, webhook-ek datuak zure amaiera-puntura bultzatzen dituzte gertaerak gertatzen diren bezain laster.

Nola funtzionatzen du

  1. Konfiguratu webhook URL bat zure vitalera erakundearen ezarpenetan
  2. Hautatu jaso nahi dituzun gertaera motak
  3. Ezarri sekretua sinadura-egiaztapenerako
  4. vitalera-k HTTP POST eskaerak bidaltzen ditu zure URLra bat datozen gertaerak gertatzen direnean

Gertaera motak

Gertaera motaAktibatzailea
observation.createdPaziente batentzako behaketa berri bat erregistratzen da
alarm.triggeredAlarma-arau bat behaketa batek aktibatzen du
alarm.resolvedAurretik aktibatutako alarma bat ebazten da
consent.grantedPaziente batek datu-partekatzeko adostasuna ematen du
consent.revokedPaziente batek adostasuna errebokatzen du
questionnaire_response.submittedPaziente batek galdetegi-erantzun bat bidaltzen du
care_plan.activatedZainketa-plan bat aktibatzen da
care_plan.completedZainketa-plan batek amaiera-data iristen du edo osatzen da

Webhook-aren karga

Webhook karga guztiek egitura koherente bat jarraitzen dute:

{
"event_type": "observation.created",
"timestamp": "2024-01-15T10:30:00Z",
"organization_id": 42,
"data": {
"id": 810,
"resourceType": "Observation",
"observation_definition": {
"observation_name": "heart_rate",
"observation_method": "device"
},
"category": "physiological_data",
"value": "72",
"value_type": "int",
"value_unit": "bpm",
"issued": "2024-01-15T10:30:00Z",
"effective_datetime": "2024-01-15T10:30:00Z",
"source_id": 1
}
}

Aktibatutako alarma adibidea

{
"event_type": "alarm.triggered",
"timestamp": "2024-01-15T10:31:00Z",
"organization_id": 42,
"data": {
"alarm_id": 55,
"alarm_name": "High Heart Rate",
"severity": "high",
"patient_id": 123,
"triggering_observation": {
"observation_name": "heart_rate",
"value": "145",
"value_unit": "bpm"
}
}
}

Sinadura-egiaztapena

Webhook dei guztiek x-webhook-signature goiburu bat biltzen dute eskaeraren gorputzaren HMAC-SHA256 sinadura batekin, zure webhook sekretuarekin kalkulatua.

Webhook bat egiaztatzeko:

  1. Atera x-webhook-signature goiburuaren balioa
  2. Kalkulatu eskaeraren gorputz gordinaren HMAC-SHA256 zure webhook sekretuarekin
  3. Konparatu kalkulatutako sinadura goiburuaren balioarekin (erabili denbora-konstanteko konparazioa)

Python adibidea

import hmac
import hashlib

def verify_webhook(payload: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(
secret.encode("utf-8"),
payload,
hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature)

Node.js adibidea

const crypto = require('crypto');

function verifyWebhook(payload, signature, secret) {
const expected = crypto.createHmac('sha256', secret).update(payload).digest('hex');
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
}

Segurtasun-jardunbide onak

  • Beti erabili HTTPS amaiera-puntuak
  • Ezarri sekretu bakarra webhook konfigurazio bakoitzeko
  • Egiaztatu sinadura sarrerako eskaera bakoitzean prozesatu aurretik
  • Erantzun 200 OK azkar eta prozesatu karga asinkronoki
  • Gorde webhook sekretua modu seguruan (adib., ingurune-aldagaia, sekretu-kudeatzailea)

Berriro saiatze-politika

Zure amaiera-puntuak 2xx ez den erantzun bat itzultzen badu edo denbora-muga gaindituko balu, vitalera-k atzerapen esponentzialarekin saiatzen da berriro:

SaiakeraAtzerapena
1. saiakera~1 minutu
2. saiakera~5 minutu
3. saiakera~30 minutu
4. saiakera~2 ordu

Saiakera guztiak agortzen direnean, gertaera huts egin duen gisa markatzen da. Huts egindako bidalketak zure erakundearen ezarpenetan berrikusi ditzakezu.

Laguntza behar duzu?

Jarri harremanetan support@vitalera.io helbidean zure erakundearentzat webhook-ak konfiguratzeko.