AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

वेबहुक

रिसोर्स राइट्स, सहमति परिवर्तनों और अंतिम दस्तावेज़ों के लिए हस्ताक्षरित, पुनः प्रयास किए गए, थिन इवेंट्स, TypeScript, Dart और Python में सिग्नेचर वेरिफिकेशन के साथ।

जब आपके प्रोजेक्ट में कुछ होता है तो Anpheros Platform आपके सर्वर को कॉल कर सकता है: एक संसाधन लिखा गया था, किसी व्यक्ति ने एक्सेस प्रदान या रद्द कर दिया था, एक दस्तावेज़ अंतिम रूप दिया गया था। ईवेंट पतले होते हैं: आईडी, प्रकार, संस्करण — कभी भी नैदानिक सामग्री नहीं। यदि आपको इसकी आवश्यकता है तो API के माध्यम से संसाधन पढ़ें। प्रत्येक डिलीवरी हस्ताक्षरित होती है; उस पर भरोसा करने से पहले हस्ताक्षर सत्यापित करें।

एक एंडपॉइंट पंजीकृत करें

curl -X POST $BASE/v1/webhooks -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"url": "https://your.app/anpheros/hook", "events": ["resource.created", "consent.revoked"], "description": "prod"}'

प्रतिक्रिया में secret (whsec_…) एक बार शामिल है। इसे सहेजें; आपको हस्ताक्षर सत्यापित करने के लिए इसकी आवश्यकता होगी। events स्वीकार करता है ["*"] या इनमें से कोई भी:

प्रकार कब data
resource.created / resource.updated / resource.deleted आपके प्रोजेक्ट ने FHIR संसाधन (REST v1, FHIR API या बंडल) लिखा है (REST v1, FHIR API या बंडल) — या किसी अन्य प्रोजेक्ट ने ऐसे रिकॉर्ड में लिखा है जिस तक आपकी पहुँच है (आपने रोगी बनाया है, या आपके पास एक सक्रिय अनुदान है); तब data.external true है और data.source बताता है कि इसे किसने लिखा: author_type (रोगी / चिकित्सक / उपकरण / आयात / एआई), organization (वह प्रदर्शन नाम जिसके बदले लेखक ने कार्य किया), practitioner (निर्देशिका से नाम, जब ज्ञात हो), source_system resource_type, id, patient (आईडी जो आप देखते हैं), version, last_updated, और बाहरी लेखन के लिए external, source
consent.granted किसी व्यक्ति ने सहमति पृष्ठ से आपके ऐप को एक्सेस प्रदान किया है (या एक विश्वसनीय ऐप ने इसका रिकॉर्ड लिंक किया है) grant_id, patient, application_id, scopes, purpose, expires_at
consent.revoked व्यक्ति (या प्लेटफ़ॉर्म) ने अनुदान समाप्त कर दिया उपरोक्त के समान प्लस revoked_at, reason
document.finalized एक दस्तावेज़ अपलोड अंतिम रूप दिया गया और चेकसम किया गया id, patient, content_type, size, sha256
proposal.created एक एआई एजेंट ने आपके द्वारा देखे जा सकने वाले रिकॉर्ड में लिखने का प्रस्ताव दिया; यह व्यक्ति की मंजूरी की प्रतीक्षा करता है id, patient, action, resource_type
ping आपने परीक्षण वितरण का अनुरोध किया endpoint

एंडपॉइंट प्रति प्रोजेक्ट और वातावरण होते हैं: एक sk_test_ कुंजी सैंडबॉक्स एंडपॉइंट का प्रबंधन करती है, एक sk_live_ कुंजी उत्पादन वाले। यूआरएल सार्वजनिक https:// एंडपॉइंट होने चाहिए। पंजीकरण (और url में कोई भी बाद का परिवर्तन) स्थानीय, निजी, लिंक-स्थानीय, मेटाडेटा और अन्य आरक्षित पतों को अस्वीकार करता है — localhost, 127.0.0.1, ::1, 10.0.0.0/8, 192.168.0.0/16, fd00::/8 और इसी तरह — और वे नाम जो उन्हें हल करते हैं, 400 invalid के साथ url फ़ील्ड पर; यह सैंडबॉक्स में भी लागू होता है। हर डिलीवरी पते को फिर से जांचती है और केवल उन आईपी पतों से जुड़ती है जिन्हें उसने अभी-अभी जांचा है, इसलिए एक नाम जो बाद में एक निजी नेटवर्क (डीएनएस रीबाइंडिंग) की ओर इशारा करता है, उसे कुछ भी नहीं मिलता है। विकास के दौरान अपने स्वयं के मशीन पर ईवेंट प्राप्त करने के लिए, इसे एक सार्वजनिक HTTPS टनल के माध्यम से उजागर करें और टनल के पते को पंजीकृत करें। प्रति प्रोजेक्ट और वातावरण 10 एंडपॉइंट तक।

डिलीवरी

POST https://your.app/anpheros/hook
Content-Type: application/json
User-Agent: Anpheros-Webhooks/1.0
Anpheros-Event: resource.created
Anpheros-Event-Id: evt_…
Anpheros-Delivery: whd_…
Anpheros-Signature: t=1789800000,v1=5f3a…

{"id":"evt_…","type":"resource.created","created_at":"2026-09-19T12:00:00.000Z","environment":"production",
 "project":"proj_…","data":{"resource_type":"Observation","id":"…","patient":"…","version":1,"last_updated":"…"}}

10 सेकंड के भीतर कोई भी 2xx के साथ प्रतिक्रिया दें। कुछ और (या टाइमआउट) विफलता है और डिलीवरी 24 घंटे (10 प्रयास) तक बैकऑफ़ के साथ पुनः प्रयास की जाती है, फिर exhausted के रूप में चिह्नित की जाती है। डिलीवरी कम से कम एक बार होती है और क्रम से बाहर आ सकती है: डी-डुप्लिकेट करने के लिए Anpheros-Event-Id और बासी अपडेट को अनदेखा करने के लिए data.version का उपयोग करें।

हस्ताक्षर सत्यापित करें

v1 आपके गुप्त कुंजी पर HMAC-SHA256 है <t>.<raw body> पर; यदि t 5 मिनट से पुराना है तो अस्वीकार करें।

import { verifyWebhookSignature } from '@anpheros/sdk';
app.post('/anpheros/hook', express.raw({ type: 'application/json' }), async (req, res) => {
  const ok = await verifyWebhookSignature({ secret: process.env.ANPHEROS_WEBHOOK_SECRET!, header: req.header('anpheros-signature'), body: req.body });
  if (!ok) return res.status(400).end();
  const event = JSON.parse(req.body.toString());
  // … enqueue and return quickly
  res.status(204).end();
});
import 'package:anpheros_sdk/anpheros_sdk.dart';
final ok = verifyWebhookSignature(secret: secret, header: request.headers['anpheros-signature'], body: rawBodyBytes);
import hmac, hashlib, time
def verify(secret: str, header: str, body: bytes, tolerance=300) -> bool:
    parts = dict(p.split("=", 1) for p in header.split(","))
    if abs(time.time() - int(parts["t"])) > tolerance:
        return False
    expected = hmac.new(secret.encode(), f"{parts['t']}.".encode() + body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, parts["v1"])

ऑपरेट करें

दोनों SDKs इसे webhooks (create, list, get, update, delete, rotateSecret, ping, deliveries, redeliver) के तहत एक्सपोज़ करते हैं।

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy