डेवलपर्स

SpeakNotes API के लिए OAuth 2.1

PKCE के साथ ऑथराइजेशन कोड, रिफ्रेश टोकन रोटेशन, डायनामिक क्लाइंट रजिस्ट्रेशन, और रिवोकेशन। इसका उपयोग तब करें जब आपका ऐप अन्य SpeakNotes उपयोगकर्ताओं की ओर से कार्य करता है।

डिस्कवरी

दोनों मेटाडेटा दस्तावेज़ सार्वजनिक हैं। MCP क्लाइंट उन्हें API द्वारा लौटाई गई 401 चुनौती से स्वचालित रूप से ढूंढ लेते हैं।

# Authorization server metadata (RFC 8414)
curl https://speaknotes.io/.well-known/oauth-authorization-server

# Protected resource metadata (RFC 9728)
curl https://api.speaknotes.io/.well-known/oauth-protected-resource

फ्लो

  1. 1

    क्लाइंट पंजीकृत करें

    अपने रीडायरेक्ट URI के साथ रजिस्ट्रेशन एंडपॉइंट पर POST करें। सार्वजनिक क्लाइंट PKCE का उपयोग करते हैं और उन्हें कोई सीक्रेट नहीं मिलता; गोपनीय क्लाइंट को एक सीक्रेट मिलता है। https, लूपबैक http, और कस्टम ऐप स्कीम सभी स्वीकार किए जाते हैं।

    curl -X POST https://api.speaknotes.io/oauth/register \
      -H "Content-Type: application/json" \
      -d '{
        "client_name": "Your app",
        "redirect_uris": ["https://your.app/callback"],
        "token_endpoint_auth_method": "none",
        "scope": "notes:read notes:write summaries:write"
      }'
  2. 2

    उपयोगकर्ता को अधिकृत करने के लिए भेजें

    अपने क्लाइंट आईडी, रीडायरेक्ट URI, स्कोप, स्टेट, और S256 कोड चैलेंज के साथ ऑथराइजेशन एंडपॉइंट खोलें। उपयोगकर्ता साइन इन करता है, देखता है कि आपने किन स्कोप के लिए अनुरोध किया है, और स्वीकार या अस्वीकार करता है।

    https://speaknotes.io/oauth/authorize
      ?client_id=sn_client_...
      &redirect_uri=https://your.app/callback
      &response_type=code
      &scope=notes:read%20summaries:write
      &state=RANDOM
      &code_challenge=BASE64URL_SHA256_OF_VERIFIER
      &code_challenge_method=S256
  3. 3

    कोड एक्सचेंज करें

    कोड और अपने कोड वेरिफायर को टोकन एंडपॉइंट पर POST करें। कोड एक बार उपयोग किए जाते हैं और एक मिनट में समाप्त हो जाते हैं; किसी कोड को दोबारा उपयोग करने पर उससे उत्पन्न टोकन रद्द हो जाते हैं।

    curl -X POST https://api.speaknotes.io/oauth/token \
      -H "Content-Type: application/json" \
      -d '{
        "grant_type": "authorization_code",
        "client_id": "sn_client_...",
        "code": "...",
        "redirect_uri": "https://your.app/callback",
        "code_verifier": "..."
      }'
  4. 4

    रिफ्रेश

    एक्सेस टोकन एक घंटे तक चलते हैं। रिफ्रेश टोकन हर उपयोग पर रोटेट होते हैं, और रद्द किए गए टोकन को प्रस्तुत करने पर पूरा ग्रांट समाप्त हो जाता है, जो चोरी हुए टोकन को उपयोगी होने से रोकता है।

    curl -X POST https://api.speaknotes.io/oauth/token \
      -H "Content-Type: application/json" \
      -d '{
        "grant_type": "refresh_token",
        "client_id": "sn_client_...",
        "refresh_token": "sn_rt_..."
      }'

access_token: 1h · refresh_token: 60d, rotating · code: 60s, single use

स्कोप का अनुरोध

उतना ही मांगें जितना आपको चाहिए। रिफ्रेश स्कोप को कम कर सकता है लेकिन कभी बढ़ा नहीं सकता, और उपयोगकर्ता अपनी सेटिंग्स से किसी भी ऐप को देख और रद्द कर सकते हैं।

रिवोकेशन

किसी भी टोकन को रिवोकेशन एंडपॉइंट पर POST करें। एक को रद्द करने से जोड़ी समाप्त हो जाती है। RFC 7009 के अनुसार, कभी अस्तित्व में न रहे टोकन को रद्द करना भी एक सफलता है।

curl -X POST https://api.speaknotes.io/oauth/revoke \
  -H "Content-Type: application/json" \
  -d '{"client_id": "sn_client_...", "token": "sn_rt_..."}'

MCP क्लाइंट

MCP क्लाइंट को इसमें से कुछ भी मैन्युअल रूप से करने की आवश्यकता नहीं है। यह एक टूल को कॉल करता है, संसाधन मेटाडेटा की ओर इशारा करते हुए 401 प्राप्त करता है, खुद को पंजीकृत करता है, और उपयोगकर्ता को उसी सहमति स्क्रीन के माध्यम से ले जाता है।