Get started
HTTP API
HTTP API
आधार URL: https://clawhub.ai (डिफ़ॉल्ट)।
सभी v1 पथ /api/v1/... के अंतर्गत हैं।
संगतता के लिए पुराने /api/... और /api/cli/... उपलब्ध हैं (DEPRECATIONS.md देखें)।
OpenAPI: /api/v1/openapi.json।
सार्वजनिक कैटलॉग का पुनः उपयोग
तृतीय-पक्ष निर्देशिकाएँ ClawHub Skills को सूचीबद्ध करने या खोजने के लिए सार्वजनिक रीड एंडपॉइंट का उपयोग कर सकती हैं। कृपया परिणामों को कैश करें, 429/Retry-After का पालन करें, उपयोगकर्ताओं को प्रामाणिक ClawHub सूची (https://clawhub.ai/<owner>/skills/<slug>) पर वापस भेजने वाला लिंक दें, और ऐसा संकेत देने से बचें कि ClawHub तृतीय-पक्ष साइट का समर्थन करता है। सार्वजनिक API सतह के बाहर छिपी, निजी या मॉडरेशन द्वारा अवरुद्ध सामग्री को मिरर करने का प्रयास न करें।
वेब स्लग शॉर्टकट सभी रजिस्ट्री फ़ैमिली में रिज़ॉल्व होते हैं, लेकिन API क्लाइंट को रूट प्राथमिकता का पुनर्निर्माण करने के बजाय रीड एंडपॉइंट द्वारा लौटाए गए प्रामाणिक URL का उपयोग करना चाहिए।
दर सीमाएँ
प्रवर्तन मॉडल:
-
अनाम अनुरोध: प्रति IP लागू।
-
प्रमाणित अनुरोध (मान्य Bearer टोकन): प्रति उपयोगकर्ता बकेट लागू।
-
यदि टोकन अनुपस्थित/अमान्य है, तो व्यवहार IP प्रवर्तन पर वापस चला जाता है।
-
जब सर्वर को कारण ज्ञात हो, तो प्रमाणित राइट एंडपॉइंट को केवल
Unauthorizedनहीं लौटाना चाहिए। अनुपस्थित टोकन, अमान्य/निरस्त टोकन और हटाए गए/प्रतिबंधित/अक्षम खातों में से प्रत्येक के लिए कार्रवाई योग्य टेक्स्ट मिलना चाहिए, ताकि CLI क्लाइंट उपयोगकर्ताओं को बता सकें कि उन्हें किस कारण से रोका गया। -
रीड: प्रति IP 3000/मिनट, प्रति कुंजी 12000/मिनट
-
राइट: प्रति IP 300/मिनट, प्रति कुंजी 3000/मिनट
-
डाउनलोड: प्रति IP 1200/मिनट, प्रति कुंजी 6000/मिनट (डाउनलोड एंडपॉइंट)
हेडर:
- पुरानी संगतता:
X-RateLimit-Limit,X-RateLimit-Reset - मानकीकृत:
RateLimit-Limit,RateLimit-Reset 429पर:X-RateLimit-Remaining: 0औरRateLimit-Remaining: 0429पर:Retry-After
हेडर के अर्थ:
X-RateLimit-Reset: निरपेक्ष Unix युग सेकंडRateLimit-Reset: रीसेट होने तक सेकंड (विलंब)X-RateLimit-Remaining/RateLimit-Remaining: उपलब्ध होने पर शेष सटीक बजट। शार्ड किए गए सफल अनुरोध अनुमानित वैश्विक मान लौटाने के बजाय इस हेडर को छोड़ देते हैं।Retry-After:429पर पुनः प्रयास से पहले प्रतीक्षा के सेकंड (विलंब)
429 प्रतिक्रिया का उदाहरण:
HTTP/2 429content-type: text/plain; charset=utf-8x-ratelimit-limit: 20x-ratelimit-remaining: 0x-ratelimit-reset: 1771404540ratelimit-limit: 20ratelimit-remaining: 0ratelimit-reset: 34retry-after: 34 दर सीमा पार हो गईक्लाइंट मार्गदर्शन:
- यदि
Retry-Afterमौजूद है, तो पुनः प्रयास से पहले उतने सेकंड प्रतीक्षा करें। - समन्वित पुनः प्रयासों से बचने के लिए जिटरयुक्त बैकऑफ़ का उपयोग करें।
- यदि
Retry-Afterअनुपस्थित है, तोRateLimit-Resetपर वापस जाएँ (याX-RateLimit-Resetसे गणना करें)।
IP स्रोत:
- विश्वसनीय क्लाइंट IP हेडर, जिनमें
cf-connecting-ipभी शामिल है, का उपयोग केवल तब किया जाता है जब परिनियोजन विश्वसनीय फ़ॉरवर्डेड हेडर को स्पष्ट रूप से सक्षम करता है। - ClawHub एज पर क्लाइंट IP की पहचान करने के लिए विश्वसनीय फ़ॉरवर्डिंग हेडर का उपयोग करता है।
- यदि कोई विश्वसनीय क्लाइंट IP उपलब्ध नहीं है, तो अनाम अनुरोध केवल दर-सीमा प्रकार के दायरे वाले फ़ॉलबैक बकेट का उपयोग करते हैं। इन फ़ॉलबैक बकेट में कॉलर द्वारा दिए गए पथ, स्लग, पैकेज नाम, संस्करण, क्वेरी स्ट्रिंग या अन्य आर्टिफ़ैक्ट पैरामीटर शामिल नहीं होते।
त्रुटि प्रतिक्रियाएँ
सार्वजनिक v1 त्रुटि प्रतिक्रियाएँ content-type: text/plain; charset=utf-8 के साथ सादा टेक्स्ट होती हैं।
इसमें सत्यापन विफलताएँ (400), अनुपस्थित सार्वजनिक संसाधन (404), प्रमाणीकरण और
अनुमति विफलताएँ (401/403), दर सीमाएँ (429) और अवरुद्ध डाउनलोड शामिल हैं। क्लाइंट को
प्रतिक्रिया बॉडी को मानव-पठनीय स्ट्रिंग के रूप में पढ़ना चाहिए। संगतता के लिए अज्ञात क्वेरी पैरामीटर
अनदेखे किए जाते हैं, लेकिन अमान्य मान वाले पहचाने गए क्वेरी पैरामीटर
400 लौटाते हैं।
सार्वजनिक एंडपॉइंट (प्रमाणीकरण आवश्यक नहीं)
GET /api/v1/search
क्वेरी पैरामीटर:
q(आवश्यक): क्वेरी स्ट्रिंगlimit(वैकल्पिक): पूर्णांकhighlightedOnly(वैकल्पिक): हाइलाइट की गई Skills तक सीमित करने के लिएtruenonSuspiciousOnly(वैकल्पिक): संदिग्ध (flagged.suspicious) Skills को छिपाने के लिएtruenonSuspicious(वैकल्पिक):nonSuspiciousOnlyका पुराना उपनाम
प्रतिक्रिया:
{ "results": [ { "score": 0.123, "slug": "gifgrep", "displayName": "GifGrep", "summary": "…", "version": "1.2.3", "updatedAt": 1730000000000, "ownerHandle": "openclaw", "owner": { "handle": "openclaw", "displayName": "OpenClaw", "image": "https://example.com/avatar.png" } } ]}टिप्पणियाँ:
- परिणाम प्रासंगिकता क्रम में लौटाए जाते हैं (एम्बेडिंग समानता + सटीक स्लग/नाम टोकन बूस्ट + एक छोटी लोकप्रियता पूर्व-प्राथमिकता)।
- प्रासंगिकता लोकप्रियता से अधिक प्रभावशाली होती है। सटीक स्लग या प्रदर्शन-नाम टोकन मिलान, कहीं अधिक सहभागिता वाले ढीले मिलान से ऊपर आ सकता है।
- ASCII टेक्स्ट को शब्द और विराम-चिह्न सीमाओं पर टोकनाइज़ किया जाता है। उदाहरण के लिए,
personal-mapमें एक स्वतंत्रmapटोकन होता है, जबकिamap-jsapi-skillमेंamap,jsapiऔरskillहोते हैं; इसलिएmapखोजने परpersonal-mapकोamap-jsapi-skillकी तुलना में अधिक मजबूत शब्दगत मिलान मिलता है। - लोकप्रियता को लॉग-स्केल किया जाता है और उसकी अधिकतम सीमा तय होती है। अधिक सहभागिता वाली Skills भी तब नीचे रैंक कर सकती हैं जब क्वेरी टेक्स्ट का मिलान कमजोर हो।
- कॉलर फ़िल्टर और वर्तमान मॉडरेशन स्थिति के आधार पर संदिग्ध या छिपी हुई मॉडरेशन स्थिति किसी Skill को सार्वजनिक खोज से हटा सकती है।
प्रकाशक दृश्यता मार्गदर्शन:
- जिन शब्दों को उपयोगकर्ता वास्तव में खोजेंगे, उन्हें प्रदर्शन नाम, सारांश और टैग में रखें। स्वतंत्र स्लग टोकन का उपयोग केवल तभी करें जब वह एक स्थिर पहचान भी हो जिसे आप बनाए रखना चाहते हैं।
- केवल एक क्वेरी को लक्षित करने के लिए स्लग का नाम न बदलें, जब तक कि नया स्लग दीर्घकाल में बेहतर प्रामाणिक नाम न हो। पुराने स्लग रीडायरेक्ट उपनाम बन जाते हैं, लेकिन प्रामाणिक URL, प्रदर्शित स्लग और भावी खोज डाइजेस्ट नए स्लग का उपयोग करते हैं।
- नाम बदलने वाले उपनाम पुराने URL और रजिस्ट्री के माध्यम से रिज़ॉल्व होने वाले इंस्टॉल के लिए रिज़ॉल्यूशन बनाए रखते हैं, लेकिन नाम परिवर्तन के इंडेक्स होने के बाद खोज रैंकिंग प्रामाणिक Skill मेटाडेटा पर आधारित होती है। मौजूदा आँकड़े Skill के साथ बने रहते हैं।
- यदि कोई Skill अप्रत्याशित रूप से दिखाई नहीं दे रही है, तो रैंकिंग-संबंधी मेटाडेटा बदलने से पहले लॉग इन रहते हुए
clawhub inspect @owner/slugसे मॉडरेशन स्थिति जाँचें।
GET /api/v1/skills
क्वेरी पैरामीटर:
limit(वैकल्पिक): पूर्णांक (1–200)cursor(वैकल्पिक): किसी भी गैर-trendingसॉर्ट के लिए पेजिनेशन कर्सरsort(वैकल्पिक):updated(डिफ़ॉल्ट),recommended(उपनाम:default),createdAt(उपनाम:newest),downloads,stars(उपनाम:rating), पुराने इंस्टॉल उपनामinstallsCurrent/installs/installsAllTime,downloads,trendingपर मैप होते हैंnonSuspiciousOnly(वैकल्पिक): संदिग्ध (flagged.suspicious) Skills को छिपाने के लिएtruenonSuspicious(वैकल्पिक):nonSuspiciousOnlyका पुराना उपनाम
अमान्य sort मान 400 लौटाते हैं।
टिप्पणियाँ:
recommendedसहभागिता और नवीनता संकेतों का उपयोग करता है।trendingपिछले 7 दिनों के इंस्टॉल के अनुसार रैंक करता है (टेलीमेट्री-आधारित)।createdAtनई Skill क्रॉल के लिए स्थिर है; मौजूदा Skills को पुनः प्रकाशित करने परupdatedबदलता है।- जब
nonSuspiciousOnly=trueहो, तो कर्सर-आधारित सॉर्ट किसी पृष्ठ परlimitसे कम आइटम लौटा सकते हैं, क्योंकि पृष्ठ प्राप्त होने के बाद संदिग्ध Skills को फ़िल्टर किया जाता है। - उपलब्ध होने पर पेजिनेशन जारी रखने के लिए
nextCursorका उपयोग करें। केवल छोटा पृष्ठ मिलने का अर्थ यह नहीं है कि परिणाम समाप्त हो गए हैं।
प्रतिक्रिया:
{ "items": [ { "slug": "gifgrep", "displayName": "GifGrep", "summary": "…", "topics": ["Productivity"], "tags": { "latest": "1.2.3" }, "stats": {}, "createdAt": 0, "updatedAt": 0, "latestVersion": { "version": "1.2.3", "createdAt": 0, "changelog": "…" }, "metadata": { "os": ["macos"], "systems": ["aarch64-darwin"] } } ], "nextCursor": null}GET /api/v1/skills/{slug}
प्रतिक्रिया:
{ "skill": { "slug": "gifgrep", "displayName": "GifGrep", "summary": "…", "topics": ["Productivity"], "tags": { "latest": "1.2.3" }, "stats": {}, "createdAt": 0, "updatedAt": 0 }, "latestVersion": { "version": "1.2.3", "createdAt": 0, "changelog": "…" }, "metadata": { "os": ["macos"], "systems": ["aarch64-darwin"] }, "owner": { "handle": "steipete", "displayName": "Peter", "image": null }, "moderation": { "isSuspicious": false, "isMalwareBlocked": false, "verdict": "clean", "reasonCodes": [], "summary": null, "engineVersion": "v2.0.0", "updatedAt": 0 }}टिप्पणियाँ:
- स्वामी के नाम बदलने/मर्ज करने वाले प्रवाहों द्वारा बनाए गए पुराने स्लग प्रामाणिक Skill पर रिज़ॉल्व होते हैं।
metadata.os: Skill फ्रंटमैटर में घोषित OS प्रतिबंध (जैसे["macos"],["linux"])। घोषित न होने परnull।metadata.systems: Nix सिस्टम लक्ष्य (जैसे["aarch64-darwin", "x86_64-linux"])। घोषित न होने परnull।- यदि Skill में कोई प्लेटफ़ॉर्म मेटाडेटा नहीं है, तो
metadata,nullहोता है। moderationकेवल तभी शामिल होता है जब Skill फ़्लैग की गई हो या स्वामी उसे देख रहा हो।
GET /api/v1/skills/{slug}/moderation
संरचित मॉडरेशन स्थिति लौटाता है।
प्रतिक्रिया:
{ "moderation": { "isSuspicious": true, "isMalwareBlocked": false, "verdict": "suspicious", "reasonCodes": ["suspicious.dynamic_code_execution"], "summary": "Detected: suspicious.dynamic_code_execution", "engineVersion": "v2.0.0", "updatedAt": 0, "legacyReason": null, "evidence": [ { "code": "suspicious.dynamic_code_execution", "severity": "critical", "file": "index.ts", "line": 3, "message": "Dynamic code execution detected.", "evidence": "" } ] }}टिप्पणियाँ:
- स्वामी और मॉडरेटर छिपी हुई Skills के मॉडरेशन विवरण तक पहुँच सकते हैं।
- सार्वजनिक कॉलर को पहले से फ़्लैग की गई दृश्यमान Skills के लिए केवल
200मिलता है। - सार्वजनिक कॉलर के लिए साक्ष्य को संपादित किया जाता है और केवल स्वामियों/मॉडरेटर के लिए मूल स्निपेट शामिल होते हैं।
POST /api/v1/skills/{slug}/report
मॉडरेटर समीक्षा के लिए किसी Skill की रिपोर्ट करें। रिपोर्ट Skill-स्तर की होती हैं, वैकल्पिक रूप से किसी संस्करण से लिंक होती हैं और Skill रिपोर्ट कतार में भेजी जाती हैं।
प्रमाणीकरण:
- एक API टोकन आवश्यक है।
अनुरोध:
{ "reason": "संदिग्ध इंस्टॉल चरण", "version": "1.2.3" }प्रतिक्रिया:
{ "ok": true, "reported": true, "alreadyReported": false, "reportId": "skillReports:...", "skillId": "skills:...", "reportCount": 1}GET /api/v1/skills/-/reports
Skill रिपोर्ट ग्रहण करने के लिए मॉडरेटर/एडमिन एंडपॉइंट।
क्वेरी पैरामीटर:
status(वैकल्पिक):open(डिफ़ॉल्ट),confirmed,dismissedयाalllimit(वैकल्पिक): पूर्णांक (1-200)cursor(वैकल्पिक): पेजिनेशन कर्सर
प्रतिक्रिया:
{ "items": [ { "reportId": "skillReports:...", "skillId": "skills:...", "skillVersionId": "skillVersions:...", "slug": "gifgrep", "displayName": "GifGrep", "version": "1.2.3", "reason": "संदिग्ध इंस्टॉल चरण", "status": "open", "createdAt": 1730000000000, "reporter": { "userId": "users:...", "handle": "reporter", "displayName": "रिपोर्टकर्ता" }, "triagedAt": null, "triagedBy": null, "triageNote": null } ], "nextCursor": null, "done": true}POST /api/v1/skills/-/reports/{reportId}/triage
स्किल रिपोर्ट का समाधान करने या उन्हें दोबारा खोलने के लिए मॉडरेटर/एडमिन एंडपॉइंट।
अनुरोध:
{ "status": "confirmed", "note": "समीक्षा की गई और प्रभावित संस्करण छिपाया गया।", "finalAction": "hide" }note, confirmed और dismissed के लिए आवश्यक है; status को वापस open पर
सेट करते समय इसे छोड़ा जा सकता है। उसी ऑडिट-योग्य कार्यप्रवाह में स्किल को छिपाने के लिए ट्राइएज की गई
रिपोर्ट के साथ finalAction: "hide" पास करें।
GET /api/v1/skills/{slug}/versions
क्वेरी पैरामीटर:
limit(वैकल्पिक): पूर्णांकcursor(वैकल्पिक): पेजिनेशन कर्सर
GET /api/v1/skills/{slug}/versions/{version}
संस्करण मेटाडेटा + फ़ाइलों की सूची लौटाता है।
version.securityउपलब्ध होने पर सामान्यीकृत स्कैन सत्यापन स्थिति और स्कैनर विवरण (VirusTotal + LLM) शामिल करता है।
GET /api/v1/skills/{slug}/scan
किसी स्किल संस्करण के लिए सुरक्षा स्कैन सत्यापन विवरण लौटाता है।
क्वेरी पैरामीटर:
version(वैकल्पिक): विशिष्ट संस्करण स्ट्रिंग।tag(वैकल्पिक): टैग किए गए संस्करण को रिज़ॉल्व करें (उदाहरण के लिएlatest)।
टिप्पणियाँ:
- यदि न तो
versionऔर न हीtagदिया गया है, तो नवीनतम संस्करण का उपयोग होता है। - सामान्यीकृत सत्यापन स्थिति के साथ स्कैनर-विशिष्ट विवरण शामिल करता है।
security.hasScanResultकेवल तभीtrueहोता है, जब किसी स्कैनर ने निर्णायक निर्णय (clean,suspicious, याmalicious) दिया हो।moderation, नवीनतम संस्करण से प्राप्त वर्तमान स्किल-स्तरीय मॉडरेशन स्नैपशॉट है।- ऐतिहासिक संस्करण की क्वेरी करते समय,
moderationऔरsecurityको समान संस्करण संदर्भ मानने से पहलेmoderation.matchesRequestedVersionऔरmoderation.sourceVersionजाँचें।
POST /api/v1/skills/-/scan
नई ClawScan जॉब के लिए प्रमाणीकृत सबमिट एंडपॉइंट।
स्थानीय अपलोड स्कैन अब समर्थित नहीं हैं। multipart/form-data या { "source": { "kind": "upload" } }
का उपयोग करने वाले अनुरोध 410 लौटाते हैं।
प्रकाशित स्कैन JSON का उपयोग करते हैं:
{ "source": { "kind": "published", "slug": "gifgrep", "version": "1.2.3" }, "update": false}टिप्पणियाँ:
- स्कैन अनुरोध पेलोड और डाउनलोड योग्य रिपोर्ट अवधारण अवधि के बाद स्कैन-अनुरोध स्टोर से समाप्त हो जाते हैं।
- प्रकाशित स्कैन के लिए स्वामी/प्रकाशक प्रबंधन पहुँच या प्लेटफ़ॉर्म मॉडरेटर/एडमिन प्राधिकार आवश्यक है।
- प्रकाशित स्कैन केवल तभी वापस लिखते हैं, जब
update: trueहो और स्कैन सफलतापूर्वक पूरा हो। - प्रतिक्रिया
{ "ok": true, "scanId": "...", "jobId": "...", "status": "queued", "sourceKind": "published", "update": false, "queue": { "queuedAhead": 0, "queuedAheadIsEstimate": false, "position": 1, "running": 0, "runningIsEstimate": false, "note": "Scans are asynchronous and may take time to complete." } }के साथ202होती है। - स्कैन जॉब एसिंक्रोनस हैं। मैन्युअल स्कैन अनुरोधों को सामान्य प्रकाशन/बैकफ़िल कार्य से पहले प्राथमिकता दी जाती है, लेकिन पूर्णता फिर भी वर्कर की उपलब्धता पर निर्भर करती है।
GET /api/v1/skills/-/scan/{scanId}
सबमिट किए गए स्कैन के लिए प्रमाणीकृत पोल एंडपॉइंट।
- कतारबद्ध/चल रही/सफल/विफल स्थिति लौटाता है।
- कतारबद्ध रहने के दौरान
queue.queuedAheadऔरqueue.positionलौटाता है, ताकि क्लाइंट दिखा सकें कि अनुरोध से पहले कितने प्राथमिकता-प्राप्त मैन्युअल स्कैन हैं। बहुत बड़ी कतारें सीमित की जाती हैं औरqueuedAheadIsEstimate: trueके साथ रिपोर्ट की जाती हैं। - उपलब्ध होने पर,
reportमेंclawscan,skillspector,staticAnalysis, औरvirustotalअनुभाग होते हैं। - विफल स्कैन जॉब
lastErrorके साथstatus: "failed"लौटाते हैं।
GET /api/v1/skills/-/scan/{scanId}/download
प्रमाणीकृत रिपोर्ट संग्रह एंडपॉइंट।
- सफल स्कैन आवश्यक है; गैर-अंतिम स्कैन
409लौटाते हैं। manifest.json,clawscan.json,skillspector.json,static-analysis.json,virustotal.json, औरREADME.mdवाला ZIP लौटाता है।
GET /api/v1/skills/-/scan/download/{name}?version=<version>&kind=skill|plugin
सबमिट किए गए संस्करणों के लिए प्रमाणीकृत संग्रहीत रिपोर्ट संग्रह एंडपॉइंट।
- स्किल या Plugin तक स्वामी/प्रकाशक प्रबंधन पहुँच या प्लेटफ़ॉर्म मॉडरेटर/एडमिन प्राधिकार आवश्यक है।
- अवरुद्ध या छिपे हुए संस्करणों सहित, सटीक सबमिट किए गए संस्करण के लिए संग्रहीत स्कैन परिणाम लौटाता है।
kindका डिफ़ॉल्टskillहै; Plugin/पैकेज स्कैन के लिएkind=pluginका उपयोग करें।- स्कैन-अनुरोध डाउनलोड के समान ZIP संरचना लौटाता है।
POST /api/v1/skills/-/scan/batch
केवल-एडमिन कैनोनिकल बैच रीस्कैन रूट। यह पुराने POST /api/v1/skills/-/rescan-batch के समान पेलोड संरचना स्वीकार करता है।
POST /api/v1/skills/-/scan/batch/status
केवल-एडमिन कैनोनिकल बैच स्थिति रूट। यह { "jobIds": ["..."] } स्वीकार करता है और पुराने POST /api/v1/skills/-/rescan-batch/status के समान समेकित काउंटर लौटाता है।
GET /api/v1/skills/{slug}/verify
clawhub skill verify द्वारा उपयोग किया जाने वाला स्किल कार्ड सत्यापन एनवेलप लौटाता है।
क्वेरी पैरामीटर:
version(वैकल्पिक): विशिष्ट संस्करण स्ट्रिंग।tag(वैकल्पिक): टैग किए गए संस्करण को रिज़ॉल्व करें (उदाहरण के लिएlatest)।
टिप्पणियाँ:
okकेवल तभीtrueहोता है, जब चयनित संस्करण के पास जनरेट किया गया स्किल कार्ड हो, वह मॉडरेशन द्वारा मैलवेयर के कारण अवरुद्ध न हो, और ClawScan सत्यापन क्लीन हो।- स्किल पहचान, प्रकाशक पहचान, और चयनित संस्करण मेटाडेटा शीर्ष-स्तरीय एनवेलप फ़ील्ड (
slug,displayName,publisherHandle,version,resolvedFrom,tag,createdAt) हैं, ताकि शेल ऑटोमेशन नेस्टेड रैपर अनपैक किए बिना उन्हें पढ़ सके। securityशीर्ष-स्तरीय ClawScan/सुरक्षा निर्णय है। ऑटोमेशन कोok,decision,reasons, औरsecurity.statusके आधार पर काम करना चाहिए।security.signalsमेंstaticScan,virusTotal, औरskillSpectorजैसे सहायक स्कैनर साक्ष्य होते हैं।security.signals.dependencyRegistryको v1 प्रतिक्रिया संगतता के लिए बनाए रखा गया है, लेकिन डिपेंडेंसी रजिस्ट्री अस्तित्व स्कैनर सेवानिवृत्त हो चुका है और यह कुंजी हमेशाnullहोती है।provenanceकेवल तभीserver-resolved-github-importहोता है, जब ClawHub ने प्रकाशन या आयात के दौरान GitHub रेपो/रेफ़/कमिट/पथ रिज़ॉल्व और संग्रहीत किया हो; अन्यथा यहunavailableहोता है।
POST /api/v1/skills/-/security-verdicts
सटीक स्किल संस्करणों के लिए वर्तमान संक्षिप्त सुरक्षा निर्णय लौटाता है। यह संग्रह एंडपॉइंट उन क्लाइंट के लिए है, जिन्हें पहले से पता है कि उन्हें किन इंस्टॉल किए गए ClawHub स्किल संस्करणों को प्रदर्शित करना है, जैसे OpenClaw Control UI।
अनुरोध:
{ "items": [{ "slug": "gifgrep", "version": "1.2.3" }]}टिप्पणियाँ:
itemsमें 1-100 अद्वितीय{ slug, version }युग्म होने चाहिए।- परिणाम प्रत्येक आइटम के अनुसार होते हैं; एक अनुपलब्ध स्किल या संस्करण पूरी प्रतिक्रिया को विफल नहीं करता।
- प्रतिक्रिया केवल सुरक्षा संबंधी है। इसमें स्किल कार्ड डेटा, जनरेट किए गए कार्ड की स्थिति, आर्टिफ़ैक्ट फ़ाइल सूचियाँ, या विस्तृत स्कैनर पेलोड शामिल नहीं होते।
security.signalsमें केवल स्थिति-स्तरीय सहायक साक्ष्य होते हैं; पूरे स्कैनर विवरण के लिए/scanया ClawHub सुरक्षा-ऑडिट पेज का उपयोग करें।security.signals.dependencyRegistryको v1 प्रतिक्रिया संगतता के लिए बनाए रखा गया है, लेकिन डिपेंडेंसी रजिस्ट्री अस्तित्व स्कैनर सेवानिवृत्त हो चुका है और यह कुंजी हमेशाnullहोती है।- स्किल कार्ड की अनुपस्थिति इस एंडपॉइंट के
ok,decision, याreasonsको प्रभावित नहीं करती; कार्ड सामग्री की आवश्यकता होने पर क्लाइंट को इंस्टॉल किया गयाskill-card.mdस्थानीय रूप से पढ़ना चाहिए। - एकल-स्किल स्किल कार्ड सत्यापन एनवेलप की आवश्यकता होने पर
/verify, जनरेट किए गए कार्ड मार्कडाउन की आवश्यकता होने पर/card, और विस्तृत स्कैनर डेटा की आवश्यकता होने पर/scanका उपयोग करें।
प्रतिक्रिया:
{ "schema": "clawhub.skill.security-verdicts.v1", "items": [ { "ok": true, "decision": "pass", "reasons": [], "requestedSlug": "gifgrep", "slug": "gifgrep", "displayName": "GifGrep", "publisherHandle": "steipete", "publisherDisplayName": "Peter", "requestedVersion": "1.2.3", "version": "1.2.3", "createdAt": 0, "checkedAt": 0, "skillUrl": "https://clawhub.ai/steipete/skills/gifgrep", "securityAuditUrl": "https://clawhub.ai/steipete/skills/gifgrep/security-audit?version=1.2.3", "security": { "status": "clean", "passed": true, "signals": { "staticScan": { "status": "clean", "reasonCodes": [] }, "virusTotal": null, "skillSpector": null, "dependencyRegistry": null } } }, { "ok": false, "decision": "fail", "reasons": ["version.not_found"], "requestedSlug": "missing-version", "requestedVersion": "1.0.0", "error": { "code": "version_not_found", "message": "संस्करण नहीं मिला" }, "security": null } ]}GET /api/v1/skills/{slug}/file
सटीक संग्रहीत फ़ाइल बाइट डाउनलोड के रूप में लौटाता है। सीमित एस्केप किए गए टेक्स्ट
पूर्वावलोकन का अनुरोध करने के लिए preview=1 जोड़ें; मान्य UTF-8 बाइट वाली किसी भी फ़ाइल का पूर्वावलोकन किया जा सकता है, चाहे उसका एक्सटेंशन या MIME
मेटाडेटा कुछ भी हो।
क्वेरी पैरामीटर:
path(आवश्यक)version(वैकल्पिक)tag(वैकल्पिक)preview=1(वैकल्पिक; बाइट मान्य UTF-8 न होने परtext/plainया415लौटाता है)
टिप्पणियाँ:
- डिफ़ॉल्ट रूप से नवीनतम संस्करण।
- रॉ डाउनलोड सीमा: 10MB।
- टेक्स्ट पूर्वावलोकन सीमा: 200KB।
GET /api/v1/packages
इसके लिए एकीकृत कैटलॉग एंडपॉइंट:
- स्किल
- कोड Plugin
- बंडल Plugin
क्वेरी पैरामीटर:
limit(वैकल्पिक): पूर्णांक (1–100)cursor(वैकल्पिक): पेजिनेशन कर्सरfamily(वैकल्पिक):skill,code-plugin, याbundle-pluginchannel(वैकल्पिक):official,community, याprivateisOfficial(वैकल्पिक):trueयाfalsesort(वैकल्पिक):updated(डिफ़ॉल्ट),recommended,trending,downloads, पुराना उपनामinstallscategory(वैकल्पिक): Plugin श्रेणी फ़िल्टर। केवल तभी समर्थित है, जब अनुरोध Plugin पैकेज (/api/v1/plugins,/api/v1/code-plugins,/api/v1/bundle-plugins, याfamily=code-plugin/family=bundle-pluginवाले पैकेज एंडपॉइंट) तक सीमित हो। नियंत्रित श्रेणियाँ और पुराने v1 फ़िल्टर उपनामGET /api/v1/pluginsके अंतर्गत प्रलेखित हैं।
टिप्पणियाँ:
family,channel,isOfficial,featured,highlightedOnly, याsortके अमान्य मान400लौटाते हैं। अज्ञात क्वेरी पैरामीटर अनदेखे किए जाते हैं।GET /api/v1/code-pluginsऔरGET /api/v1/bundle-pluginsनिश्चित-परिवार उपनाम बने रहते हैं।- स्किल प्रविष्टियाँ स्किल रजिस्ट्री द्वारा समर्थित रहती हैं और अब भी केवल
POST /api/v1/skillsके माध्यम से प्रकाशित की जा सकती हैं। POST /api/v1/packagesअब भी केवल कोड-Plugin और बंडल-Plugin रिलीज़ के लिए है।- अनाम कॉलर केवल सार्वजनिक पैकेज चैनल देखते हैं।
- प्रमाणीकृत कॉलर सूची/खोज परिणामों में उन प्रकाशकों के निजी पैकेज देख सकते हैं जिनसे वे संबंधित हैं।
channel=privateकेवल वे पैकेज लौटाता है जिन्हें प्रमाणीकृत कॉलर पढ़ सकता है।
GET /api/v1/packages/search
स्किल + Plugin पैकेज में एकीकृत कैटलॉग खोज।
क्वेरी पैरामीटर:
q(आवश्यक): क्वेरी स्ट्रिंगlimit(वैकल्पिक): पूर्णांक (1–100)family(वैकल्पिक):skill,code-plugin, याbundle-pluginchannel(वैकल्पिक):official,community, याprivateisOfficial(वैकल्पिक):trueयाfalsecategory(वैकल्पिक): Plugin श्रेणी फ़िल्टर। केवल तब समर्थित है जब अनुरोध का दायरा Plugin पैकेज तक सीमित हो। नियंत्रित श्रेणियाँ और लेगेसी v1 फ़िल्टर उपनामGET /api/v1/pluginsके अंतर्गत प्रलेखित हैं।
टिप्पणियाँ:
family,channel,isOfficial,featured, याhighlightedOnlyके अमान्य मान400लौटाते हैं। अज्ञात क्वेरी पैरामीटर अनदेखे किए जाते हैं।- अनाम कॉलर केवल सार्वजनिक पैकेज चैनल देख सकते हैं।
- प्रमाणित कॉलर उन प्रकाशकों के निजी पैकेज खोज सकते हैं जिनसे वे संबद्ध हैं।
channel=privateकेवल वे पैकेज लौटाता है जिन्हें प्रमाणित कॉलर पढ़ सकता है।
GET /api/v1/plugins
कोड-Plugin और बंडल-Plugin पैकेजों में केवल-Plugin कैटलॉग ब्राउज़िंग।
क्वेरी पैरामीटर:
limit(वैकल्पिक): पूर्णांक (1-100)cursor(वैकल्पिक): पृष्ठांकन कर्सरisOfficial(वैकल्पिक):trueयाfalsesort(वैकल्पिक):recommended(डिफ़ॉल्ट),trending,downloads,updated, लेगेसी उपनामinstallscategory(वैकल्पिक): Plugin श्रेणी फ़िल्टर। वर्तमान मान:channels,models,memory,context,voice,media,web,tools,runtime,gateway,security,other।
लेगेसी v1 फ़िल्टर उपनाम पठन एंडपॉइंट पर अभी भी स्वीकार किए जाते हैं:
mcp-tooling,data, औरautomationका समाधानtoolsके रूप में होता है।observabilityऔरdeploymentका समाधानgatewayके रूप में होता है।dev-toolsका समाधानruntimeके रूप में होता है।
trending सात-दिवसीय इंस्टॉल/डाउनलोड लीडरबोर्ड है और सर्वकालिक योग का उपयोग नहीं करता।
एकीकृत /api/v1/packages एंडपॉइंट पर यह केवल-Plugin है; Skills कैटलॉग के लिए
/api/v1/skills?sort=trending का उपयोग करें।
लेगेसी उपनाम संग्रहीत या लेखक-घोषित श्रेणी मानों के रूप में स्वीकार नहीं किए जाते।
GET /api/v1/skills/export
ऑफ़लाइन विश्लेषण के लिए नवीनतम सार्वजनिक Skills का थोक निर्यात।
प्रमाणीकरण:
- API टोकन आवश्यक है।
क्वेरी पैरामीटर:
startDate(आवश्यक): SkillupdatedAtके लिए Unix मिलीसेकंड की निचली सीमा।endDate(आवश्यक): SkillupdatedAtके लिए Unix मिलीसेकंड की ऊपरी सीमा।limit(वैकल्पिक): पूर्णांक (1-250), डिफ़ॉल्ट250।cursor(वैकल्पिक): पिछले प्रत्युत्तर का पृष्ठांकन कर्सर।
प्रत्युत्तर:
- बॉडी: ZIP आर्काइव।
- प्रत्येक निर्यातित Skill का मूल
{publisher}/{slug}/पर होता है। - होस्ट की गई Skills में नवीनतम संग्रहीत संस्करण फ़ाइलें शामिल होती हैं और उन्हें
_manifest.jsonमेंsourceRef: "public-clawhub"के साथ सूचीबद्ध किया जाता है। cleanयाsuspiciousस्कैन वाली वर्तमान GitHub-समर्थित Skills में_source_handoff.jsonके साथsourceRef: "public-github", रिपॉज़िटरी, कमिट, पथ, सामग्री हैश और आर्काइव URL शामिल होते हैं। इनमें ClawHub द्वारा होस्ट की गई स्रोत फ़ाइलें शामिल नहीं होतीं।- प्रत्येक Skill में
_export_skill_meta.jsonशामिल होता है। _manifest.jsonहमेशा ZIP के मूल में शामिल होता है।- जब अलग-अलग Skills या फ़ाइलें निर्यात नहीं की जा सकीं, तब
_errors.jsonशामिल होता है।
हेडर:
X-Next-CursorX-Has-MoreX-Total-ReturnedX-Date-RangeX-Export-Errors
GET /api/v1/plugins/export
ऑफ़लाइन विश्लेषण के लिए नवीनतम सार्वजनिक Plugin रिलीज़ का थोक निर्यात।
प्रमाणीकरण:
- API टोकन आवश्यक है।
क्वेरी पैरामीटर:
startDate(आवश्यक): PluginupdatedAtके लिए Unix मिलीसेकंड की निचली सीमा।endDate(आवश्यक): PluginupdatedAtके लिए Unix मिलीसेकंड की ऊपरी सीमा।limit(वैकल्पिक): पूर्णांक (1-250), डिफ़ॉल्ट250।cursor(वैकल्पिक): पिछले प्रत्युत्तर का पृष्ठांकन कर्सर।family(वैकल्पिक):code-pluginयाbundle-plugin। छोड़े जाने का अर्थ दोनों Plugin परिवार हैं।
प्रत्युत्तर:
- बॉडी: ZIP आर्काइव।
- प्रत्येक निर्यातित Plugin का मूल
{family}/{packageName}/पर होता है। - प्रत्येक निर्यातित Plugin में नवीनतम रिलीज़ की संग्रहीत फ़ाइलें शामिल होती हैं।
- प्रति-Plugin निर्यात मेटाडेटा
__clawhub_export/{family}/{packageName}/plugin_meta.jsonपर संग्रहीत होता है। _manifest.jsonहमेशा ZIP के मूल में शामिल होता है।- जब अलग-अलग Plugins या फ़ाइलें निर्यात नहीं की जा सकीं, तब
_errors.jsonशामिल होता है।
हेडर:
X-Next-CursorX-Has-MoreX-Total-ReturnedX-Date-RangeX-Export-Errors
GET /api/v1/plugins/search
कोड-Plugin और बंडल-Plugin पैकेजों में केवल-Plugin खोज।
क्वेरी पैरामीटर:
q(आवश्यक): क्वेरी स्ट्रिंगlimit(वैकल्पिक): पूर्णांक (1-100)isOfficial(वैकल्पिक):trueयाfalsecategory(वैकल्पिक): Plugin श्रेणी फ़िल्टर। वर्तमान मान:channels,models,memory,context,voice,media,web,tools,runtime,gateway,security,other।
टिप्पणियाँ:
GET /api/v1/pluginsके अंतर्गत प्रलेखित लेगेसी v1 फ़िल्टर उपनाम भी स्वीकार किए जाते हैं।- श्रेणी फ़िल्टरिंग Plugin श्रेणी डाइजेस्ट पंक्तियों द्वारा समर्थित एक वास्तविक API फ़िल्टर है, न कि खोज-क्वेरी का पुनर्लेखन।
- परिणाम प्रासंगिकता क्रम में लौटाए जाते हैं और वर्तमान में उनका पृष्ठांकन नहीं होता।
- Plugin खोज के लिए ब्राउज़र UI सॉर्ट नियंत्रण लोड किए गए प्रासंगिकता परिणामों को पुनः क्रमित करते हैं,
जो वर्तमान
/skillsब्राउज़ व्यवहार से मेल खाता है।
GET /api/v1/packages/{name}
पैकेज विवरण मेटाडेटा लौटाता है।
टिप्पणियाँ:
- एकीकृत कैटलॉग में इस रूट के माध्यम से Skills का समाधान भी हो सकता है।
- यदि कॉलर स्वामी प्रकाशक को नहीं पढ़ सकता, तो निजी पैकेज
404लौटाते हैं।
DELETE /api/v1/packages/{name}
पैकेज और सभी रिलीज़ को सॉफ़्ट-डिलीट करता है।
टिप्पणियाँ:
- पैकेज स्वामी, संगठन प्रकाशक स्वामी/व्यवस्थापक, प्लेटफ़ॉर्म मॉडरेटर या प्लेटफ़ॉर्म व्यवस्थापक के लिए API टोकन आवश्यक है।
GET /api/v1/packages/{name}/versions
संस्करण इतिहास लौटाता है।
क्वेरी पैरामीटर:
limit(वैकल्पिक): पूर्णांक (1–100)cursor(वैकल्पिक): पृष्ठांकन कर्सर
टिप्पणियाँ:
- यदि कॉलर स्वामी प्रकाशक को नहीं पढ़ सकता, तो निजी पैकेज
404लौटाते हैं।
GET /api/v1/packages/{name}/versions/{version}
फ़ाइल मेटाडेटा, संगतता, सत्यापन, आर्टिफ़ैक्ट मेटाडेटा और स्कैन डेटा सहित एक पैकेज संस्करण लौटाता है।
टिप्पणियाँ:
version.artifact.kindपुराने स्वरूप वाले पैकेज आर्काइव के लिएlegacy-zipया ClawPack-समर्थित रिलीज़ के लिएnpm-packहै।- ClawPack रिलीज़ में npm-संगत
npmIntegrity,npmShasum, औरnpmTarballNameफ़ील्ड शामिल होते हैं। version.sha256hashपुराने क्लाइंट के लिए अप्रचलित संगतता मेटाडेटा है। यह/api/v1/packages/{name}/downloadद्वारा लौटाए गए सटीक ZIP बाइट्स को हैश करता है। आधुनिक क्लाइंट कोversion.artifact.sha256का उपयोग करना चाहिए, जो कैनोनिकल रिलीज़ आर्टिफ़ैक्ट की पहचान करता है।- स्कैन डेटा मौजूद होने पर
version.vtAnalysis,version.llmAnalysis, औरversion.staticScanशामिल होते हैं। - यदि कॉलर स्वामी प्रकाशक को नहीं पढ़ सकता, तो निजी पैकेज
404लौटाते हैं।
GET /api/v1/packages/{name}/versions/{version}/security
इंस्टॉल क्लाइंट के लिए पैकेज रिलीज़ का सटीक सुरक्षा और विश्वास सारांश लौटाता है। यह तय करने के लिए कि समाधान की गई रिलीज़ इंस्टॉल की जा सकती है या नहीं, यह सार्वजनिक OpenClaw उपयोग सतह है।
प्रमाणीकरण:
- सार्वजनिक पठन एंडपॉइंट। किसी स्वामी, प्रकाशक, मॉडरेटर या व्यवस्थापक टोकन की आवश्यकता नहीं है।
प्रत्युत्तर:
{ "package": { "name": "@openclaw/example-plugin", "displayName": "Example Plugin", "family": "code-plugin" }, "release": { "releaseId": "packageReleases:...", "version": "1.2.3", "artifactKind": "npm-pack", "artifactSha256": "0123456789abcdef...", "npmIntegrity": "sha512-...", "npmShasum": "0123456789abcdef0123456789abcdef01234567", "npmTarballName": "example-plugin-1.2.3.tgz", "createdAt": 1730000000000 }, "trust": { "scanStatus": "malicious", "moderationState": "quarantined", "blockedFromDownload": true, "reasons": ["manual:quarantined", "scan:malicious"], "pending": false, "stale": false }}प्रत्युत्तर फ़ील्ड:
package.name,package.displayName, औरpackage.familyसमाधान किए गए रजिस्ट्री पैकेज की पहचान करते हैं।release.releaseId,release.version, औरrelease.createdAtउस सटीक रिलीज़ की पहचान करते हैं जिसका मूल्यांकन किया गया था।release.artifactKind,release.artifactSha256,release.npmIntegrity,release.npmShasum, औरrelease.npmTarballNameरिलीज़ आर्टिफ़ैक्ट के लिए ज्ञात होने पर मौजूद होते हैं।trust.scanStatusस्कैनर इनपुट और मैन्युअल रिलीज़ मॉडरेशन से प्राप्त प्रभावी विश्वास स्थिति है।trust.moderationStateशून्य-योग्य है। मैन्युअल रिलीज़ मॉडरेशन मौजूद न होने पर यहnullहोता है।trust.blockedFromDownloadइंस्टॉल अवरोध संकेत है। OpenClaw और अन्य इंस्टॉल क्लाइंट को स्कैनर या मॉडरेशन फ़ील्ड से अवरोध नियमों को पुनः प्राप्त करने के बजाय, यह मानtrueहोने पर इंस्टॉलेशन अवरुद्ध करना चाहिए।trust.reasonsउपयोगकर्ता-दृश्य और ऑडिट स्पष्टीकरण सूची है। कारण कोडmanual:quarantined,scan:malicious, औरpackage:maliciousजैसे स्थिर, संक्षिप्त स्ट्रिंग होते हैं।trust.pendingका अर्थ है कि एक या अधिक विश्वास इनपुट अभी भी पूर्ण होने की प्रतीक्षा में हैं।trust.staleका अर्थ है कि विश्वास सारांश की गणना पुराने इनपुट से की गई थी और उच्च-विश्वसनीयता वाले अनुमति निर्णय से पहले इसे रीफ़्रेश करना आवश्यक माना जाना चाहिए।
टिप्पणियाँ:
- यह एंडपॉइंट संस्करण-सटीक है। क्लाइंट को केवल नवीनतम पैकेज मेटाडेटा पढ़ने के बाद नहीं, बल्कि उस पैकेज संस्करण का समाधान करने के बाद इसे कॉल करना चाहिए जिसे वे इंस्टॉल करना चाहते हैं।
- यदि कॉलर स्वामी प्रकाशक को नहीं पढ़ सकता, तो निजी पैकेज
404लौटाते हैं। - यह एंडपॉइंट जानबूझकर स्वामी/मॉडरेटर मॉडरेशन एंडपॉइंट से अधिक सीमित है। यह इंस्टॉल निर्णय और सार्वजनिक स्पष्टीकरण प्रदर्शित करता है, न कि रिपोर्टकर्ता की पहचान, रिपोर्ट की सामग्री, निजी साक्ष्य या आंतरिक समीक्षा समयरेखाएँ।
GET /api/v1/packages/{name}/versions/{version}/artifact
पैकेज संस्करण के लिए स्पष्ट आर्टिफ़ैक्ट रिज़ॉल्वर मेटाडेटा लौटाता है।
टिप्पणियाँ:
- लेगेसी पैकेज संस्करण एक
legacy-zipआर्टिफ़ैक्ट और लेगेसी ZIPdownloadUrlलौटाते हैं। - ClawPack संस्करण एक
npm-packआर्टिफ़ैक्ट, npm अखंडता फ़ील्ड, एकtarballUrl, और लेगेसी ZIP संगतता URL लौटाते हैं। - यह OpenClaw रिज़ॉल्वर सतह है; यह किसी साझा URL से आर्काइव प्रारूप का अनुमान लगाने से बचती है।
GET /api/v1/packages/{name}/versions/{version}/artifact/download
स्पष्ट रिज़ॉल्वर पथ के माध्यम से संस्करण आर्टिफ़ैक्ट डाउनलोड करता है।
टिप्पणियाँ:
- ClawPack संस्करण अपलोड किए गए सटीक npm-pack
.tgzबाइट्स स्ट्रीम करते हैं। - पुराने ZIP संस्करण
/api/v1/packages/{name}/download?version=पर रीडायरेक्ट होते हैं। - डाउनलोड दर बकेट का उपयोग करता है।
GET /api/v1/packages/{name}/readiness
OpenClaw द्वारा भविष्य में उपयोग के लिए परिकलित तत्परता लौटाता है।
तत्परता जाँच में शामिल हैं:
- आधिकारिक चैनल स्थिति
- नवीनतम संस्करण की उपलब्धता
- ClawPack npm-pack आर्टिफ़ैक्ट की उपलब्धता
- आर्टिफ़ैक्ट डाइजेस्ट
- स्रोत रिपॉज़िटरी और कमिट की उत्पत्ति
- OpenClaw संगतता मेटाडेटा
- होस्ट लक्ष्य
- स्कैन स्थिति
प्रतिक्रिया:
{ "package": { "name": "@openclaw/example-plugin", "displayName": "उदाहरण Plugin", "family": "code-plugin", "isOfficial": true, "latestVersion": "1.2.3" }, "ready": false, "checks": [ { "id": "clawpack", "label": "ClawPack आर्टिफ़ैक्ट", "status": "fail", "message": "नवीनतम संस्करण केवल पुराने ZIP प्रारूप में है।" } ], "blockers": ["clawpack"]}GET /api/v1/packages/migrations
आधिकारिक OpenClaw Plugin माइग्रेशन पंक्तियाँ सूचीबद्ध करने के लिए मॉडरेटर एंडपॉइंट।
प्रमाणीकरण:
- मॉडरेटर या एडमिन उपयोगकर्ता के लिए API टोकन आवश्यक है।
क्वेरी पैरामीटर:
phase(वैकल्पिक):planned,published,clawpack-ready,legacy-zip-only,metadata-ready,blocked,ready-for-openclaw, याall(डिफ़ॉल्ट)।limit(वैकल्पिक): पूर्णांक (1-100)cursor(वैकल्पिक): पृष्ठांकन कर्सर
प्रतिक्रिया:
{ "items": [ { "migrationId": "officialPluginMigrations:...", "bundledPluginId": "core.search", "packageName": "@openclaw/search-plugin", "packageId": "packages:...", "owner": "platform", "sourceRepo": "openclaw/openclaw", "sourcePath": "plugins/search", "sourceCommit": "abc123", "phase": "blocked", "blockers": ["ClawPack अनुपलब्ध"], "hostTargetsComplete": true, "scanClean": false, "moderationApproved": false, "runtimeBundlesReady": false, "notes": null, "createdAt": 1760000000000, "updatedAt": 1760000000000 } ], "nextCursor": null, "done": true}POST /api/v1/packages/migrations
आधिकारिक Plugin माइग्रेशन पंक्ति बनाने या अपडेट करने के लिए एडमिन एंडपॉइंट।
प्रमाणीकरण:
- एडमिन उपयोगकर्ता के लिए API टोकन आवश्यक है।
अनुरोध बॉडी:
{ "bundledPluginId": "core.search", "packageName": "@openclaw/search-plugin", "owner": "platform", "sourceRepo": "openclaw/openclaw", "sourcePath": "plugins/search", "sourceCommit": "abc123", "phase": "blocked", "blockers": ["ClawPack अनुपलब्ध"], "hostTargetsComplete": true, "scanClean": false, "moderationApproved": false, "runtimeBundlesReady": false, "notes": "प्रकाशक के अपलोड की प्रतीक्षा है"}टिप्पणियाँ:
bundledPluginIdको लोअरकेस में सामान्यीकृत किया जाता है और यह स्थिर अपसर्ट कुंजी है।packageNameको npm नाम के अनुसार सामान्यीकृत किया जाता है; नियोजित माइग्रेशन के लिए पैकेज अनुपलब्ध हो सकता है।- यह केवल माइग्रेशन की तत्परता ट्रैक करता है। यह OpenClaw को परिवर्तित नहीं करता या ClawPacks जनरेट नहीं करता।
GET /api/v1/packages/moderation/queue
पैकेज रिलीज़ समीक्षा कतारों के लिए मॉडरेटर/एडमिन एंडपॉइंट।
प्रमाणीकरण:
- मॉडरेटर या एडमिन उपयोगकर्ता के लिए API टोकन आवश्यक है।
क्वेरी पैरामीटर:
status(वैकल्पिक):open(डिफ़ॉल्ट),blocked,manual, याalllimit(वैकल्पिक): पूर्णांक (1-100)cursor(वैकल्पिक): पृष्ठांकन कर्सर
स्थितियों के अर्थ:
open: संदिग्ध, दुर्भावनापूर्ण, लंबित, क्वारंटीन की गई, निरस्त की गई या रिपोर्ट की गई रिलीज़।blocked: क्वारंटीन की गई, निरस्त की गई या दुर्भावनापूर्ण रिलीज़।manual: मैन्युअल मॉडरेशन ओवरराइड वाली कोई भी रिलीज़।all: मैन्युअल ओवरराइड, गैर-स्वच्छ स्कैन स्थिति या पैकेज रिपोर्ट वाली कोई भी रिलीज़।
प्रतिक्रिया:
{ "items": [ { "packageId": "packages:...", "releaseId": "packageReleases:...", "name": "@openclaw/example-plugin", "displayName": "उदाहरण Plugin", "family": "code-plugin", "channel": "community", "isOfficial": false, "version": "1.2.3", "createdAt": 1730000000000, "artifactKind": "npm-pack", "scanStatus": "malicious", "moderationState": "quarantined", "moderationReason": "मैन्युअल समीक्षा", "sourceRepo": "openclaw/example-plugin", "sourceCommit": "abc123", "reportCount": 2, "lastReportedAt": 1730000001000, "reasons": ["manual:quarantined", "scan:malicious", "reports:2"] } ], "nextCursor": null, "done": true}POST /api/v1/packages/{name}/report
मॉडरेटर समीक्षा के लिए किसी पैकेज की रिपोर्ट करें। रिपोर्ट पैकेज-स्तरीय होती हैं और वैकल्पिक रूप से किसी संस्करण से लिंक की जा सकती हैं। वे मॉडरेशन कतार को डेटा देती हैं, लेकिन स्वयं पैकेज को स्वतः छिपाती या डाउनलोड अवरुद्ध नहीं करतीं; आर्टिफ़ैक्ट को स्वीकृत, क्वारंटीन या निरस्त करने के लिए मॉडरेटर को रिलीज़ मॉडरेशन का उपयोग करना चाहिए।
प्रमाणीकरण:
- API टोकन आवश्यक है।
अनुरोध:
{ "reason": "संदिग्ध नेटिव बाइनरी", "version": "1.2.3" }प्रतिक्रिया:
{ "ok": true, "reported": true, "alreadyReported": false, "packageId": "packages:...", "releaseId": "packageReleases:...", "reportCount": 1}GET /api/v1/packages/reports
पैकेज रिपोर्ट प्राप्त करने के लिए मॉडरेटर/एडमिन एंडपॉइंट।
प्रमाणीकरण:
- मॉडरेटर या एडमिन उपयोगकर्ता के लिए API टोकन आवश्यक है।
क्वेरी पैरामीटर:
status(वैकल्पिक):open(डिफ़ॉल्ट),confirmed,dismissed, याalllimit(वैकल्पिक): पूर्णांक (1-100)cursor(वैकल्पिक): पृष्ठांकन कर्सर
प्रतिक्रिया:
{ "items": [ { "reportId": "packageReports:...", "packageId": "packages:...", "releaseId": "packageReleases:...", "name": "@openclaw/example-plugin", "displayName": "उदाहरण Plugin", "family": "code-plugin", "version": "1.2.3", "reason": "संदिग्ध नेटिव बाइनरी", "status": "open", "createdAt": 1730000000000, "reporter": { "userId": "users:...", "handle": "reporter", "displayName": "रिपोर्टकर्ता" }, "triagedAt": null, "triagedBy": null, "triageNote": null } ], "nextCursor": null, "done": true}GET /api/v1/packages/{name}/moderation
पैकेज मॉडरेशन दृश्यता के लिए स्वामी/मॉडरेटर एंडपॉइंट।
प्रमाणीकरण:
- पैकेज स्वामी, प्रकाशक सदस्य, मॉडरेटर या एडमिन उपयोगकर्ता के लिए API टोकन आवश्यक है।
प्रतिक्रिया:
{ "package": { "packageId": "packages:...", "name": "@openclaw/example-plugin", "displayName": "उदाहरण Plugin", "family": "code-plugin", "channel": "community", "isOfficial": false, "reportCount": 2, "lastReportedAt": 1730000001000, "scanStatus": "malicious" }, "latestRelease": { "releaseId": "packageReleases:...", "version": "1.2.3", "artifactKind": "npm-pack", "scanStatus": "malicious", "moderationState": "quarantined", "moderationReason": "मैन्युअल समीक्षा", "blockedFromDownload": true, "reasons": ["manual:quarantined", "scan:malicious", "reports:2"], "createdAt": 1730000000000 }}POST /api/v1/packages/reports/{reportId}/triage
पैकेज रिपोर्ट का समाधान करने या उन्हें फिर से खोलने के लिए मॉडरेटर/एडमिन एंडपॉइंट।
अनुरोध:
{ "status": "confirmed", "note": "समीक्षा की गई और प्रभावित रिलीज़ को क्वारंटीन किया गया।", "finalAction": "quarantine"}note, confirmed और dismissed के लिए आवश्यक है; status को वापस
open पर सेट करते समय इसे छोड़ा जा सकता है। उसी ऑडिट-योग्य कार्यप्रवाह में रिलीज़ मॉडरेशन लागू करने के लिए
पुष्टि की गई रिपोर्ट के साथ finalAction: "quarantine" या
finalAction: "revoke" पास करें।
प्रतिक्रिया:
{ "ok": true, "reportId": "packageReports:...", "packageId": "packages:...", "status": "confirmed", "reportCount": 0}POST /api/v1/packages/{name}/versions/{version}/moderation
पैकेज रिलीज़ समीक्षा के लिए मॉडरेटर/एडमिन एंडपॉइंट।
अनुरोध:
{ "state": "quarantined", "reason": "संदिग्ध नेटिव पेलोड।" }समर्थित स्थितियाँ:
approved: मैन्युअल रूप से समीक्षा की गई और अनुमति दी गई।quarantined: आगे की कार्रवाई तक अवरुद्ध।revoked: किसी रिलीज़ पर पहले भरोसा किए जाने के बाद अवरुद्ध।
क्वारंटीन और निरस्त की गई रिलीज़ आर्टिफ़ैक्ट डाउनलोड रूट से 403 लौटाती हैं।
प्रत्येक परिवर्तन एक ऑडिट लॉग प्रविष्टि लिखता है।
GET /api/v1/packages/{name}/file
संग्रहीत पैकेज फ़ाइल के सटीक बाइट्स डाउनलोड के रूप में लौटाता है। Skills फ़ाइलों के लिए उपयोग किए जाने वाले समान सीमित
UTF-8 टेक्स्ट पूर्वावलोकन का अनुरोध करने हेतु preview=1 जोड़ें।
क्वेरी पैरामीटर:
path(आवश्यक)version(वैकल्पिक)tag(वैकल्पिक)preview=1(वैकल्पिक; बाइट्स के मान्य UTF-8 न होने परtext/plainया415लौटाता है)
टिप्पणियाँ:
- डिफ़ॉल्ट रूप से नवीनतम रिलीज़ का उपयोग करता है।
- डाउनलोड बकेट के बजाय रीड दर बकेट का उपयोग करता है।
- रॉ डाउनलोड सीमा: 10MB।
- टेक्स्ट पूर्वावलोकन सीमा: 200KB; अपारदर्शी फ़ाइलें केवल पूर्वावलोकन अनुरोधों के लिए
415लौटाती हैं। - लंबित VirusTotal स्कैन रीड को अवरुद्ध नहीं करते; दुर्भावनापूर्ण रिलीज़ अब भी कहीं और रोकी जा सकती हैं।
- निजी पैकेज
404लौटाते हैं, जब तक कि कॉलर स्वामी प्रकाशक को पढ़ न सकता हो।
GET /api/v1/packages/{name}/download
किसी पैकेज रिलीज़ के लिए पुराना नियतात्मक ZIP संग्रह डाउनलोड करता है।
क्वेरी पैरामीटर:
version(वैकल्पिक)tag(वैकल्पिक)
टिप्पणियाँ:
- डिफ़ॉल्ट रूप से नवीनतम रिलीज़ का उपयोग करता है।
- Skills को
GET /api/v1/downloadपर रीडायरेक्ट किया जाता है। - Plugin/पैकेज संग्रह ऐसी zip फ़ाइलें हैं जिनमें
package/रूट होता है, ताकि पुराने OpenClaw क्लाइंट काम करते रहें। - यह रूट केवल ZIP के लिए रहता है। यह ClawPack
.tgzफ़ाइलें स्ट्रीम नहीं करता। - रिज़ॉल्वर अखंडता जाँच के लिए प्रतिक्रियाओं में
ETag,Digest,X-ClawHub-Artifact-Type, औरX-ClawHub-Artifact-Sha256हेडर शामिल होते हैं। - केवल रजिस्ट्री वाला मेटाडेटा डाउनलोड किए गए संग्रह में इंजेक्ट नहीं किया जाता।
- लंबित VirusTotal स्कैन डाउनलोड अवरुद्ध नहीं करते; दुर्भावनापूर्ण रिलीज़
403लौटाती हैं। - निजी पैकेज
404लौटाते हैं, जब तक कि कॉलर स्वामी न हो।
GET /api/npm/{package}
ClawPack-समर्थित पैकेज संस्करणों के लिए npm-संगत पैक्यूमेंट लौटाता है।
टिप्पणियाँ:
- केवल अपलोड किए गए ClawPack npm-pack टारबॉल वाले संस्करण सूचीबद्ध होते हैं।
- पुराने केवल-ZIP संस्करण जानबूझकर छोड़े जाते हैं।
dist.tarball,dist.integrity, औरdist.shasumnpm-संगत फ़ील्ड का उपयोग करते हैं, ताकि उपयोगकर्ता चाहें तो npm को मिरर पर इंगित कर सकें।- स्कोप किए गए पैकेज पैक्यूमेंट
/api/npm/@scope/nameऔर npm के एन्कोड किए गए/api/npm/@scope%2Fnameअनुरोध पथ, दोनों का समर्थन करते हैं।
GET /api/npm/{package}/-/{tarball}.tgz
npm मिरर क्लाइंट के लिए अपलोड किए गए सटीक ClawPack टारबॉल बाइट्स स्ट्रीम करता है।
टिप्पणियाँ:
- डाउनलोड दर बकेट का उपयोग करता है।
- डाउनलोड हेडर में ClawHub SHA-256 के साथ npm अखंडता/shasum मेटाडेटा शामिल होता है।
- मॉडरेशन और निजी पैकेज अभिगम जाँच अब भी लागू होती हैं।
GET /api/v1/resolve
किसी स्थानीय फ़िंगरप्रिंट को ज्ञात संस्करण से मैप करने के लिए CLI द्वारा उपयोग किया जाता है।
क्वेरी पैरामीटर:
slug(आवश्यक)hash(आवश्यक): बंडल फ़िंगरप्रिंट का 64-वर्णीय हेक्स sha256
प्रतिक्रिया:
{ "slug": "gifgrep", "match": { "version": "1.2.2" }, "latestVersion": { "version": "1.2.3" } }GET /api/v1/download
होस्ट किए गए skill संस्करण की ZIP डाउनलोड करता है, या ऐसे मौजूदा GitHub-समर्थित skill के लिए GitHub स्रोत हैंडऑफ़ लौटाता है जिसकी clean या suspicious स्कैन स्थिति हो और जिसका कोई होस्ट किया गया संस्करण न हो।
क्वेरी पैरामीटर:
slug(आवश्यक)version(वैकल्पिक): semver स्ट्रिंगtag(वैकल्पिक): टैग नाम (उदा.latest)
टिप्पणियाँ:
- यदि न तो
versionऔर न हीtagदिया गया है, तो नवीनतम संस्करण का उपयोग किया जाता है। - सॉफ़्ट-डिलीट किए गए संस्करण
410लौटाते हैं। - GitHub-समर्थित skill हैंडऑफ़ बाइट्स को प्रॉक्सी या मिरर नहीं करते। JSON प्रतिक्रिया में
sourceRef: "public-github",repo,commit,path,contentHash, औरarchiveUrlशामिल होते हैं; स्कैन/वर्तमान स्थिति एक गेट है और सफल पेलोड मेटाडेटा के रूप में शामिल नहीं होती। - डाउनलोड आँकड़े प्रति UTC दिन विशिष्ट पहचानों के रूप में गिने जाते हैं (API टोकन मान्य होने पर
userId, अन्यथा IP)।
प्रमाणीकरण एंडपॉइंट (Bearer टोकन)
सभी एंडपॉइंट के लिए आवश्यक है:
Authorization: Bearer clh_...GET /api/v1/whoami
टोकन सत्यापित करता है और उपयोगकर्ता हैंडल लौटाता है।
POST /api/v1/skills
नया संस्करण प्रकाशित करता है।
- वरीय:
multipart/form-data,payloadJSON +files[]ब्लॉब्स के साथ। files(storageId-आधारित) वाला JSON बॉडी भी स्वीकार किया जाता है।- वैकल्पिक पेलोड फ़ील्ड:
ownerHandle। मौजूद होने पर, API उस प्रकाशक को सर्वर की ओर से रिज़ॉल्व करता है और कर्ता के पास प्रकाशक पहुँच होना आवश्यक बनाता है। - वैकल्पिक पेलोड फ़ील्ड:
migrateOwner।ownerHandleके साथtrueहोने पर, किसी मौजूदा skill को उस स्वामी के पास स्थानांतरित किया जा सकता है, यदि कर्ता वर्तमान और लक्षित दोनों प्रकाशकों पर एडमिन/स्वामी हो। इस स्पष्ट सहमति के बिना, स्वामी परिवर्तन अस्वीकार कर दिए जाते हैं।
POST /api/v1/packages
code-plugin या bundle-plugin रिलीज़ प्रकाशित करता है।
- Bearer टोकन प्रमाणीकरण आवश्यक है।
multipart/form-dataआवश्यक है।- अनुमत फ़ॉर्म फ़ील्ड हैं
payload, दोहराए गएfilesब्लॉब्स, या एकclawpackटारबॉल संदर्भ।clawpackएक.tgzब्लॉब या upload-url प्रवाह द्वारा लौटाई गई स्टोरेज आईडी हो सकता है। चरणबद्ध स्टोरेज-आईडी प्रकाशनों में उस अपलोड URL के साथ लौटाया गयाclawpackUploadTicketभी शामिल होना चाहिए। - या तो
filesयाclawpackका उपयोग करें, एक ही अनुरोध में दोनों का कभी नहीं। - JSON बॉडी और कॉलर द्वारा दिए गए
payload.files/payload.artifactमेटाडेटा अस्वीकार किए जाते हैं। - प्रत्यक्ष multipart प्रकाशन अनुरोधों की सीमा 18MB है। ClawPack टारबॉल 120MB टारबॉल सीमा तक upload-url प्रवाह का उपयोग कर सकते हैं।
- वैकल्पिक पेलोड फ़ील्ड:
ownerHandle। मौजूद होने पर, केवल एडमिन उस स्वामी की ओर से प्रकाशित कर सकते हैं।
सत्यापन की मुख्य बातें:
familyकाcode-pluginयाbundle-pluginहोना आवश्यक है।- Plugin पैकेजों के लिए
openclaw.plugin.jsonआवश्यक है। ClawPack.tgzअपलोड में यहpackage/openclaw.plugin.jsonपर होना चाहिए। - कोड Plugin के लिए
package.json, स्रोत रिपॉज़िटरी मेटाडेटा, स्रोत कमिट मेटाडेटा, कॉन्फ़िग स्कीमा मेटाडेटा,openclaw.compat.pluginApi, औरopenclaw.build.openclawVersionआवश्यक हैं। openclaw.hostTargetsऔरopenclaw.environmentवैकल्पिक मेटाडेटा हैं।- केवल
openclawसंगठन प्रकाशक और वर्तमानopenclawसंगठन सदस्यों के व्यक्तिगत प्रकाशकofficialचैनल पर प्रकाशित कर सकते हैं। - किसी की ओर से किए गए प्रकाशन भी लक्षित स्वामी खाते के विरुद्ध आधिकारिक-चैनल पात्रता सत्यापित करते हैं।
DELETE /api/v1/skills/{slug} / POST /api/v1/skills/{slug}/undelete
किसी skill को सॉफ़्ट-डिलीट / पुनर्स्थापित करें (स्वामी, मॉडरेटर या एडमिन)।
वैकल्पिक JSON बॉडी:
{ "reason": "कानूनी समीक्षा लंबित होने के कारण मॉडरेशन हेतु रोका गया।" }मौजूद होने पर, reason को skill मॉडरेशन टिप्पणी के रूप में संग्रहीत किया जाता है और ऑडिट लॉग में कॉपी किया जाता है।
स्वामी द्वारा आरंभ किए गए सॉफ़्ट डिलीट स्लग को 30 दिनों के लिए आरक्षित रखते हैं, जिसके बाद
कोई अन्य प्रकाशक उस स्लग का दावा कर सकता है। यह समाप्ति लागू होने पर डिलीट प्रतिक्रिया में slugReservedUntil शामिल होता है।
मॉडरेटर/एडमिन द्वारा छिपाना और सुरक्षा निष्कासन इस प्रकार समाप्त नहीं होते।
डिलीट प्रतिक्रिया:
{ "ok": true, "slugReservedUntil": 1730000000000 }स्थिति कोड:
200: ठीक401: अनधिकृत403: निषिद्ध404: skill/उपयोगकर्ता नहीं मिला500: आंतरिक सर्वर त्रुटि
POST /api/v1/users/publisher
केवल एडमिन। सुनिश्चित करता है कि किसी हैंडल के लिए संगठन प्रकाशक मौजूद हो। यदि हैंडल अब भी किसी
पुराने साझा उपयोगकर्ता/व्यक्तिगत प्रकाशक की ओर संकेत करता है, तो एंडपॉइंट पहले उसे संगठन प्रकाशक में माइग्रेट करता है।
नव-निर्मित संगठन के लिए memberHandle दें; कार्यरत एडमिन को सदस्य के रूप में नहीं जोड़ा जाता।
memberRole का डिफ़ॉल्ट owner है।
- बॉडी:
{ "handle": "openclaw", "displayName": "OpenClaw", "memberHandle": "alice", "memberRole": "owner", "trusted": true } - प्रतिक्रिया:
{ "ok": true, "publisherId": "...", "handle": "openclaw", "created": true, "migrated": false, "trusted": true, "member": { "userId": "...", "handle": "alice", "role": "owner" } }
POST /api/v1/publishers
प्रमाणीकृत स्वयं-सेवा संगठन प्रकाशक निर्माण। नया संगठन प्रकाशक बनाता है और कॉलर को स्वामी के रूप में जोड़ता है। यह एंडपॉइंट मौजूदा उपयोगकर्ता/व्यक्तिगत हैंडल माइग्रेट नहीं करता और प्रकाशक को विश्वसनीय/आधिकारिक चिह्नित नहीं करता।
- बॉडी:
{ "handle": "opik", "displayName": "Opik" } - प्रतिक्रिया:
{ "ok": true, "publisherId": "...", "handle": "opik", "created": true, "trusted": false } - यदि हैंडल पहले से किसी प्रकाशक, उपयोगकर्ता या व्यक्तिगत प्रकाशक द्वारा उपयोग किया जा रहा हो, तो
409लौटाता है।
POST /api/v1/users/reserve
केवल एडमिन। रिलीज़ प्रकाशित किए बिना वास्तविक स्वामी के लिए रूट स्लग और पैकेज नाम आरक्षित करता है। पैकेज नाम बिना किसी रिलीज़ पंक्ति वाले निजी प्लेसहोल्डर पैकेज बन जाते हैं, ताकि वही स्वामी बाद में उस नाम में वास्तविक code-plugin या bundle-plugin रिलीज़ प्रकाशित कर सके।
- बॉडी:
{ "handle": "openclaw", "slugs": ["diffs"], "packageNames": ["@openclaw/diffs"], "reason": "reserved for official OpenClaw plugin" } - प्रतिक्रिया:
{ "ok": true, "succeeded": 2, "failed": 0, "results": [{ "kind": "slug", "name": "diffs", "ok": true, "action": "reserved" }] }
POST /api/v1/users/publisher-recovery
केवल एडमिन। Convex Auth खाता पंक्तियों को संपादित किए बिना सत्यापित प्रतिस्थापन GitHub OAuth प्रिंसिपल के लिए व्यक्तिगत प्रकाशक पुनर्प्राप्त करता है। अनुरोध में दोनों अपरिवर्तनीय GitHub प्रदाता खाता आईडी का उल्लेख होना चाहिए; परिवर्तनशील हैंडल केवल ऑपरेटर-सामना करने वाले गार्ड के रूप में उपयोग किए जाते हैं।
एंडपॉइंट का डिफ़ॉल्ट dry-run है। पुनर्प्राप्ति लागू करने के लिए कर्मचारियों द्वारा दोनों
GitHub प्रिंसिपल के बीच निरंतरता का स्वतंत्र रूप से सत्यापन करने के बाद dryRun: false और
confirmIdentityVerified: true आवश्यक हैं। यदि गंतव्य उपयोगकर्ता के वर्तमान व्यक्तिगत
प्रकाशक के पास skills, पैकेज या GitHub skill स्रोत हों, तो पुनर्प्राप्ति बंद स्थिति में विफल होती है।
पुनर्प्राप्ति, पुनर्प्राप्त प्रकाशक के skills, skill स्लग उपनामों, पैकेजों,
पैकेज इंस्पेक्टर चेतावनियों और व्युत्पन्न खोज डाइजेस्ट पंक्तियों के लिए पुराने ownerUserId फ़ील्ड भी माइग्रेट करती है, ताकि
प्रत्यक्ष-स्वामी पथ नई प्रकाशक प्राधिकृति से सहमत हों। पुनर्प्राप्त हैंडल का एक सक्रिय संरक्षित-हैंडल
आरक्षण भी प्रतिस्थापन उपयोगकर्ता को पुनः सौंप दिया जाता है, ताकि बाद का
प्रोफ़ाइल सिंक्रनाइज़ेशन पूर्व उपयोगकर्ता की प्रतिस्पर्धी प्राधिकृति पुनर्स्थापित न कर सके। प्रत्येक प्राथमिक तालिका
प्रति लागू लेनदेन 100 पंक्तियों तक सीमित है; बड़ी पुनर्प्राप्तियों को पहले पुनः आरंभ किए जा सकने वाले स्वामी माइग्रेशन का उपयोग करना चाहिए।
GitHub skill स्रोत प्रकाशक-स्कोप वाले होते हैं और पुनर्लिखित किए जाने के बजाय जाँचे गए के रूप में रिपोर्ट किए जाते हैं।
- बॉडी:
{ "handle": "gingiris", "nextUserHandle": "gingiris-1031", "previousGitHubProviderAccountId": "123", "nextGitHubProviderAccountId": "456", "reason": "Verified account continuity for issue #2555", "confirmIdentityVerified": true, "dryRun": false } - प्रतिक्रिया:
{ "ok": true, "dryRun": false, "recovered": true, "publisherId": "...", "handle": "gingiris", "previousUser": { "userId": "...", "handle": "gingiris", "nextHandle": "gingiris-recovered", "githubProviderAccountId": "123", "authAccountCount": 1 }, "nextUser": { "userId": "...", "handle": "gingiris-1031", "nextHandle": "gingiris", "githubProviderAccountId": "456", "authAccountCount": 1 }, "retiredPersonalPublisher": null, "resourceOwnerMigration": { "limitPerTable": 100, "skills": 1, "skillSlugAliases": 1, "packages": 0, "packageInspectorWarnings": 0, "githubSourcesChecked": 1, "handleReservations": 1 }, "identityVerified": true, "reason": "Verified account continuity for issue #2555" }
स्वामी स्लग प्रबंधन एंडपॉइंट
POST /api/v1/skills/{slug}/rename- बॉडी:
{ "newSlug": "new-canonical-slug" } - प्रतिक्रिया:
{ "ok": true, "slug": "new-canonical-slug", "previousSlug": "old-slug" }
- बॉडी:
POST /api/v1/skills/{slug}/merge- बॉडी:
{ "targetSlug": "canonical-target-slug" } - प्रतिक्रिया:
{ "ok": true, "sourceSlug": "old-slug", "targetSlug": "canonical-target-slug" }
- बॉडी:
टिप्पणियाँ:
- दोनों एंडपॉइंट के लिए API टोकन प्रमाणीकरण आवश्यक है और वे केवल skill स्वामी के लिए काम करते हैं।
renameपिछले स्लग को रीडायरेक्ट उपनाम के रूप में सुरक्षित रखता है।mergeस्रोत सूची को छिपाता है और स्रोत स्लग को लक्षित सूची पर रीडायरेक्ट करता है।
स्वामित्व हस्तांतरण एंडपॉइंट
POST /api/v1/skills/{slug}/transfer- बॉडी:
{ "toUserHandle": "target_handle", "message": "optional" } - प्रतिक्रिया:
{ "ok": true, "transferId": "skillOwnershipTransfers:...", "toUserHandle": "target_handle", "expiresAt": 1730000000000 }
- बॉडी:
POST /api/v1/skills/{slug}/transfer/acceptPOST /api/v1/skills/{slug}/transfer/rejectPOST /api/v1/skills/{slug}/transfer/cancel- प्रतिक्रिया (स्वीकार/अस्वीकार/रद्द):
{ "ok": true, "skillSlug": "demo-skill?" }
- प्रतिक्रिया (स्वीकार/अस्वीकार/रद्द):
GET /api/v1/transfers/incomingGET /api/v1/transfers/outgoing- प्रतिक्रिया संरचना:
{ "transfers": [{ "_id": "...", "skill": { "slug": "demo", "displayName": "Demo" }, "fromUser"|"toUser": { "handle": "..." }, "message": "...", "requestedAt": 0, "expiresAt": 0 }] }
- प्रतिक्रिया संरचना:
POST /api/v1/users/ban
किसी उपयोगकर्ता को प्रतिबंधित करें और उसके स्वामित्व वाले skills स्थायी रूप से हटाएँ (केवल मॉडरेटर/एडमिन)।
बॉडी:
{ "handle": "user_handle", "reason": "वैकल्पिक प्रतिबंध कारण" }या
{ "userId": "users_...", "reason": "वैकल्पिक प्रतिबंध कारण" }प्रतिक्रिया:
{ "ok": true, "alreadyBanned": false, "deletedSkills": 3 }POST /api/v1/users/unban
किसी उपयोगकर्ता का प्रतिबंध हटाएँ और पात्र skills पुनर्स्थापित करें (केवल एडमिन)।
बॉडी:
{ "handle": "user_handle", "reason": "वैकल्पिक प्रतिबंध हटाने का कारण" }या
{ "userId": "users_...", "reason": "वैकल्पिक प्रतिबंध हटाने का कारण" }प्रतिक्रिया:
{ "ok": true, "alreadyUnbanned": false, "restoredSkills": 3 }POST /api/v1/users/reclassify-ban
प्रतिबंध हटाए या सामग्री पुनर्स्थापित किए बिना किसी मौजूदा प्रतिबंध का संग्रहीत कारण बदलें
(केवल एडमिन)। जब तक dryRun, false न हो, डिफ़ॉल्ट dry-run है।
बॉडी:
{ "handle": "user_handle", "reason": "थोक प्रकाशन स्पैम", "dryRun": true }या
{ "userId": "users_...", "reason": "थोक प्रकाशन स्पैम", "dryRun": false }प्रतिक्रिया:
{ "ok": true, "dryRun": false, "userId": "users_...", "handle": "user_handle", "previousReason": "मैलवेयर स्वतः-प्रतिबंध", "nextReason": "थोक प्रकाशन स्पैम", "changed": true}POST /api/v1/users/role
उपयोगकर्ता भूमिका बदलें (केवल एडमिन)।
बॉडी:
{ "handle": "user_handle", "role": "moderator" }या
{ "userId": "users_...", "role": "admin" }प्रतिक्रिया:
{ "ok": true, "role": "moderator" }GET /api/v1/users
उपयोगकर्ताओं को सूचीबद्ध करें या खोजें (केवल एडमिन)।
क्वेरी पैरामीटर:
q(वैकल्पिक): खोज क्वेरीquery(वैकल्पिक):qका उपनामlimit(वैकल्पिक): अधिकतम परिणाम (डिफ़ॉल्ट 20, अधिकतम 200)
प्रतिक्रिया:
{ "items": [ { "userId": "users_...", "handle": "user_handle", "displayName": "उपयोगकर्ता", "name": "उपयोगकर्ता", "role": "moderator" } ], "total": 1}POST /api/v1/stars/{slug} / DELETE /api/v1/stars/{slug}
Bookmark जोड़ें/हटाएँ। संगतता के लिए पुराना stars रूट और प्रतिक्रिया फ़ील्ड नाम बने हुए हैं।
दोनों एंडपॉइंट idempotent हैं।
प्रतिक्रियाएँ:
{ "ok": true, "starred": true, "alreadyStarred": false }{ "ok": true, "unstarred": true, "alreadyUnstarred": false }पुराने CLI एंडपॉइंट (अप्रचलित)
पुराने CLI संस्करणों के लिए अब भी समर्थित:
GET /api/cli/whoamiPOST /api/cli/upload-urlPOST /api/cli/publishPOST /api/cli/telemetry/installPOST /api/cli/skill/deletePOST /api/cli/skill/undelete
हटाने की योजना के लिए DEPRECATIONS.md देखें।
POST /api/cli/upload-url, uploadUrl और uploadTicket लौटाता है। ऐसे पैकेज
प्रकाशन जो ClawPack टारबॉल को चरणबद्ध करते हैं, उन्हें परिणामी स्टोरेज आईडी
clawpack के रूप में और लौटाया गया टिकट clawpackUploadTicket के रूप में भेजना आवश्यक है।
रजिस्ट्री खोज (/.well-known/clawhub.json)
CLI साइट से रजिस्ट्री/प्रमाणीकरण सेटिंग्स खोज सकता है:
/.well-known/clawhub.json(JSON, वरीय)/.well-known/clawdhub.json(पुराना)
स्कीमा:
{ "apiBase": "https://clawhub.ai", "authBase": "https://clawhub.ai", "minCliVersion": "0.0.5" }यदि आप स्वयं होस्ट करते हैं, तो यह फ़ाइल सर्व करें (या CLAWHUB_REGISTRY स्पष्ट रूप से सेट करें; पुराना CLAWDHUB_REGISTRY)।