Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
ऑथेंटिकेशन और OAuth
API कीज़, PKCE के साथ OAuth 2.1 (SMART on FHIR स्टैंडअलोन लॉन्च), OpenID Connect id_token, SMART v2 पेशेंट स्कोप, टोकन लाइफटाइम और सहमति लाइफसाइकिल।
Anpheros Platform तीन प्रकार के क्रेडेंशियल्स स्वीकार करता है। प्रत्येक अनुरोध में ठीक एक होता है।
| क्रेडेंशियल | कैसा दिखता है | कौन | देखता है |
|---|---|---|---|
| API कुंजी | sk_test_… (सैंडबॉक्स) / sk_live_… (उत्पादन) |
एक प्रोजेक्ट का सर्वर | वे रोगी जिन्हें प्रोजेक्ट ने बनाया है (सैंडबॉक्स में, जिसमें 30 सिंथेटिक रोगियों की अपनी प्रतिलिपि भी शामिल है) |
| OAuth एक्सेस टोकन | at_… |
सहमति के तहत एक रोगी के लिए कार्य करने वाला एक एप्लिकेशन | केवल वह रोगी, प्रदान किए गए SMART स्कोप के भीतर |
| Firebase ID टोकन | JWT | डैशबोर्ड में एक डेवलपर, या "कनेक्शन" में एक रोगी | उनके अपने संगठन / उनके अपने रिकॉर्ड |
इसे Authorization: Bearer <credential> के रूप में भेजें (API कुंजियाँ X-Api-Key के रूप में भी काम करती हैं)।
एपीआई कुंजियाँ (API Keys)
- डैशबोर्ड में या
POST /admin/projects/{id}/keysके माध्यम से बनाई जाती हैं; एक बार दिखाई जाती हैं; SHA-256 हैश के रूप में संग्रहीत की जाती हैं। - स्कोप (Scopes):
read,write। एक कुंजी कभी भी अपने प्रोजेक्ट के वातावरण को पार नहीं करती (sk_test_उत्पादन डेटा तक नहीं पहुँच सकता और इसके विपरीत)। - प्रति-कुंजी दर सीमा (डिफ़ॉल्ट 600/मिनट) प्लेटफ़ॉर्म-व्यापी (साझा स्टोर) लागू की जाती है, जिसमें 429 पर
Retry-Afterहोता है। प्रति-आईपी सीमा 600/मिनट भी है। - राइट्स पर वैकल्पिक हेडर (Optional headers on writes):
X-Anpheros-Author-Type,X-Anpheros-Author-Ref,X-Anpheros-Source-System,X-Anpheros-Origin-Id,X-Anpheros-Acting-As(आपके अपने डायरेक्टरी का एक Practitioner/PractitionerRole),X-Anpheros-On-Behalf-Of(आपके अपने डायरेक्टरी का एक Organization)। ये Provenance को पॉप्युलेट करते हैं।
OAuth 2.1 (SMART on FHIR, standalone launch)
Discovery: GET /.well-known/smart-configuration.
GET /oauth/authorize?response_type=code&client_id=…&redirect_uri=…&scope=…&state=…&code_challenge=…&code_challenge_method=S256[&purpose=treatment][&patient=<pairwise id>][&lang=ro]होस्टेड सहमति पृष्ठ दिखाता है। PKCE S256 अनिवार्य है;redirect_uriको बिल्कुल पंजीकृत होना चाहिए।- रोगी साइन इन करता है (Firebase के माध्यम से Google या ईमेल), रिकॉर्ड (अपना या आश्रित का) चुनता है, अवधि (30/90/180/365 दिन) और अनुमति देता है। प्लेटफ़ॉर्म एक बार का कोड जारी करता है (10 मिनट)।
POST /oauth/tokenके साथgrant_type=authorization_code&code=…&code_verifier=…&redirect_uri=…&client_id=…(गोपनीय क्लाइंटclient_secretजोड़ते हैं)। प्रतिक्रिया:access_token(30 मिनट),refresh_token(30 दिन, रोटेटिंग),patient(रिकॉर्ड के लिए आपका जोड़ीदार आईडी),grant_id,scope।- रीफ़्रेश:
grant_type=refresh_token। प्रत्येक रीफ़्रेश टोकन एकल-उपयोग है। उपयोग किए गए रीफ़्रेश टोकन को प्रस्तुत करने से पूरी श्रृंखला रद्द हो जाती है (चोरी का पता लगाना)। रीफ़्रेश अनुरोध की एक समानांतर डुप्लिकेट को अस्वीकार कर दिया जाता है और यह श्रृंखला को भी रद्द कर सकता है, इसलिए समवर्ती रूप से कभी भी रोटेट न करें। - रद्द करें:
POST /oauth/revoke(टोकन + client_id)। रीफ़्रेश टोकन को रद्द करने से उसके एक्सेस टोकन भी रद्द हो जाते हैं।
टोकन प्रतिक्रियाओं में Cache-Control: no-store और Pragma: no-cache होते हैं, जैसा कि SMART की आवश्यकता है।
OpenID Connect (openid fhirUser)
रोगी स्कोप के साथ openid fhirUser के लिए पूछें और टोकन प्रतिक्रिया में एक id_token भी शामिल होता है: RS256 के साथ हस्ताक्षरित एक JWT, जिसमें iss (प्लेटफ़ॉर्म का बेस URL), sub (व्यक्ति के लिए आपका जोड़ीदार आईडी), aud (आपका client_id), exp, iat और fhirUser — व्यक्ति के Patient संसाधन का पूर्ण URL, जिसे आपके द्वारा अभी प्राप्त एक्सेस टोकन से पढ़ा जा सकता है। Discovery GET /.well-known/openid-configuration पर है; सार्वजनिक कुंजियाँ GET /oauth/jwks पर हैं (टोकन हेडर में kid)। nonce पैरामीटर अभी समर्थित नहीं है (यह प्राधिकरण-कोड प्रवाह में वैकल्पिक है)। launch/patient और offline_access स्वीकार किए जाते हैं; टोकन प्रतिक्रिया का patient फ़ील्ड लॉन्च संदर्भ है।
अन्य अनुदान प्रकार: client_credentials (गोपनीय क्लाइंट; API कुंजी की तरह व्यवहार करता है), और प्रथम-पक्ष पहचान अनुदान (केवल विश्वसनीय क्लाइंट)।
आपकी ब्रांडिंग सहमति पृष्ठ पर
एक एप्लिकेशन होस्टेड सहमति पृष्ठ पर अपना लोगो और एक्सेंट रंग दिखा सकता है। उन्हें कंसोल में सेट करें (एप्लिकेशन → ब्रांड) या एडमिन API के साथ:
PUT /admin/applications/{application_id}/branding
{"logo": "data:image/png;base64,…", "brand_color": "#1D4ED8"}
- लोगो: एक PNG, JPEG या WebP छवि डेटा URI के रूप में, 64 KB तक। सामग्री की जाँच की जाती है, घोषित प्रकार की नहीं; SVG स्वीकार नहीं किया जाता है। छवि एप्लिकेशन के साथ संग्रहीत की जाती है और पृष्ठ में एम्बेड की जाती है, इसलिए सहमति पृष्ठ आपके सर्वर पर कोई अनुरोध नहीं करता है।
- एक्सेंट रंग:
#RRGGBB, प्राथमिक बटन के लिए उपयोग किया जाता है। इस पर सफ़ेद टेक्स्ट को कम से कम 4.5:1 (WCAG AA) का कंट्रास्ट बनाए रखना चाहिए; हल्के रंगों को अस्वीकार कर दिया जाता है। - एक फ़ील्ड जिसे आप छोड़ देते हैं वह वैसा ही रहता है;
nullया एक खाली स्ट्रिंग इसे हटा देती है।
पृष्ठ का बाकी हिस्सा नहीं बदलता है: "Secured by Anpheros Platform" लाइन, एप्लिकेशन जो मांग रहा है उसकी सादे भाषा की सूची, और सैंडबॉक्स परियोजनाओं पर TEST बैनर बने रहते हैं, ताकि लोग हमेशा बता सकें कि सहमति Anpheros द्वारा रखी गई है। AI कनेक्टर (MCP) हमेशा एप्लिकेशन ब्रांडिंग के बिना Anpheros पृष्ठ दिखाते हैं।
स्कोप
SMART v2 रोगी स्कोप: patient/<Type>.<cruds> एक वैकल्पिक ?category=<code> फ़िल्टर के साथ (एकमात्र फ़िल्टर जिसे सर्वर लागू करता है; प्राधिकरण समय पर किसी भी अन्य फ़िल्टर को अस्वीकार कर दिया जाता है)। patient/*.rs सब कुछ पढ़ता है; offline_access एक रीफ़्रेश टोकन जोड़ता है। रोगी जनसांख्यिकी और निर्देशिका हमेशा अनुदान के तहत पठनीय होती हैं। अनुदान के बाहर एक संसाधन प्रकार 403 लौटाता है; अनुदान के बाहर एक रोगी 404 लौटाता है।
सहमति जीवनचक्र
सहमति स्वचालित रूप से समाप्त हो जाती है, रोगी द्वारा किसी भी समय रद्द की जा सकती है (कनेक्शन स्क्रीन / /me), और एक सहमति के तहत हर रीड को एप्लिकेशन आईडी के साथ लॉग किया जाता है। Webhooks consent.granted / consent.revoked प्रोजेक्ट को सूचित करते हैं।
त्रुटियाँ
401 अज्ञात/समाप्त क्रेडेंशियल · 403 क्रेडेंशियल मौजूद है लेकिन यह कार्य नहीं कर सकता · 404 संसाधन आपके लिए मौजूद नहीं है · 429 दर सीमित (Retry-After)। errors.md देखें।
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card