मुख्य कंटेंट तक स्किप करें

एक्सटेंशन डेवलपर एपीआई को आज़माएँ

यदि आप Chastify एक्सटेंशन बनाना चाहते हैं, एक iframe एक्सटेंशन पेज होस्ट करना चाहते हैं, या अपने स्वयं के बैकएंड से डेवलपर API को कॉल करना चाहते हैं, तो इस गाइड का उपयोग करें।

यह पृष्ठ प्रारंभिक बिंदु है: कौन सा मोड चुनना है, सबसे पहले किसे कॉल करना है और आगे कहां जाना है।

अनलॉक ब्लॉकर, नियमित आवश्यक क्रियाएं, पुरस्कार और दंड जैसे ठोस एक्सटेंशन व्यवहार के लिए, एक्सटेंशन एपीआई विशेषताएं देखें।

tip

क्या आप सिर्फ अपने ताले को नियंत्रित करना चाहते हैं?

यदि आपको सार्वजनिक एक्सटेंशन बनाने की आवश्यकता नहीं है, तो External API & Programs पेज से शुरुआत करना सबसे आसान है। आपको बस एक DEV टोकन बनाना है और सरल REST एंडपॉइंट्स को कॉल करना है — किसी एक्सटेंशन सेटअप, आईफ्रेम या सेशन मैनेजमेंट की आवश्यकता नहीं है। यह समय जोड़ने/हटाने, फ्रीज़ करने, टास्क, डिवाइस कमांड और अन्य कार्यों को सपोर्ट करता है।

यह एपीआई किस लिए है?

एक्सटेंशन डेवलपर एपीआई आपको तृतीय-पक्ष एक्सटेंशन अनुभव बनाने की अनुमति देता है जो Chastify लॉक सत्रों के भीतर चलते हैं।

इसके साथ, आप ये कर सकते हैं:

  • सेशन और लॉक कॉन्टेक्स्ट पढ़ें (एक्सटेंशन के लिए session.get, अपने खुद के लॉक ऑटोमेशन के लिए /api/apps/v1/session)
  • प्रत्येक लॉक सत्र (state.get) के लिए एक्सटेंशन के स्वामित्व वाले डेटा को पढ़ें और इसे अपने बैकएंड (PUT/PATCH /state) से लिखें।
  • Chastify द्वारा प्रबंधित R2 स्टोरेज (files.*) में एक्सटेंशन के स्वामित्व वाली इमेज फ़ाइलों को स्टोर करें।
  • लॉक कार्ड पर एक्सटेंशन यूआई क्रियाएं जोड़ें (metadata.homeActions)
  • एक्सटेंशन के स्वामित्व वाले अनलॉक ब्लॉकर (metadata.unlockBlockers) के साथ गेट अनलॉक प्रवाह
  • किसी विश्वसनीय बैकएंड से लॉक क्रियाएं ट्रिगर करें (समय जोड़ना/हटाना, फ्रीज/अनफ्रीज करना, सेटिंग्स पैच करना)
  • ट्रिगर कार्य और स्वच्छता क्रियाएँ (task.assign, task.start_timer, task.complete, hygienic_unlock.start)
  • काउंटर/कैडेंस सपोर्ट के साथ नियमित कार्रवाइयां सबमिट करें
  • उपलब्ध होने पर समर्थित डिवाइस कमांड भेजें
  • लॉक इतिहास में कस्टम एक्सटेंशन लॉग प्रविष्टियाँ लिखें

आप क्या बना सकते हैं

सही फीचर सेट इस बात पर निर्भर करता है कि विश्वास कहाँ टिका हुआ है।

फ्रंटएंड-ओनली आईफ्रेम एक्सटेंशन ऐसे यूआई-फर्स्ट अनुभव बना सकते हैं जिन्हें विश्वसनीय लॉक म्यूटेशन की आवश्यकता नहीं होती है:

  • एक्सटेंशन कॉन्फ़िगरेशन एकत्र करने वाले सेटअप पृष्ठ
  • सेशन संदर्भ को पढ़ने वाले डैशबोर्ड
  • पहेली, चेकलिस्ट या गेम के ऐसे यूजर इंटरफेस जो सेशन की स्थिति को पढ़ते हैं और बैकएंड के माध्यम से सत्यापित प्रगति भेजते हैं।
  • मीडिया-आधारित प्रवाह जो Chastify द्वारा पहले से संग्रहीत एक्सटेंशन फ़ाइलों को पढ़ते हैं
  • होम एक्शन एंट्री पॉइंट्स जो आपके iframe को एक इंटेंट के साथ खोलते हैं

सर्वर-समर्थित एक्सटेंशन लॉक-प्रभावित करने वाली सुविधाओं का निर्माण कर सकते हैं क्योंकि आपका बैकएंड विशेषाधिकार प्राप्त एपीआई को कॉल करने से पहले परिणामों को सत्यापित करता है:

  • अनलॉक करने की आवश्यकताओं के साथ कार्य या आदत प्रणालियाँ
  • निर्धारित समय सीमा चूकने पर दंड सहित दैनिक या साप्ताहिक आवश्यकताएं
  • ऐसे गेम जो सफलता को पुरस्कृत करते हैं या विफलता को लॉक टाइम परिवर्तन के साथ दंडित करते हैं
  • सर्वर-साइड सत्यापन के बाद अनलॉक ब्लॉकर को हटाने वाले सत्यापन प्रवाह
  • समर्थित डिवाइस कमांड का उपयोग करके डिवाइस-नियंत्रण कंपेनियन फ्लो।
  • वेबहुक/डेटाबेस वर्कफ़्लो जो एक्सटेंशन स्थिति को iframe के बाहर रखते हैं

बाह्य प्रोग्राम आपके स्वयं के सक्रिय लॉक के निजी स्वचालन के लिए हैं:

  • स्थानीय स्क्रिप्ट
  • व्यक्तिगत डैशबोर्ड
  • उपयोगकर्ता-व्यापी DEV कुंजी का उपयोग करने वाले स्वचालन उपकरण

अपना मोड चुनें

इनमें से कोई एक मोड चुनें:

  1. Hosted iframe extension: क्लाउडफ्लेयर पेजेस या इसी तरह की सेवा पर एक स्थिर आईफ्रेम यूआई होस्ट करें। सेटअप, सेशन कॉन्टेक्स्ट और सुरक्षित रीड के लिए ब्रिज का उपयोग करें। स्टेट राइट्स, रिवॉर्ड्स, पनिशमेंट, अनलॉक कंप्लीशन या ट्रस्टेड रिक्वायरमेंट प्रोग्रेस के लिए अकेले इस मोड का उपयोग न करें।
  2. Server-backed extension: iframe UI को होस्ट करें और अपना खुद का बैकएंड चलाएं। iframe अपना लॉन्च कोड mainToken आपके बैकएंड को भेजता है, और आपका बैकएंड Chastify एक्सटेंशन API को ऐप-स्कोप डेवलपर API कुंजी और x-chastify-main-token के साथ कॉल करता है। इस मोड का उपयोग विशेषाधिकार प्राप्त कार्यों, अवरोधकों को अनलॉक करने, विश्वसनीय प्रगति, पुरस्कार, दंड, वेबहुक और बाहरी डेटाबेस के लिए करें।
  3. External API & Programs: स्क्रिप्ट, स्थानीय प्रोग्राम या ऑटोमेशन के लिए उपयोगकर्ता-व्यापी DEV कुंजी का उपयोग करें जो आपके सक्रिय लॉक को नियंत्रित करते हैं। यह मोड आपके एक्सटेंशन को इंस्टॉल करने वाले तृतीय-पक्ष उपयोगकर्ताओं के लिए नहीं है।

यदि आप जल्दी से परीक्षण कर रहे हैं, तो UI और सुरक्षित रीड के लिए iframe मोड से शुरुआत करें। स्टेट राइट्स, विश्वसनीय रिवॉर्ड्स, समय परिवर्तन, निर्धारित आवश्यकता प्रगति या अनलॉक-ब्लॉकर पूर्णता को लागू करने से पहले एक बैकएंड जोड़ें।

caution

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

पहले 10 मिनट (आईफ्रेम मोड)

  1. Chastify iframe ओपन से location.hash पेलोड पढ़ें।
  2. session.get के लिए एक ब्रिज अनुरोध बनाएं।
  3. type: "chastify:ext:resp" और ok: true का उपयोग करके प्रतिक्रिया की पुष्टि करें।
  4. state.get के साथ परीक्षण स्थिति पढ़ता है।
  5. ऑटो-रीसाइज़ और थीम सपोर्ट जोड़ें ताकि आईफ्रेम यूआई में सही ढंग से काम करे।

थीम सपोर्ट एक प्रोडक्शन-रेडी आईफ्रेम का हिस्सा है। Chastify लॉन्च हैश में ui मान पास करता है और आईफ्रेम के खुले रहने के दौरान लाइव थीम अपडेट भेजता है। लाइट/डार्क उदाहरण और कॉन्ट्रास्ट-सेफ टेलविंड पैटर्न के लिए आईफ्रेम थीमिंग देखें।

आवश्यक पेलोड मान:

  • bridge.nonce
  • bridge.parentOrigin
  • sessionId
  • lockId

ब्रिज अनुरोध का उदाहरण:

{
"type": "chastify:ext:req",
"v": 1,
"id": "request-id", // unique id per request
"nonce": "nonce-from-hash",
"action": "session.get",
"payload": {}
}

उदाहरण के लिए ब्रिज प्रतिक्रिया:

{
"type": "chastify:ext:resp",
"v": 1,
"id": "request-id",
"ok": true,
"data": {}
}

सबसे पहले सीखने योग्य मुख्य कार्य

  • session.get
  • state.get
    लॉक सेशन के लिए एक्सटेंशन के स्वामित्व वाले JSON स्टोरेज को पढ़ें। डेवलपर API क्रेडेंशियल्स का उपयोग करके अपने बैकएंड से स्टेट लिखें।
  • files.capabilities, files.list, files.get पहेली छवियों या जनरेट किए गए पूर्वावलोकन जैसे बाइनरी मीडिया के लिए फ़ाइल स्टोरेज रीड का उपयोग करें। फ़ाइल आईडी को बैकएंड-लिखित स्थिति में स्टोर करें, फिर files.get के साथ हस्ताक्षरित URL को रीफ़्रेश करें।
  • metadata.get लॉक-सेशन अनलॉक ब्लॉकर और एक्सटेंशन-कार्ड होम एक्शन/इंटेंट पढ़ें।
  • regularActions.get

स्टेट राइट्स, रेगुलर एक्शन सबमिशन, रनटाइम फाइल अपलोड/डिलीट, टाइम चेंज, अनलॉक ब्लॉकर अपडेट, टास्क कम्प्लीशन, हाइजीन स्टार्ट और डिवाइस कमांड जैसे सेशन म्यूटेशन को डेवलपर API कुंजी के साथ आपके बैकएंड से ही कॉल किया जाना चाहिए। इन कार्यों के लिए ब्राउज़र iframe कोड विश्वसनीय नहीं है।

पूर्ण एपीआई यूआरएल (समर्थित)

आधार डोमेन: https://chastify.net

एक्सटेंशन सेशन एपीआई (/api/extensions/*)

इन रास्तों के अलग-अलग एक्सेस मोड हैं। /api/extensions/* सतह को पूरी तरह से iframe-सुरक्षित न समझें।

postMessage ब्रिज अनुरोधों के बाद सुरक्षित iframe ब्रिज रूट Chastify पैरेंट के माध्यम से रूट किए जाते हैं:

  • GET https://chastify.net/api/extensions/sessions/:sessionId
  • GET https://chastify.net/api/extensions/sessions/:sessionId/state
  • GET https://chastify.net/api/extensions/sessions/:sessionId/metadata
  • GET https://chastify.net/api/extensions/sessions/:sessionId/regular-actions
  • GET https://chastify.net/api/extensions/sessions/:sessionId/files/capabilities
  • GET https://chastify.net/api/extensions/sessions/:sessionId/files
  • GET https://chastify.net/api/extensions/sessions/:sessionId/files/:fileId

बैकएंड-ओनली इंस्टॉल्ड-एक्सटेंशन राउट्स के लिए एक ऐप-स्कोप डेवलपर एपीआई कुंजी और आईफ्रेम लॉन्च टोकन की आवश्यकता होती है:

Authorization: Bearer YOUR_APP_SCOPED_DEVELOPER_KEY
x-chastify-main-token: MAIN_TOKEN_FROM_IFRAME_HASH
info

यह दो-टोकन मॉडल बैकएंड अनुरोध को एक्सटेंशन डेवलपर (Authorization) और वर्तमान में खुले एक्सटेंशन सत्र (x-chastify-main-token) दोनों से जोड़ता है।

  • PATCH https://chastify.net/api/extensions/sessions/:sessionId/metadata
  • PUT https://chastify.net/api/extensions/sessions/:sessionId/state
  • PATCH https://chastify.net/api/extensions/sessions/:sessionId/state
  • PATCH https://chastify.net/api/extensions/sessions/:sessionId/regular-actions/config
  • POST https://chastify.net/api/extensions/sessions/:sessionId/regular-actions
  • POST https://chastify.net/api/extensions/sessions/:sessionId/files
  • DELETE https://chastify.net/api/extensions/sessions/:sessionId/files/:fileId
  • POST https://chastify.net/api/extensions/sessions/:sessionId/logs/custom
  • POST https://chastify.net/api/extensions/sessions/:sessionId/notifications/custom
  • POST https://chastify.net/api/extensions/sessions/:sessionId/device-command
  • POST https://chastify.net/api/extensions/sessions/:sessionId/action
  • POST https://chastify.net/api/extensions/sessions/:sessionId/requirements/progress

बैकएंड टोकन एपीआई (/api/apps/v1/*)

Authorization: Bearer <user-wide DEV token> का उपयोग करें। ये एंडपॉइंट टोकन स्वामी के सक्रिय लॉक सत्रों का प्रबंधन करते हैं और बाहरी API स्क्रिप्ट/प्रोग्राम के लिए हैं, न कि स्थापित तृतीय-पक्ष एक्सटेंशन सत्रों के लिए।

  • GET https://chastify.net/api/apps/v1/session
  • GET https://chastify.net/api/apps/v1/state
  • PUT https://chastify.net/api/apps/v1/state
  • PATCH https://chastify.net/api/apps/v1/state
  • GET https://chastify.net/api/apps/v1/metadata
  • PATCH https://chastify.net/api/apps/v1/metadata
  • POST https://chastify.net/api/apps/v1/action
  • POST https://chastify.net/api/apps/v1/lock/apply-time
  • POST https://chastify.net/api/apps/v1/lock/freeze
  • POST https://chastify.net/api/apps/v1/lock/unfreeze
  • POST https://chastify.net/api/apps/v1/logs/custom

आईफ्रेम ब्रिज कमांड

ब्रिज कमांड पेलोड iframe (chastify:ext:req) द्वारा भेजे जाते हैं और Chastify पैरेंट द्वारा रूट किए जाते हैं। ब्रिज को जानबूझकर सुरक्षित/सेशन UI संचालन तक सीमित रखा गया है।

  • session.get -> GET https://chastify.net/api/extensions/sessions/:sessionId
  • state.get -> GET https://chastify.net/api/extensions/sessions/:sessionId/state
  • files.capabilities -> GET https://chastify.net/api/extensions/sessions/:sessionId/files/capabilities
  • files.list -> GET https://chastify.net/api/extensions/sessions/:sessionId/files
  • files.get -> GET https://chastify.net/api/extensions/sessions/:sessionId/files/:fileId के साथ { "fileId": "file_record_id" }
  • metadata.get -> GET https://chastify.net/api/extensions/sessions/:sessionId/metadata
  • regularActions.get -> GET https://chastify.net/api/extensions/sessions/:sessionId/regular-actions

सेशन म्यूटेशन एंडपॉइंट सीधे बैकएंड एपीआई कॉल होते हैं, न कि आईफ्रेम ब्रिज कमांड। इसमें स्टेट राइट्स, नियमित एक्शन सबमिशन और रनटाइम फाइल अपलोड/डिलीट शामिल हैं, क्योंकि आईफ्रेम कोड को उपयोगकर्ता द्वारा नियंत्रित किया जा सकता है।

बैकएंड सेशन एपीआई उदाहरण

आपके बैकएंड को इंस्टॉल्ड-एक्सटेंशन विशेषाधिकार प्राप्त कॉल के लिए दोनों हेडर भेजने होंगे:

Authorization: Bearer YOUR_APP_SCOPED_DEVELOPER_KEY
x-chastify-main-token: MAIN_TOKEN_FROM_IFRAME_HASH

बैकएंड एक्शन के उदाहरण:

  • metadata.patch -> PATCH /api/extensions/sessions/:sessionId/metadata
  • regularActions.submit -> POST /api/extensions/sessions/:sessionId/regular-actions
  • files.upload -> POST /api/extensions/sessions/:sessionId/files
  • files.delete -> DELETE /api/extensions/sessions/:sessionId/files/:fileId
  • lock.applyTime -> POST /api/extensions/sessions/:sessionId/action के साथ { "name": "add_time", "params": <deltaSeconds> }
  • lock.freeze -> POST /api/extensions/sessions/:sessionId/action के साथ { "name": "freeze", "params": { "durationSeconds": 900 } }
  • lock.unfreeze -> POST /api/extensions/sessions/:sessionId/action के साथ { "name": "unfreeze", "params": {} }
  • lock.settings.patch -> POST /api/extensions/sessions/:sessionId/action के साथ { "name": "settings.patch", "params": { ... } }
  • task.assign -> POST /api/extensions/sessions/:sessionId/action
  • task.start_timer -> POST /api/extensions/sessions/:sessionId/action के साथ { "name": "task.start_timer", "params": {} }
  • task.complete -> POST /api/extensions/sessions/:sessionId/action के साथ { "name": "task.complete", "params": { "successful": true } }
  • hygienic_unlock.start -> POST /api/extensions/sessions/:sessionId/action के साथ { "name": "hygienic_unlock.start", "params": { "durationSeconds": 900 } }
  • pillory.end -> POST /api/extensions/sessions/:sessionId/action के साथ { "name": "pillory.end", "params": {} }
  • device.command -> POST /api/extensions/sessions/:sessionId/device-command
  • logs.custom -> POST /api/extensions/sessions/:sessionId/logs/custom
  • notifications.custom -> POST /api/extensions/sessions/:sessionId/notifications/custom
  • requirements.progress -> POST /api/extensions/sessions/:sessionId/requirements/progress

टोकन, स्कोप, निरस्तीकरण और ऑडिट व्यवहार

सही भरोसे की सीमा के लिए सही टोकन का उपयोग करें।

warning

डेवलपर API कुंजी गोपनीय होती हैं। यदि कोई कुंजी ब्राउज़र कोड के सामने उजागर हो जाती है, तो उसे तुरंत रद्द कर दें और बैकएंड पर्यावरण चर को बदल दें।

आईफ्रेम लॉन्च टोकन (mainToken)

  • जब कोई उपयोगकर्ता इंस्टॉल किए गए एक्सटेंशन का पेज खोलता है, तो यह जानकारी iframe हैश में डिलीवर की जाती है।
  • यह डिज़ाइन के अनुसार ब्राउज़र में दिखाई देता है। यह खुले हुए एक्सटेंशन सेशन की पहचान करता है, लेकिन यह बैकएंड का कोई गुप्त डेटा नहीं है।
  • अल्पकालिक। वर्तमान लॉन्च टोकन 10 घंटे बाद समाप्त हो जाएंगे; एक्सटेंशन पेज को दोबारा खोलकर रीफ़्रेश करें।
  • जब आपका बैकएंड इंस्टॉल्ड-एक्सटेंशन सेशन रूट्स को कॉल करता है, तो x-chastify-main-token की आवश्यकता होती है, ताकि Chastify बैकएंड अनुरोध को उस उपयोगकर्ता/सेशन से जोड़ सके जिसने एक्सटेंशन खोला था।
  • इसका उपयोग समय परिवर्तन, अनलॉक ब्लॉकर पूर्णता, कार्य पूर्णता, डिवाइस कमांड, रनटाइम अपलोड/डिलीट, कस्टम लॉग या कस्टम नोटिफिकेशन को अधिकृत करने के लिए अकेले नहीं किया जाना चाहिए।

ऐप-स्कोप डेवलपर एपीआई कुंजी

  • एक एक्सटेंशन ऐप के लिए डेवलपर यूआई से बनाया गया।
  • यह केवल बैकएंड के लिए गुप्त डेटा है। इसे कभी भी iframe जावास्क्रिप्ट, मोबाइल ऐप बंडल, स्टैटिक होस्टिंग कॉन्फ़िगरेशन या ब्राउज़र-पठनीय लॉग में न डालें।
  • इसका उपयोग Authorization: Bearer YOUR_APP_SCOPED_DEVELOPER_KEY और x-chastify-main-token के साथ किया जाता है।
  • इंस्टॉल किए गए एक्सटेंशन के सेशन API को केवल उन्हीं सेशन के लिए कॉल किया जा सकता है जो एक्सटेंशन ऐप और लॉन्च टोकन से मेल खाते हों।
  • यह स्वतः समाप्त नहीं होता है। यदि यह उजागर हो जाए तो इसे तुरंत रद्द कर दें और अपने बैकएंड पर्यावरण चर को बदलें।

उपयोगकर्ता-व्यापी डेवलपर एपीआई कुंजी

  • एक्सटेंशन ऐप का चयन किए बिना डेवलपर यूआई से बनाया गया।
  • /api/apps/v1/* के लिए केवल बैकएंड-ओनली सीक्रेट।
  • यह कुंजी के स्वामी के वर्तमान/भविष्य के सक्रिय लॉक सत्रों को नियंत्रित करता है।
  • इसे किसी स्थापित तृतीय-पक्ष एक्सटेंशन के बैकएंड क्रेडेंशियल के रूप में उपयोग नहीं किया जा सकता है।

निरसन

  • निरस्त किए गए डेवलपर एपीआई कुंजी नए अनुरोधों को अधिकृत करना बंद कर देते हैं।
  • निरस्त की गई कुंजियों को डेवलपर यूआई से स्थायी रूप से हटाया जा सकता है।
  • नए आईफ्रेम लॉन्च को नए लॉन्च टोकन प्राप्त होते हैं। mainToken को दीर्घकालिक क्रेडेंशियल के रूप में संग्रहीत न करें।

कार्यक्षेत्र और भूमिकाएँ

  • एक्सटेंशन ऐप स्कोप यह वर्णन करते हैं कि ऐप को क्या अनुरोध करने की अनुमति है।
  • सुरक्षित आईफ्रेम ब्रिज कॉल केवल यूआई बूटस्ट्रैप, सेशन रीड, एक्सटेंशन-स्वामित्व वाली स्थिति, मेटाडेटा रीड, नियमित एक्शन रीड और फ़ाइल रीड तक सीमित हैं।
  • विशेषाधिकार प्राप्त स्थापित-सत्र उत्परिवर्तन के लिए बैकएंड क्रेडेंशियल की आवश्यकता होती है, भले ही एक्सटेंशन का दायरा मेल खाता हो।
  • भूमिका-संवेदनशील कार्रवाइयों को अभी भी इस आधार पर अस्वीकार किया जा सकता है कि लॉन्च किसी पहनने वाले या कुंजीधारक से संबंधित है या नहीं।

लेखापरीक्षा और सीमाएँ

  • डेवलपर API कुंजी के अंतिम उपयोग से संबंधित मेटाडेटा कुंजी के उपयोग होने पर अपडेट किया जाता है।
  • विशेषाधिकार प्राप्त एक्शन रूट्स की दर सीमित होती है और गलत क्रेडेंशियल प्रकार का उपयोग किए जाने पर server_credentials_required या user_wide_dev_key_required जैसी स्पष्ट त्रुटियां लौटाते हैं।
  • कस्टम लॉग दृश्यमान लॉक इतिहास प्रविष्टियाँ लिखते हैं।
  • कस्टम नोटिफिकेशन अनुरोधित लक्ष्य के लिए Chastify नोटिफिकेशन बनाते हैं।
  • प्रत्येक विशेषाधिकार प्राप्त एक्सटेंशन म्यूटेशन के लिए पूर्ण ऑडिट कवरेज को उत्पादन सुरक्षा आइटम के रूप में ट्रैक किया जाता है।

समर्थित कमांड मान

/api/extensions/sessions/:sessionId/action और /api/apps/v1/action

name निम्नलिखित का समर्थन करता है:

  • add_time
  • remove_time
  • freeze
  • pillory
  • unfreeze
  • toggle_freeze
  • settings.patch
  • task.assign
  • task.start_timer
  • task.complete
  • hygienic_unlock.start
  • pillory.end

क्रिया संबंधी प्रतिबंध:

  • टास्क क्रियाओं के लिए लॉक पर टास्क एक्सटेंशन/मॉड्यूल सक्षम होना आवश्यक है।
  • hygienic_unlock.start के लिए हाइजीनिक ओपनिंग सक्षम होना और कोई सक्रिय हाइजीन सत्र न होना आवश्यक है।

session.get लॉक डेटा सहायक

session.get / GET /api/apps/v1/session में lockData भी शामिल है जिसमें नियम इंजनों के लिए रनटाइम-अनुकूल बूलियन, संख्याएं और स्ट्रिंग शामिल हैं।

उदाहरण:

  • बूलियन मान: frozen, unlockable, trusted, taskAssigned (true जब एक खुला TaskRun मौजूद हो)
  • संख्याएँ: timeLockedSeconds, timeRemainingSeconds, maxTimeRemainingSeconds, taskPoints
  • स्ट्रिंग्स: lockTitle, पहनने वाले/कुंजीधारक प्रोफ़ाइल फ़ील्ड

गोपनीयता:

  • wearerLastSeenTimestamp और keyholderLastSeenTimestamp, null के बराबर होते हैं जब उस उपयोगकर्ता ने ऑनलाइन स्थिति (showOnlineStatus === false) को निष्क्रिय कर दिया था।

डिवाइस कमांड

एक्सटेंशन सेशन सेशन-आधारित एंडपॉइंट का उपयोग कर सकते हैं:

POST /api/extensions/sessions/:sessionId/device-command

DEV टोकन वाले बाहरी प्रोग्राम सरल v1 एंडपॉइंट का उपयोग कर सकते हैं (सेशन आईडी की आवश्यकता नहीं है):

POST /api/apps/v1/device-command

दोनों एक ही अनुरोध निकाय को स्वीकार करते हैं और एक ही प्रतिक्रिया लौटाते हैं। पूरी जानकारी के लिए बाह्य एपीआई और प्रोग्राम देखें।

यदि आपके एक्सटेंशन में सेटअप/कॉन्फ़िगरेशन यूआई है:

  1. पैरेंट chastify:ext:setup:init (सहेजा गया कॉन्फ़िगरेशन + संदर्भ) भेजता है।
  2. आपका सेटअप आईफ्रेम chastify:ext:setup:config के साथ अपडेट लौटाता है।
  3. अभिभावक chastify:ext:setup:get_config के साथ वर्तमान कॉन्फ़िगरेशन का अनुरोध कर सकते हैं।

बैकएंड टोकन फ्लो (जब आपको सर्वर-साइड कॉल की आवश्यकता हो)

सरल स्क्रिप्ट और बाहरी प्रोग्रामों के लिए, डेवलपर API पृष्ठ से उपयोगकर्ता-व्यापी DEV टोकन का उपयोग करें। बाहरी API और प्रोग्राम देखें।

एक्सटेंशन आईफ्रेम मोड में डिफ़ॉल्ट प्रवाह:

  1. Chastify सक्रिय एक्सटेंशन सत्र के लिए एक अल्पकालिक, ब्राउज़र में दिखाई देने वाला लॉन्च टोकन जारी करता है।
  2. लॉन्च टोकन को iframe हैश पेलोड में mainToken के रूप में एम्बेड किया गया है।
  3. आपका iframe mainToken को आपके बैकएंड पर अग्रेषित करता है।
  4. आपका बैकएंड https://chastify.net/api/extensions/sessions/:sessionId/* को Authorization: Bearer <app-scoped Developer API key> और x-chastify-main-token: <mainToken> के साथ कॉल करता है।

डेवलपर API कुंजी को iframe/ब्राउज़र कोड में न भेजें। mainToken खुले हुए एक्सटेंशन सत्र की पहचान करता है; यह बैकएंड सीक्रेट नहीं है और विशेषाधिकार प्राप्त कार्यों के लिए इसका अकेले उपयोग नहीं किया जा सकता है।

मैन्युअल फ़ॉलबैक:

  • यदि आपको प्रथम-पक्ष यूआई से आईफ्रेम लॉन्च टोकन को स्पष्ट रूप से प्राप्त/घुमाने की आवश्यकता है, तो GET https://chastify.net/api/extensions/sessions/:sessionId/auth को कॉल करें।

यदि Chastify पेज खुला न होने पर आपको निर्धारित जॉब, वेबहुक या ऑटोमेशन की आवश्यकता हो, तो बैकएंड मोड का उपयोग करें। वर्तमान में इंस्टॉल किए गए एक्सटेंशन सेशन म्यूटेशन के लिए एक वैध 10-घंटे का iframe लॉन्च टोकन आवश्यक है, इसलिए अनअटेंडेड जॉब्स को लंबित प्रूफ को स्टोर करना चाहिए और अगले वैध लॉन्च पर उसे सबमिट करना चाहिए, जब तक कि आप बैकग्राउंड एग्जीक्यूशन के लिए डिज़ाइन किए गए फर्स्ट-पार्टी/बिल्ट-इन सर्वर फ्लो का उपयोग नहीं कर रहे हों।

info

पूर्णतः बिना किसी हस्तक्षेप के उत्पादन कार्य के लिए, अंतर्निहित/प्रथम-पक्ष सर्वर प्रवाह को प्राथमिकता दें या स्पष्ट पृष्ठभूमि एक्सटेंशन अनुमतियों की प्रतीक्षा करें। ऐप-स्कोप वाले सत्र API वर्तमान में लॉन्च-टोकन पर निर्भर हैं।

बैकएंड बनाम क्लाउडफ्लेयर पेज (बिना सर्वर के)

Cloudflare Pages (बिना बैकएंड सर्वर के) का उपयोग तब करें जब:

  • आप सबसे आसान और सबसे सस्ता सेटअप चाहते हैं (जिसे मुफ्त में होस्ट किया जा सकता है)।
  • आपको केवल तभी यूआई-आधारित क्रियाओं की आवश्यकता होती है जब उपयोगकर्ता सक्रिय रूप से आपके एक्सटेंशन पेज पर हो।
  • आपको सर्वर-स्थिर एक्सटेंशन स्थिति लेखन की आवश्यकता नहीं है।
  • आप तेजी से हल्के एक्सटेंशन का प्रोटोटाइप बना रहे हैं या उनका निर्माण कर रहे हैं।

स्थानीय परीक्षण का उदाहरण (पावरशेल):

cloudflared tunnel --url http://localhost:5174

परीक्षण करते समय जनरेट किए गए सार्वजनिक URL को अपने iframe URL के रूप में उपयोग करें।

बैकएंड सर्वर का उपयोग तब करें जब:

  • आपको शेड्यूल्ड जॉब्स (क्रॉन-जैसी कार्यप्रणाली) की आवश्यकता है।
  • आपको वेबहुक या बाहरी एकीकरण की आवश्यकता है।
  • जब एक्सटेंशन पेज पर कोई नहीं होता है, तब आपको ऑटोमेशन/बैकग्राउंड प्रोसेसिंग की आवश्यकता होती है।
  • आपको सर्वर-नियंत्रित वर्कफ़्लो की आवश्यकता है जो निरंतर चलते रहने चाहिए।

बैकएंड के बिना एक महत्वपूर्ण सीमा यह है:

  • कोई पृष्ठभूमि निष्पादन नहीं। आपका एक्सटेंशन तभी कार्रवाई कर सकता है जब उपयोगकर्ता के पास एक्सटेंशन आईफ्रेम खुला हो और वह उसके साथ इंटरैक्ट कर रहा हो।

सामान्य समस्याएं

  • 403 extension_not_enabled: इस लॉक के लिए एक्सटेंशन सक्षम नहीं है।
  • 409 lock_ended: लॉक अब सक्रिय नहीं है।
  • 429: दर सीमा पहुँच गई।
  • आईफ्रेम में कोई प्रतिक्रिया नहीं: nonce, targetOrigin (parentOrigin) और अनुमत मूलों की जाँच करें।

अगली गाइड