Baslangic
HTTP API
HTTP API
Temel URL: https://clawhub.ai (varsayılan).
Tüm v1 yolları /api/v1/... altındadır.
Eski /api/... ve /api/cli/... uyumluluk için korunmaktadır (bkz. DEPRECATIONS.md).
OpenAPI: /api/v1/openapi.json.
Herkese açık kataloğun yeniden kullanımı
Üçüncü taraf dizinler, ClawHub Skills öğelerini listelemek veya aramak için herkese açık okuma uç noktalarını kullanabilir. Lütfen sonuçları önbelleğe alın, 429/Retry-After kurallarına uyun, kullanıcıları standart ClawHub listesine (https://clawhub.ai/<owner>/skills/<slug>) geri yönlendirin ve ClawHub'ın üçüncü taraf siteyi desteklediği izlenimini vermekten kaçının. Gizli, özel veya moderasyon tarafından engellenmiş içerikleri herkese açık API yüzeyinin dışında yansıtmaya çalışmayın.
Web kısa ad kısayolları kayıt defteri aileleri arasında çözümlenir, ancak API istemcileri yol önceliğini yeniden oluşturmak yerine okuma uç noktalarının döndürdüğü standart URL'leri kullanmalıdır.
Hız sınırları
Uygulama modeli:
-
Anonim istekler: IP başına uygulanır.
-
Kimliği doğrulanmış istekler (geçerli Bearer belirteci): kullanıcı kovası başına uygulanır.
-
Belirteç eksik veya geçersizse davranış, IP tabanlı uygulamaya geri döner.
-
Kimliği doğrulanmış yazma uç noktaları, sunucu nedeni biliyorsa yalnızca
Unauthorizeddöndürmemelidir. Eksik belirteçler, geçersiz/iptal edilmiş belirteçler ve silinmiş/yasaklanmış/devre dışı bırakılmış hesapların her biri, CLI istemcilerinin kullanıcılara kendilerini neyin engellediğini bildirebilmesi için eyleme geçirilebilir metin almalıdır. -
Okuma: IP başına 3000/dk., anahtar başına 12000/dk.
-
Yazma: IP başına 300/dk., anahtar başına 3000/dk.
-
İndirme: IP başına 1200/dk., anahtar başına 6000/dk. (indirme uç noktaları)
Üstbilgiler:
- Eski uyumluluk:
X-RateLimit-Limit,X-RateLimit-Reset - Standartlaştırılmış:
RateLimit-Limit,RateLimit-Reset 429durumunda:X-RateLimit-Remaining: 0veRateLimit-Remaining: 0429durumunda:Retry-After
Üstbilgi anlamları:
X-RateLimit-Reset: mutlak Unix epoch saniyesiRateLimit-Reset: sıfırlamaya kadar geçen saniye (gecikme)X-RateLimit-Remaining/RateLimit-Remaining: mevcut olduğunda kalan kesin bütçe. Parçalanmış başarılı istekler, yaklaşık bir genel değer döndürmek yerine bu üstbilgiyi atlar.Retry-After:429durumunda yeniden denemeden önce beklenecek saniye (gecikme)
Örnek 429 yanıtı:
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 Hız sınırı aşıldıİstemci rehberi:
Retry-Aftermevcutsa yeniden denemeden önce belirtilen saniye kadar bekleyin.- Eş zamanlı yeniden denemeleri önlemek için rastgele sapmalı geri çekilme kullanın.
Retry-AftereksikseRateLimit-Resetdeğerine geri dönün (veyaX-RateLimit-Resetüzerinden hesaplayın).
IP kaynağı:
cf-connecting-ipdahil güvenilir istemci IP üstbilgilerini yalnızca dağıtım, güvenilir iletilmiş üstbilgileri açıkça etkinleştirdiğinde kullanır.- ClawHub, istemci IP'lerini uçta belirlemek için güvenilir iletme üstbilgilerini kullanır.
- Güvenilir bir istemci IP'si yoksa anonim istekler, yalnızca hız sınırı türüne göre kapsamlandırılmış yedek kovaları kullanır. Bu yedek kovalar; çağıran tarafından sağlanan yolları, kısa adları, paket adlarını, sürümleri, sorgu dizelerini veya diğer yapıt parametrelerini içermez.
Hata yanıtları
Herkese açık v1 hata yanıtları content-type: text/plain; charset=utf-8 ile düz metindir.
Buna doğrulama hataları (400), eksik herkese açık kaynaklar (404), kimlik doğrulama ve
izin hataları (401/403), hız sınırları (429) ve engellenmiş indirmeler dahildir. İstemciler
yanıt gövdesini insanlar tarafından okunabilir bir dize olarak okumalıdır. Bilinmeyen sorgu parametreleri
uyumluluk için yok sayılır, ancak geçersiz değerlere sahip tanınan sorgu parametreleri
400 döndürür.
Herkese açık uç noktalar (kimlik doğrulama yok)
GET /api/v1/search
Sorgu parametreleri:
q(gerekli): sorgu dizesilimit(isteğe bağlı): tam sayıhighlightedOnly(isteğe bağlı): öne çıkarılan Skills öğelerine göre filtrelemek içintruenonSuspiciousOnly(isteğe bağlı): şüpheli (flagged.suspicious) Skills öğelerini gizlemek içintruenonSuspicious(isteğe bağlı):nonSuspiciousOnlyiçin eski takma ad
Yanıt:
{ "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" } } ]}Notlar:
- Sonuçlar ilgi sırasına göre döndürülür (gömme benzerliği + tam kısa ad/ad belirteci destekleri + küçük bir popülerlik önceliği).
- İlgi, popülerlikten daha güçlüdür. Kesin bir kısa ad veya görünen ad belirteci eşleşmesi, etkileşimi çok daha güçlü olan daha gevşek bir eşleşmeden üst sırada yer alabilir.
- ASCII metni, sözcük ve noktalama sınırlarında belirteçlere ayrılır. Örneğin
personal-mapbağımsız birmapbelirteci içerirkenamap-jsapi-skill;amap,jsapiveskilliçerir; bu nedenlemaparaması,personal-mapiçinamap-jsapi-skilldeğerinden daha güçlü bir sözcüksel eşleşme sağlar. - Popülerlik logaritmik olarak ölçeklendirilir ve sınırlandırılır. Yüksek etkileşimli Skills öğeleri, sorgu metniyle eşleşme daha zayıf olduğunda daha alt sırada yer alabilir.
- Şüpheli veya gizli moderasyon durumu, çağıran filtrelerine ve mevcut moderasyon durumuna bağlı olarak bir Skill öğesini herkese açık aramadan kaldırabilir.
Yayıncıların bulunabilirliğine ilişkin rehber:
- Kullanıcıların tam olarak arayacağı terimleri görünen ada, özete ve etiketlere ekleyin. Bağımsız bir kısa ad belirtecini yalnızca korumak istediğiniz kararlı bir kimlikse kullanın.
- Yeni kısa ad uzun vadede daha iyi bir standart ad olmadığı sürece yalnızca tek bir sorgunun peşinden gitmek için kısa adı değiştirmeyin. Eski kısa adlar yönlendirme takma adlarına dönüşür, ancak standart URL, görüntülenen kısa ad ve gelecekteki arama özetleri yeni kısa adı kullanır.
- Yeniden adlandırma takma adları, kayıt defteri üzerinden çözümlenen eski URL'ler ve kurulumlar için çözümlemeyi korur; ancak arama sıralaması, yeniden adlandırma dizine eklendikten sonra standart Skill meta verilerine dayanır. Mevcut istatistikler Skill öğesiyle birlikte kalır.
- Bir Skill öğesi beklenmedik biçimde görünmüyorsa sıralamayla ilgili meta verileri değiştirmeden önce oturum açmış durumdayken
clawhub inspect @owner/slugile moderasyon durumunu kontrol edin.
GET /api/v1/skills
Sorgu parametreleri:
limit(isteğe bağlı): tam sayı (1–200)cursor(isteğe bağlı):trendingdışındaki herhangi bir sıralama için sayfalama imlecisort(isteğe bağlı):updated(varsayılan),recommended(takma ad:default),createdAt(takma ad:newest),downloads,stars(takma ad:rating), eski kurulum takma adlarıinstallsCurrent/installs/installsAllTime,downloadsdeğerine eşlenir,trendingnonSuspiciousOnly(isteğe bağlı): şüpheli (flagged.suspicious) Skills öğelerini gizlemek içintruenonSuspicious(isteğe bağlı):nonSuspiciousOnlyiçin eski takma ad
Geçersiz sort değerleri 400 döndürür.
Notlar:
recommended, etkileşim ve güncellik sinyallerini kullanır.trending, son 7 gündeki kurulumlara göre sıralar (telemetri tabanlı).createdAt, yeni Skill taramaları için kararlıdır; mevcut Skills öğeleri yeniden yayımlandığındaupdateddeğişir.nonSuspiciousOnly=trueolduğunda imleç tabanlı sıralamalar, şüpheli Skills öğeleri sayfa alındıktan sonra filtrelendiği için bir sayfadalimitöğeden daha azını döndürebilir.- Mevcut olduğunda sayfalamaya devam etmek için
nextCursorkullanın. Kısa bir sayfa tek başına sonuçların sona erdiği anlamına gelmez.
Yanıt:
{ "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}
Yanıt:
{ "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 }}Notlar:
- Sahibin yeniden adlandırma/birleştirme akışlarıyla oluşturulan eski kısa adlar standart Skill öğesine çözümlenir.
metadata.os: Skill ön bilgilerinde belirtilen işletim sistemi kısıtlamaları (ör.["macos"],["linux"]). Belirtilmemişsenull.metadata.systems: Nix sistem hedefleri (ör.["aarch64-darwin", "x86_64-linux"]). Belirtilmemişsenull.- Skill öğesinin platform meta verisi yoksa
metadata,nulldeğeridir. moderationyalnızca Skill öğesi işaretlendiğinde veya sahibi görüntülediğinde dahil edilir.
GET /api/v1/skills/{slug}/moderation
Yapılandırılmış moderasyon durumunu döndürür.
Yanıt:
{ "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": "" } ] }}Notlar:
- Sahipler ve moderatörler, gizli Skills öğelerinin moderasyon ayrıntılarına erişebilir.
- Herkese açık çağıranlar yalnızca önceden işaretlenmiş görünür Skills öğeleri için
200alır. - Kanıtlar herkese açık çağıranlar için sansürlenir ve ham parçacıkları yalnızca sahipler/moderatörler için içerir.
POST /api/v1/skills/{slug}/report
Bir Skill öğesini moderatör incelemesi için bildirin. Bildirimler Skill düzeyindedir, isteğe bağlı olarak bir sürüme bağlanır ve Skill bildirim kuyruğuna aktarılır.
Kimlik doğrulama:
- Bir API belirteci gerektirir.
İstek:
{ "reason": "Şüpheli kurulum adımı", "version": "1.2.3" }Yanıt:
{ "ok": true, "reported": true, "alreadyReported": false, "reportId": "skillReports:...", "skillId": "skills:...", "reportCount": 1}GET /api/v1/skills/-/reports
Skill bildirimlerini almak için moderatör/yönetici uç noktası.
Sorgu parametreleri:
status(isteğe bağlı):open(varsayılan),confirmed,dismissedveyaalllimit(isteğe bağlı): tam sayı (1-200)cursor(isteğe bağlı): sayfalama imleci
Yanıt:
{ "items": [ { "reportId": "skillReports:...", "skillId": "skills:...", "skillVersionId": "skillVersions:...", "slug": "gifgrep", "displayName": "GifGrep", "version": "1.2.3", "reason": "Şüpheli yükleme adımı", "status": "open", "createdAt": 1730000000000, "reporter": { "userId": "users:...", "handle": "reporter", "displayName": "Bildiren" }, "triagedAt": null, "triagedBy": null, "triageNote": null } ], "nextCursor": null, "done": true}POST /api/v1/skills/-/reports/{reportId}/triage
Skill raporlarını çözümlemeye veya yeniden açmaya yönelik moderatör/yönetici uç noktası.
İstek:
{ "status": "confirmed", "note": "İncelendi ve etkilenen sürüm gizlendi.", "finalAction": "hide" }note, confirmed ve dismissed için gereklidir; status
yeniden open olarak ayarlanırken atlanabilir. Skill'i aynı denetlenebilir iş akışında
gizlemek için triyaj edilmiş bir raporla finalAction: "hide" iletin.
GET /api/v1/skills/{slug}/versions
Sorgu parametreleri:
limit(isteğe bağlı): tam sayıcursor(isteğe bağlı): sayfalama imleci
GET /api/v1/skills/{slug}/versions/{version}
Sürüm meta verilerini ve dosya listesini döndürür.
version.security, mevcut olduğunda normalleştirilmiş tarama doğrulama durumunu ve tarayıcı ayrıntılarını (VirusTotal + LLM) içerir.
GET /api/v1/skills/{slug}/scan
Bir skill sürümünün güvenlik taraması doğrulama ayrıntılarını döndürür.
Sorgu parametreleri:
version(isteğe bağlı): belirli sürüm dizesi.tag(isteğe bağlı): etiketlenmiş bir sürümü çözümle (örneğinlatest).
Notlar:
- Ne
versionne detagsağlanmışsa en son sürümü kullanır. - Normalleştirilmiş doğrulama durumunun yanı sıra tarayıcıya özgü ayrıntıları içerir.
security.hasScanResult, yalnızca bir tarayıcı kesin bir karar (clean,suspiciousveyamalicious) ürettiğindetrueolur.moderation, en son sürümden türetilmiş güncel bir skill düzeyi moderasyon anlık görüntüsüdür.- Geçmiş bir sürümü sorgularken
moderationvesecuritydeğerlerini aynı sürüm bağlamı olarak değerlendirmeden öncemoderation.matchesRequestedVersionvemoderation.sourceVersiondeğerlerini kontrol edin.
POST /api/v1/skills/-/scan
Yeni ClawScan işleri için kimliği doğrulanmış gönderim uç noktası.
Yerel yükleme taramaları artık desteklenmemektedir. multipart/form-data veya
{ "source": { "kind": "upload" } } kullanan istekler 410 döndürür.
Yayımlanmış taramalar JSON kullanır:
{ "source": { "kind": "published", "slug": "gifgrep", "version": "1.2.3" }, "update": false}Notlar:
- Tarama isteği yükleri ve indirilebilir raporlar, saklama süresinin ardından tarama isteği deposundan silinir.
- Yayımlanmış taramalar, sahip/yayımcı yönetim erişimi veya platform moderatörü/yöneticisi yetkisi gerektirir.
- Yayımlanmış taramalar yalnızca
update: trueolduğunda ve tarama başarıyla tamamlandığında geri yazar. - Yanıt,
{ "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." } }ile birlikte202olur. - Tarama işleri eşzamansızdır. Manuel tarama isteklerine normal yayımlama/geriye dönük doldurma işlerinden önce öncelik verilir ancak tamamlanma yine de çalışan kullanılabilirliğine bağlıdır.
GET /api/v1/skills/-/scan/{scanId}
Gönderilmiş bir tarama için kimliği doğrulanmış yoklama uç noktası.
- Kuyrukta/çalışıyor/başarılı/başarısız durumunu döndürür.
- İstemcilerin isteğin önünde kaç öncelikli manuel tarama bulunduğunu gösterebilmesi için kuyruktayken
queue.queuedAheadvequeue.positiondöndürür. Çok büyük kuyruklar sınırlandırılır vequeuedAheadIsEstimate: trueile bildirilir. - Mevcut olduğunda
report;clawscan,skillspector,staticAnalysisvevirustotalbölümlerini içerir. - Başarısız tarama işleri,
lastErrorile birliktestatus: "failed"döndürür.
GET /api/v1/skills/-/scan/{scanId}/download
Kimliği doğrulanmış rapor arşivi uç noktası.
- Başarılı bir tarama gerektirir; sonlanmamış taramalar
409döndürür. manifest.json,clawscan.json,skillspector.json,static-analysis.json,virustotal.jsonveREADME.mdiçeren bir ZIP döndürür.
GET /api/v1/skills/-/scan/download/{name}?version=<version>&kind=skill|plugin
Gönderilmiş sürümler için kimliği doğrulanmış, depolanmış rapor arşivi uç noktası.
- Skill veya plugin için sahip/yayımcı yönetim erişimi ya da platform moderatörü/yöneticisi yetkisi gerektirir.
- Engellenmiş veya gizlenmiş sürümler dahil, gönderilen tam sürümün depolanmış tarama sonuçlarını döndürür.
kindvarsayılan olarakskilldeğerini alır; plugin/paket taramaları içinkind=pluginkullanın.- Tarama isteği indirmeleriyle aynı ZIP yapısını döndürür.
POST /api/v1/skills/-/scan/batch
Yalnızca yöneticilere açık standart toplu yeniden tarama rotası. Eski POST /api/v1/skills/-/rescan-batch ile aynı yük yapısını kabul eder.
POST /api/v1/skills/-/scan/batch/status
Yalnızca yöneticilere açık standart toplu durum rotası. { "jobIds": ["..."] } değerini kabul eder ve eski POST /api/v1/skills/-/rescan-batch/status ile aynı toplu sayaçları döndürür.
GET /api/v1/skills/{slug}/verify
clawhub skill verify tarafından kullanılan Skill Card doğrulama zarfını döndürür.
Sorgu parametreleri:
version(isteğe bağlı): belirli sürüm dizesi.tag(isteğe bağlı): etiketlenmiş bir sürümü çözümle (örneğinlatest).
Notlar:
ok, yalnızca seçilen sürümde oluşturulmuş bir Skill Card bulunduğunda, sürüm moderasyon tarafından kötü amaçlı yazılım nedeniyle engellenmediğinde ve ClawScan doğrulaması temiz olduğundatrueolur.- Skill kimliği, yayımcı kimliği ve seçilen sürüm meta verileri, kabuk otomasyonunun iç içe sarmalayıcıları açmadan bunları okuyabilmesi için üst düzey zarf alanlarıdır (
slug,displayName,publisherHandle,version,resolvedFrom,tag,createdAt). security, üst düzey ClawScan/güvenlik kararıdır. Otomasyon,ok,decision,reasonsvesecurity.statusdeğerlerini temel almalıdır.security.signals;staticScan,virusTotalveskillSpectorgibi destekleyici tarayıcı kanıtlarını içerir.security.signals.dependencyRegistry, v1 yanıt uyumluluğu için korunur ancak bağımlılık kayıt defteri varlık tarayıcısı kullanımdan kaldırılmıştır ve bu anahtar her zamannullolur.provenance, yalnızca ClawHub yayımlama veya içe aktarma sırasında bir GitHub deposunu/referansını/işlemesini/yolunu çözümleyip depoladığındaserver-resolved-github-importolur; aksi takdirdeunavailableolur.
POST /api/v1/skills/-/security-verdicts
Tam skill sürümlerinin güncel, kompakt güvenlik kararlarını döndürür. Bu koleksiyon uç noktası, OpenClaw Control UI gibi görüntülemesi gereken kurulu ClawHub skill sürümlerini zaten bilen istemciler için tasarlanmıştır.
İstek:
{ "items": [{ "slug": "gifgrep", "version": "1.2.3" }]}Notlar:
items, 1-100 benzersiz{ slug, version }çifti içermelidir.- Sonuçlar öğe bazındadır; eksik tek bir skill veya sürüm tüm yanıtın başarısız olmasına neden olmaz.
- Yanıt yalnızca güvenlik verilerini içerir. Skill Card verilerini, oluşturulmuş kart durumunu, yapıt dosyası listelerini veya ayrıntılı tarayıcı yüklerini içermez.
security.signalsyalnızca durum düzeyinde destekleyici kanıt içerir; tüm tarayıcı ayrıntıları için/scanveya ClawHub güvenlik denetimi sayfasını kullanın.security.signals.dependencyRegistry, v1 yanıt uyumluluğu için korunur ancak bağımlılık kayıt defteri varlık tarayıcısı kullanımdan kaldırılmıştır ve bu anahtar her zamannullolur.- Skill Card'ın bulunmaması bu uç noktanın
ok,decisionveyareasonsdeğerlerini etkilemez; istemciler kart içeriğine ihtiyaç duyduklarında kuruluskill-card.mddeğerini yerel olarak okumalıdır. - Tek bir skill için Skill Card doğrulama zarfına ihtiyaç duyduğunuzda
/verify, oluşturulmuş kart Markdown'una ihtiyaç duyduğunuzda/cardve ayrıntılı tarayıcı verilerine ihtiyaç duyduğunuzda/scankullanın.
Yanıt:
{ "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": "Sürüm bulunamadı" }, "security": null } ]}GET /api/v1/skills/{slug}/file
Depolanan dosyanın tam baytlarını indirme olarak döndürür. Sınırlandırılmış, kaçış karakterleri uygulanmış
metin önizlemesi istemek için preview=1 ekleyin; geçerli UTF-8 baytlarına sahip tüm dosyalar,
uzantısından veya MIME meta verilerinden bağımsız olarak önizlenebilir.
Sorgu parametreleri:
path(gerekli)version(isteğe bağlı)tag(isteğe bağlı)preview=1(isteğe bağlı; baytlar geçerli UTF-8 değilsetext/plainveya415döndürür)
Notlar:
- Varsayılan olarak en son sürümü kullanır.
- Ham indirme sınırı: 10MB.
- Metin önizleme sınırı: 200KB.
GET /api/v1/packages
Şunlar için birleşik katalog uç noktası:
- skill'ler
- kod plugin'leri
- paket plugin'leri
Sorgu parametreleri:
limit(isteğe bağlı): tam sayı (1–100)cursor(isteğe bağlı): sayfalama imlecifamily(isteğe bağlı):skill,code-pluginveyabundle-pluginchannel(isteğe bağlı):official,communityveyaprivateisOfficial(isteğe bağlı):trueveyafalsesort(isteğe bağlı):updated(varsayılan),recommended,trending,downloads, eski takma adinstallscategory(isteğe bağlı): plugin kategori filtresi. Yalnızca istek plugin paketleriyle sınırlandırıldığında desteklenir (/api/v1/plugins,/api/v1/code-plugins,/api/v1/bundle-pluginsveyafamily=code-plugin/family=bundle-pluginiçeren paket uç noktaları). Denetimli kategoriler ve eski v1 filtre takma adlarıGET /api/v1/pluginsaltında belgelenmiştir.
Notlar:
family,channel,isOfficial,featured,highlightedOnlyveyasortiçin geçersiz değerler400döndürür. Bilinmeyen sorgu parametreleri yok sayılır.GET /api/v1/code-pluginsveGET /api/v1/bundle-plugins, sabit aile takma adları olarak kalır.- Skill girdileri skill kayıt defteri tarafından desteklenmeye devam eder ve yine yalnızca
POST /api/v1/skillsaracılığıyla yayımlanabilir. POST /api/v1/packageshâlâ yalnızca kod plugin'i ve paket plugin'i sürümleri içindir.- Anonim çağıranlar yalnızca genel paket kanallarını görür.
- Kimliği doğrulanmış çağıranlar, liste/arama sonuçlarında üyesi oldukları yayımcılara ait özel paketleri görebilir.
channel=privateyalnızca kimliği doğrulanmış çağıranın okuyabildiği paketleri döndürür.
GET /api/v1/packages/search
Skill'ler ve plugin paketleri genelinde birleşik katalog araması.
Sorgu parametreleri:
q(zorunlu): sorgu dizesilimit(isteğe bağlı): tam sayı (1–100)family(isteğe bağlı):skill,code-pluginveyabundle-pluginchannel(isteğe bağlı):official,communityveyaprivateisOfficial(isteğe bağlı):trueveyafalsecategory(isteğe bağlı): plugin kategorisi filtresi. Yalnızca istek plugin paketleriyle sınırlandırıldığında desteklenir. Denetlenen kategoriler ve eski v1 filtre takma adlarıGET /api/v1/pluginsaltında belgelenmiştir.
Notlar:
family,channel,isOfficial,featuredveyahighlightedOnlyiçin geçersiz değerler400döndürür. Bilinmeyen sorgu parametreleri yok sayılır.- Anonim çağıranlar yalnızca herkese açık paket kanallarını görür.
- Kimliği doğrulanmış çağıranlar, üyesi oldukları yayıncılara ait özel paketlerde arama yapabilir.
channel=privateyalnızca kimliği doğrulanmış çağıranın okuyabildiği paketleri döndürür.
GET /api/v1/plugins
Kod plugini ve paket plugini paketlerinde yalnızca pluginlere yönelik katalog taraması.
Sorgu parametreleri:
limit(isteğe bağlı): tam sayı (1-100)cursor(isteğe bağlı): sayfalama imleciisOfficial(isteğe bağlı):trueveyafalsesort(isteğe bağlı):recommended(varsayılan),trending,downloads,updated, eski takma adinstallscategory(isteğe bağlı): plugin kategorisi filtresi. Geçerli değerler:channels,models,memory,context,voice,media,web,tools,runtime,gateway,security,other.
Eski v1 filtre takma adları okuma uç noktalarında kabul edilmeye devam eder:
mcp-tooling,dataveautomation,toolsolarak çözümlenir.observabilityvedeployment,gatewayolarak çözümlenir.dev-tools,runtimeolarak çözümlenir.
trending, yedi günlük kurulum/indirme liderlik tablosudur ve tüm zamanların toplamlarını kullanmaz.
Birleşik /api/v1/packages uç noktasında yalnızca pluginlere yöneliktir; Skills kataloğu için
/api/v1/skills?sort=trending kullanın.
Eski takma adlar, saklanan veya yazar tarafından bildirilen kategori değerleri olarak kabul edilmez.
GET /api/v1/skills/export
Çevrimdışı analiz için en son herkese açık Skills öğelerinin toplu dışa aktarımı.
Kimlik doğrulama:
- API tokeni zorunludur.
Sorgu parametreleri:
startDate(zorunlu): SkillupdatedAtiçin Unix milisaniye alt sınırı.endDate(zorunlu): SkillupdatedAtiçin Unix milisaniye üst sınırı.limit(isteğe bağlı): tam sayı (1-250), varsayılan250.cursor(isteğe bağlı): önceki yanıttan alınan sayfalama imleci.
Yanıt:
- Gövde: ZIP arşivi.
- Dışa aktarılan her Skill öğesinin kökü
{publisher}/{slug}/konumundadır. - Barındırılan Skills öğeleri, saklanan en son sürüm dosyalarını içerir ve
_manifest.jsoniçindesourceRef: "public-clawhub"ile listelenir. cleanveyasuspicioustaraması bulunan güncel GitHub destekli Skills öğeleri;_source_handoff.jsoniçindesourceRef: "public-github", depo, commit, yol, içerik karması ve arşiv URL'siyle yer alır. ClawHub tarafından barındırılan kaynak dosyalarını içermezler.- Her Skill öğesi
_export_skill_meta.jsoniçerir. _manifest.jsonher zaman ZIP kökünde yer alır._errors.json, tek tek Skills öğeleri veya dosyalar dışa aktarılamadığında eklenir.
Başlıklar:
X-Next-CursorX-Has-MoreX-Total-ReturnedX-Date-RangeX-Export-Errors
GET /api/v1/plugins/export
Çevrimdışı analiz için en son herkese açık plugin sürümlerinin toplu dışa aktarımı.
Kimlik doğrulama:
- API tokeni zorunludur.
Sorgu parametreleri:
startDate(zorunlu): PluginupdatedAtiçin Unix milisaniye alt sınırı.endDate(zorunlu): PluginupdatedAtiçin Unix milisaniye üst sınırı.limit(isteğe bağlı): tam sayı (1-250), varsayılan250.cursor(isteğe bağlı): önceki yanıttan alınan sayfalama imleci.family(isteğe bağlı):code-pluginveyabundle-plugin. Atlanması, her iki plugin ailesi anlamına gelir.
Yanıt:
- Gövde: ZIP arşivi.
- Dışa aktarılan her pluginin kökü
{family}/{packageName}/konumundadır. - Dışa aktarılan her plugin, en son sürümün saklanan dosyalarını içerir.
- Plugin başına dışa aktarma meta verileri
__clawhub_export/{family}/{packageName}/plugin_meta.jsonkonumunda saklanır. _manifest.jsonher zaman ZIP kökünde yer alır._errors.json, tek tek pluginler veya dosyalar dışa aktarılamadığında eklenir.
Başlıklar:
X-Next-CursorX-Has-MoreX-Total-ReturnedX-Date-RangeX-Export-Errors
GET /api/v1/plugins/search
Kod plugini ve paket plugini paketlerinde yalnızca pluginlere yönelik arama.
Sorgu parametreleri:
q(zorunlu): sorgu dizesilimit(isteğe bağlı): tam sayı (1-100)isOfficial(isteğe bağlı):trueveyafalsecategory(isteğe bağlı): plugin kategorisi filtresi. Geçerli değerler:channels,models,memory,context,voice,media,web,tools,runtime,gateway,security,other.
Notlar:
GET /api/v1/pluginsaltında belgelenen eski v1 filtre takma adları da kabul edilir.- Kategori filtreleme, arama sorgusunun yeniden yazılması değil, plugin kategori özeti satırlarıyla desteklenen gerçek bir API filtresidir.
- Sonuçlar ilgililik sırasına göre döndürülür ve şu anda sayfalanmaz.
- Plugin aramasına yönelik tarayıcı kullanıcı arayüzü sıralama denetimleri, yüklenen ilgililik sonuçlarını
mevcut
/skillstarama davranışıyla eşleşecek biçimde yeniden sıralar.
GET /api/v1/packages/{name}
Paket ayrıntısı meta verilerini döndürür.
Notlar:
- Skills öğeleri de birleşik katalogda bu rota üzerinden çözümlenebilir.
- Çağıran, sahibi olan yayıncıyı okuyamadığı sürece özel paketler
404döndürür.
DELETE /api/v1/packages/{name}
Bir paketi ve tüm sürümlerini geçici olarak siler.
Notlar:
- Paket sahibi, kuruluş yayıncısının sahibi/yöneticisi, platform moderatörü veya platform yöneticisi için bir API tokeni gerektirir.
GET /api/v1/packages/{name}/versions
Sürüm geçmişini döndürür.
Sorgu parametreleri:
limit(isteğe bağlı): tam sayı (1–100)cursor(isteğe bağlı): sayfalama imleci
Notlar:
- Çağıran, sahibi olan yayıncıyı okuyamadığı sürece özel paketler
404döndürür.
GET /api/v1/packages/{name}/versions/{version}
Dosya meta verileri, uyumluluk, doğrulama, yapıt meta verileri ve tarama verileri dâhil olmak üzere bir paket sürümünü döndürür.
Notlar:
version.artifact.kind, eski dünya paket arşivleri içinlegacy-zipveya ClawPack destekli sürümler içinnpm-packdeğeridir.- ClawPack sürümleri, npm uyumlu
npmIntegrity,npmShasumvenpmTarballNamealanlarını içerir. version.sha256hash, eski istemcilere yönelik kullanımdan kaldırılmış uyumluluk meta verisidir./api/v1/packages/{name}/downloadtarafından döndürülen tam ZIP baytlarının karmasını alır. Modern istemciler, kanonik sürüm yapıtını tanımlayanversion.artifact.sha256değerini kullanmalıdır.version.vtAnalysis,version.llmAnalysisveversion.staticScan, tarama verileri mevcut olduğunda eklenir.- Çağıran, sahibi olan yayıncıyı okuyamadığı sürece özel paketler
404döndürür.
GET /api/v1/packages/{name}/versions/{version}/security
Kurulum istemcileri için tam paket sürümünün güvenlik ve güven özetini döndürür. Bu, çözümlenen bir sürümün kurulup kurulamayacağına karar vermek için herkese açık OpenClaw tüketim yüzeyidir.
Kimlik doğrulama:
- Herkese açık okuma uç noktası. Sahip, yayıncı, moderatör veya yönetici tokeni gerekmez.
Yanıt:
{ "package": { "name": "@openclaw/example-plugin", "displayName": "Örnek 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 }}Yanıt alanları:
package.name,package.displayNamevepackage.family, çözümlenen kayıt defteri paketini tanımlar.release.releaseId,release.versionverelease.createdAt, değerlendirilen tam sürümü tanımlar.release.artifactKind,release.artifactSha256,release.npmIntegrity,release.npmShasumverelease.npmTarballName, sürüm yapıtı için bilindiklerinde bulunur.trust.scanStatus, tarayıcı girdilerinden ve manuel sürüm moderasyonundan türetilen etkin güven durumudur.trust.moderationStatenull olabilir. Manuel sürüm moderasyonu olmadığındanulldeğerindedir.trust.blockedFromDownload, kurulum engelleme sinyalidir. OpenClaw ve diğer kurulum istemcileri, tarayıcı veya moderasyon alanlarından engelleme kurallarını yeniden türetmek yerine bu değertrueolduğunda kurulumu engellemelidir.trust.reasons, kullanıcıya yönelik ve denetim amaçlı açıklama listesidir. Neden kodlarımanual:quarantined,scan:maliciousvepackage:maliciousgibi kararlı, kısa dizelerdir.trust.pending, bir veya daha fazla güven girdisinin hâlâ tamamlanmayı beklediği anlamına gelir.trust.stale, güven özetinin güncelliğini yitirmiş girdilerden hesaplandığı ve yüksek güvenli bir izin kararından önce yenilenmesi gerektiği anlamına gelir.
Notlar:
- Bu uç nokta tam sürüme özeldir. İstemciler bunu yalnızca en son paket meta verilerini okuduktan sonra değil, kurmayı amaçladıkları paket sürümünü çözümledikten sonra çağırmalıdır.
- Çağıran, sahibi olan yayıncıyı okuyamadığı sürece özel paketler
404döndürür. - Bu uç nokta, sahip/moderatör moderasyon uç noktalarından kasıtlı olarak daha dar kapsamlıdır. Bildirimde bulunanların kimliklerini, bildirim gövdelerini, özel kanıtları veya dahili inceleme zaman çizelgelerini değil; kurulum kararını ve herkese açık açıklamayı sunar.
GET /api/v1/packages/{name}/versions/{version}/artifact
Bir paket sürümü için açık yapıt çözümleyici meta verilerini döndürür.
Notlar:
- Eski paket sürümleri, bir
legacy-zipyapıtı ve eski bir ZIPdownloadUrldöndürür. - ClawPack sürümleri; bir
npm-packyapıtı, npm bütünlük alanları, birtarballUrlve eski ZIP uyumluluk URL'sini döndürür. - Bu, OpenClaw çözümleyici yüzeyidir; paylaşılan bir URL'den arşiv biçiminin tahmin edilmesini önler.
GET /api/v1/packages/{name}/versions/{version}/artifact/download
Sürüm yapıtını açık çözümleyici yolu üzerinden indirir.
Notlar:
- ClawPack sürümleri, yüklenen npm-pack
.tgzbaytlarının aynısını aktarır. - Eski ZIP sürümleri
/api/v1/packages/{name}/download?version=konumuna yönlendirilir. - İndirme hız sınırı grubunu kullanır.
GET /api/v1/packages/{name}/readiness
OpenClaw'ın gelecekteki kullanımı için hesaplanan hazırlık durumunu döndürür.
Hazırlık denetimleri şunları kapsar:
- resmî kanal durumu
- en son sürümün kullanılabilirliği
- ClawPack npm-pack yapıtının kullanılabilirliği
- yapıt özeti
- kaynak depo ve commit kökeni
- OpenClaw uyumluluk meta verileri
- ana makine hedefleri
- tarama durumu
Yanıt:
{ "package": { "name": "@openclaw/example-plugin", "displayName": "Örnek Plugin", "family": "code-plugin", "isOfficial": true, "latestVersion": "1.2.3" }, "ready": false, "checks": [ { "id": "clawpack", "label": "ClawPack yapıtı", "status": "fail", "message": "En son sürüm yalnızca eski ZIP biçimindedir." } ], "blockers": ["clawpack"]}GET /api/v1/packages/migrations
Resmî OpenClaw Plugin geçiş satırlarını listelemeye yönelik moderatör uç noktası.
Kimlik doğrulama:
- Moderatör veya yönetici kullanıcıya ait bir API belirteci gerektirir.
Sorgu parametreleri:
phase(isteğe bağlı):planned,published,clawpack-ready,legacy-zip-only,metadata-ready,blocked,ready-for-openclawveyaall(varsayılan).limit(isteğe bağlı): tam sayı (1-100)cursor(isteğe bağlı): sayfalama imleci
Yanıt:
{ "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 eksik"], "hostTargetsComplete": true, "scanClean": false, "moderationApproved": false, "runtimeBundlesReady": false, "notes": null, "createdAt": 1760000000000, "updatedAt": 1760000000000 } ], "nextCursor": null, "done": true}POST /api/v1/packages/migrations
Resmî bir Plugin geçiş satırı oluşturmaya veya güncellemeye yönelik yönetici uç noktası.
Kimlik doğrulama:
- Yönetici kullanıcıya ait bir API belirteci gerektirir.
İstek gövdesi:
{ "bundledPluginId": "core.search", "packageName": "@openclaw/search-plugin", "owner": "platform", "sourceRepo": "openclaw/openclaw", "sourcePath": "plugins/search", "sourceCommit": "abc123", "phase": "blocked", "blockers": ["ClawPack eksik"], "hostTargetsComplete": true, "scanClean": false, "moderationApproved": false, "runtimeBundlesReady": false, "notes": "yayıncı yüklemesi bekleniyor"}Notlar:
bundledPluginIdküçük harfe dönüştürülerek normalleştirilir ve kararlı upsert anahtarıdır.packageNamenpm adına göre normalleştirilir; planlanan geçişlerde paket mevcut olmayabilir.- Bu yalnızca geçiş hazırlığını izler. OpenClaw'ı değiştirmez veya ClawPack oluşturmaz.
GET /api/v1/packages/moderation/queue
Paket sürümü inceleme kuyruklarına yönelik moderatör/yönetici uç noktası.
Kimlik doğrulama:
- Moderatör veya yönetici kullanıcıya ait bir API belirteci gerektirir.
Sorgu parametreleri:
status(isteğe bağlı):open(varsayılan),blocked,manualveyaalllimit(isteğe bağlı): tam sayı (1-100)cursor(isteğe bağlı): sayfalama imleci
Durumların anlamları:
open: şüpheli, kötü amaçlı, bekleyen, karantinaya alınmış, iptal edilmiş veya bildirilmiş sürümler.blocked: karantinaya alınmış, iptal edilmiş veya kötü amaçlı sürümler.manual: manuel moderasyon geçersiz kılmasına sahip herhangi bir sürüm.all: manuel geçersiz kılmaya, temiz olmayan tarama durumuna veya paket bildirimine sahip herhangi bir sürüm.
Yanıt:
{ "items": [ { "packageId": "packages:...", "releaseId": "packageReleases:...", "name": "@openclaw/example-plugin", "displayName": "Örnek Plugin", "family": "code-plugin", "channel": "community", "isOfficial": false, "version": "1.2.3", "createdAt": 1730000000000, "artifactKind": "npm-pack", "scanStatus": "malicious", "moderationState": "quarantined", "moderationReason": "manuel inceleme", "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
Bir paketi moderatör incelemesi için bildirin. Bildirimler paket düzeyindedir ve isteğe bağlı olarak bir sürüme bağlanabilir. Moderasyon kuyruğunu beslerler ancak kendi başlarına indirmeleri otomatik olarak gizlemez veya engellemezler; moderatörler yapıtları onaylamak, karantinaya almak veya iptal etmek için sürüm moderasyonunu kullanmalıdır.
Kimlik doğrulama:
- Bir API belirteci gerektirir.
İstek:
{ "reason": "Şüpheli yerel ikili dosya", "version": "1.2.3" }Yanıt:
{ "ok": true, "reported": true, "alreadyReported": false, "packageId": "packages:...", "releaseId": "packageReleases:...", "reportCount": 1}GET /api/v1/packages/reports
Paket bildirimlerini almaya yönelik moderatör/yönetici uç noktası.
Kimlik doğrulama:
- Moderatör veya yönetici kullanıcıya ait bir API belirteci gerektirir.
Sorgu parametreleri:
status(isteğe bağlı):open(varsayılan),confirmed,dismissedveyaalllimit(isteğe bağlı): tam sayı (1-100)cursor(isteğe bağlı): sayfalama imleci
Yanıt:
{ "items": [ { "reportId": "packageReports:...", "packageId": "packages:...", "releaseId": "packageReleases:...", "name": "@openclaw/example-plugin", "displayName": "Örnek Plugin", "family": "code-plugin", "version": "1.2.3", "reason": "Şüpheli yerel ikili dosya", "status": "open", "createdAt": 1730000000000, "reporter": { "userId": "users:...", "handle": "reporter", "displayName": "Bildiren" }, "triagedAt": null, "triagedBy": null, "triageNote": null } ], "nextCursor": null, "done": true}GET /api/v1/packages/{name}/moderation
Paket moderasyonu görünürlüğüne yönelik sahip/moderatör uç noktası.
Kimlik doğrulama:
- Paket sahibine, yayıncı üyesine, moderatöre veya yönetici kullanıcıya ait bir API belirteci gerektirir.
Yanıt:
{ "package": { "packageId": "packages:...", "name": "@openclaw/example-plugin", "displayName": "Örnek 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": "manuel inceleme", "blockedFromDownload": true, "reasons": ["manual:quarantined", "scan:malicious", "reports:2"], "createdAt": 1730000000000 }}POST /api/v1/packages/reports/{reportId}/triage
Paket bildirimlerini çözümlemeye veya yeniden açmaya yönelik moderatör/yönetici uç noktası.
İstek:
{ "status": "confirmed", "note": "Etkilenen sürüm incelendi ve karantinaya alındı.", "finalAction": "quarantine"}note, confirmed ve dismissed için gereklidir; status
yeniden open olarak ayarlanırken atlanabilir. Aynı denetlenebilir iş akışında
sürüm moderasyonu uygulamak için onaylanmış bir bildirimle finalAction: "quarantine" veya
finalAction: "revoke" iletin.
Yanıt:
{ "ok": true, "reportId": "packageReports:...", "packageId": "packages:...", "status": "confirmed", "reportCount": 0}POST /api/v1/packages/{name}/versions/{version}/moderation
Paket sürümü incelemesine yönelik moderatör/yönetici uç noktası.
İstek:
{ "state": "quarantined", "reason": "Şüpheli yerel yük." }Desteklenen durumlar:
approved: manuel olarak incelendi ve izin verildi.quarantined: takip işlemi beklenirken engellendi.revoked: bir sürüme daha önce güvenildikten sonra engellendi.
Karantinaya alınmış ve iptal edilmiş sürümler, yapıt indirme rotalarından 403 döndürür.
Her değişiklik bir denetim günlüğü girdisi yazar.
GET /api/v1/packages/{name}/file
Tam olarak depolanan paket dosyası baytlarını indirme olarak döndürür. Skill dosyaları için kullanılan aynı sınırlı
UTF-8 metin önizlemesini istemek üzere preview=1 ekleyin.
Sorgu parametreleri:
path(gerekli)version(isteğe bağlı)tag(isteğe bağlı)preview=1(isteğe bağlı; baytlar geçerli UTF-8 değilsetext/plainveya415döndürür)
Notlar:
- Varsayılan olarak en son sürümü kullanır.
- İndirme grubunu değil, okuma hız sınırı grubunu kullanır.
- Ham indirme sınırı: 10MB.
- Metin önizleme sınırı: 200KB; opak dosyalar yalnızca önizleme isteklerinde
415döndürür. - Bekleyen VirusTotal taramaları okumaları engellemez; kötü amaçlı sürümler başka yerlerde yine de erişime kapatılabilir.
- Çağıran, sahibi olan yayıncıyı okuyamıyorsa özel paketler
404döndürür.
GET /api/v1/packages/{name}/download
Bir paket sürümü için eski deterministik ZIP arşivini indirir.
Sorgu parametreleri:
version(isteğe bağlı)tag(isteğe bağlı)
Notlar:
- Varsayılan olarak en son sürümü kullanır.
- Skills,
GET /api/v1/downloadkonumuna yönlendirilir. - Eski OpenClaw istemcilerinin çalışmaya devam etmesi için Plugin/paket arşivleri,
package/köküne sahip zip dosyalarıdır. - Bu rota yalnızca ZIP olarak kalır. ClawPack
.tgzdosyalarını aktarmaz. - Yanıtlar, çözümleyici bütünlük denetimleri için
ETag,Digest,X-ClawHub-Artifact-TypeveX-ClawHub-Artifact-Sha256başlıklarını içerir. - Yalnızca kayıt defterine ait meta veriler indirilen arşive eklenmez.
- Bekleyen VirusTotal taramaları indirmeleri engellemez; kötü amaçlı sürümler
403döndürür. - Çağıran sahip değilse özel paketler
404döndürür.
GET /api/npm/{package}
ClawPack destekli paket sürümleri için npm uyumlu bir packument döndürür.
Notlar:
- Yalnızca yüklenmiş ClawPack npm-pack tarball'larına sahip sürümler listelenir.
- Yalnızca eski ZIP biçimindeki sürümler kasıtlı olarak hariç tutulur.
dist.tarball,dist.integrityvedist.shasum, kullanıcıların isterlerse npm'i aynaya yönlendirebilmesi için npm uyumlu alanlar kullanır.- Kapsamlı paket packument'ları hem
/api/npm/@scope/namehem de npm'in kodlanmış/api/npm/@scope%2Fnameistek yolunu destekler.
GET /api/npm/{package}/-/{tarball}.tgz
npm ayna istemcileri için yüklenen ClawPack tarball baytlarının aynısını aktarır.
Notlar:
- İndirme hız sınırı grubunu kullanır.
- İndirme başlıkları ClawHub SHA-256 ile npm bütünlük/shasum meta verilerini içerir.
- Moderasyon ve özel paket erişim denetimleri uygulanmaya devam eder.
GET /api/v1/resolve
CLI tarafından yerel bir parmak izini bilinen bir sürümle eşlemek için kullanılır.
Sorgu parametreleri:
slug(gerekli)hash(gerekli): paket parmak izinin 64 karakterli onaltılık sha256 değeri
Yanıt:
{ "slug": "gifgrep", "match": { "version": "1.2.2" }, "latestVersion": { "version": "1.2.3" } }GET /api/v1/download
Barındırılan bir skill sürümünün ZIP dosyasını indirir veya clean ya da suspicious taramasına sahip, barındırılan
sürümü bulunmayan güncel bir GitHub destekli skill için GitHub kaynak devrini döndürür.
Sorgu parametreleri:
slug(gerekli)version(isteğe bağlı): semver dizesitag(isteğe bağlı): etiket adı (ör.latest)
Notlar:
- Ne
versionne detagsağlanırsa en son sürüm kullanılır. - Geçici olarak silinen sürümler
410döndürür. - GitHub destekli skill devirleri baytları proxy üzerinden iletmez veya yansıtmaz. JSON yanıtı
sourceRef: "public-github",repo,commit,path,contentHashvearchiveUrliçerir; tarama/güncel durum bir geçittir ve başarılı yanıt yükü meta verilerine dahil edilmez. - İndirme istatistikleri UTC günü başına benzersiz kimlikler olarak sayılır (API belirteci geçerliyse
userId, aksi takdirde IP).
Kimlik doğrulama uç noktaları (Bearer belirteci)
Tüm uç noktalar şunu gerektirir:
Authorization: Bearer clh_...GET /api/v1/whoami
Belirteci doğrular ve kullanıcı tanıtıcısını döndürür.
POST /api/v1/skills
Yeni bir sürüm yayımlar.
- Tercih edilen:
payloadJSON vefiles[]bloblarıylamultipart/form-data. filesiçeren JSON gövdesi de (storageId tabanlı) kabul edilir.- İsteğe bağlı yük alanı:
ownerHandle. Mevcut olduğunda API bu yayıncıyı sunucu tarafında çözümler ve aktörün yayıncı erişimine sahip olmasını gerektirir. - İsteğe bağlı yük alanı:
migrateOwner.ownerHandleiletrueolduğunda, aktör hem mevcut hem de hedef yayıncılarda yönetici/sahipse mevcut bir skill bu sahibe taşınabilir. Bu açık onay olmadan sahip değişiklikleri reddedilir.
POST /api/v1/packages
Bir kod Plugin'i veya paket Plugin'i sürümü yayımlar.
- Bearer belirteciyle kimlik doğrulaması gerektirir.
multipart/form-datagerektirir.- İzin verilen form alanları
payload, yinelenenfilesblobları veya tek birclawpacktarball başvurusudur.clawpack, bir.tgzblobu veya yükleme URL'si akışının döndürdüğü depolama kimliği olabilir. Hazırlanmış depolama kimliği yayımları, bu yükleme URL'siyle döndürülenclawpackUploadTicketdeğerini de içermelidir. filesya daclawpackkullanın; aynı istekte asla ikisini birden kullanmayın.- JSON gövdeleri ve çağıran tarafından sağlanan
payload.files/payload.artifactmeta verileri reddedilir. - Doğrudan çok parçalı yayımlama istekleri 18MB ile sınırlıdır. ClawPack tarball'ları, 120MB tarball sınırına kadar yükleme URL'si akışını kullanabilir.
- İsteğe bağlı yük alanı:
ownerHandle. Mevcut olduğunda yalnızca yöneticiler bu sahip adına yayımlayabilir.
Doğrulamada öne çıkanlar:
family,code-pluginveyabundle-pluginolmalıdır.- Plugin paketleri
openclaw.plugin.jsongerektirir. ClawPack.tgzyüklemeleri bunupackage/openclaw.plugin.jsonkonumunda içermelidir. - Kod Plugin'leri
package.json, kaynak depo meta verileri, kaynak commit meta verileri, yapılandırma şeması meta verileri,openclaw.compat.pluginApiveopenclaw.build.openclawVersiongerektirir. openclaw.hostTargetsveopenclaw.environmentisteğe bağlı meta verilerdir.- Yalnızca
openclawkuruluş yayıncısı ve mevcutopenclawkuruluş üyelerinin kişisel yayıncılarıofficialkanalına yayımlayabilir. - Başkası adına yayımlamalarda da resmî kanal uygunluğu hedef sahip hesabına göre doğrulanır.
DELETE /api/v1/skills/{slug} / POST /api/v1/skills/{slug}/undelete
Bir skill'i geçici olarak siler / geri yükler (sahip, moderatör veya yönetici).
İsteğe bağlı JSON gövdesi:
{ "reason": "Hukuki inceleme beklenirken moderasyon için bekletildi." }Mevcut olduğunda reason, skill moderasyon notu olarak saklanır ve denetim günlüğüne kopyalanır.
Sahip tarafından başlatılan geçici silmeler slug'ı 30 gün boyunca ayırır; ardından slug başka bir
yayıncı tarafından alınabilir. Bu süre sonu geçerli olduğunda silme yanıtı slugReservedUntil içerir.
Moderatör/yönetici gizlemeleri ve güvenlik kaldırmaları bu şekilde sona ermez.
Silme yanıtı:
{ "ok": true, "slugReservedUntil": 1730000000000 }Durum kodları:
200: başarılı401: yetkisiz403: yasak404: skill/kullanıcı bulunamadı500: dahili sunucu hatası
POST /api/v1/users/publisher
Yalnızca yöneticiler içindir. Bir tanıtıcı için kuruluş yayıncısının mevcut olmasını sağlar. Tanıtıcı hâlâ
eski bir paylaşılan kullanıcı/kişisel yayıncıya işaret ediyorsa uç nokta önce bunu kuruluş yayıncısına taşır.
Yeni oluşturulan bir kuruluş için memberHandle sağlayın; işlemi yapan yönetici üye olarak eklenmez.
memberRole varsayılan olarak owner değerini alır.
- Gövde:
{ "handle": "openclaw", "displayName": "OpenClaw", "memberHandle": "alice", "memberRole": "owner", "trusted": true } - Yanıt:
{ "ok": true, "publisherId": "...", "handle": "openclaw", "created": true, "migrated": false, "trusted": true, "member": { "userId": "...", "handle": "alice", "role": "owner" } }
POST /api/v1/publishers
Kimliği doğrulanmış, kullanıcı tarafından kuruluş yayıncısı oluşturma. Yeni bir kuruluş yayıncısı oluşturur ve çağıranı sahip olarak ekler. Bu uç nokta mevcut kullanıcı/kişisel tanıtıcıları taşımaz ve yayıncıyı güvenilir/resmî olarak işaretlemez.
- Gövde:
{ "handle": "opik", "displayName": "Opik" } - Yanıt:
{ "ok": true, "publisherId": "...", "handle": "opik", "created": true, "trusted": false } - Tanıtıcı zaten bir yayıncı, kullanıcı veya kişisel yayıncı tarafından kullanılıyorsa
409döndürür.
POST /api/v1/users/reserve
Yalnızca yöneticiler içindir. Bir sürüm yayımlamadan kök slug'ları ve paket adlarını hak sahibi için ayırır. Paket adları, sürüm satırı bulunmayan özel yer tutucu paketlere dönüşür; böylece aynı sahip daha sonra gerçek kod Plugin'i veya paket Plugin'i sürümünü bu adla yayımlayabilir.
- Gövde:
{ "handle": "openclaw", "slugs": ["diffs"], "packageNames": ["@openclaw/diffs"], "reason": "reserved for official OpenClaw plugin" } - Yanıt:
{ "ok": true, "succeeded": 2, "failed": 0, "results": [{ "kind": "slug", "name": "diffs", "ok": true, "action": "reserved" }] }
POST /api/v1/users/publisher-recovery
Yalnızca yöneticiler içindir. Convex Auth hesap satırlarını düzenlemeden, doğrulanmış yedek GitHub OAuth sorumlusu için kişisel yayıncıyı kurtarır. İstek her iki değişmez GitHub sağlayıcı hesap kimliğini de belirtmelidir; değiştirilebilir tanıtıcılar yalnızca operatöre yönelik bir koruma olarak kullanılır.
Uç nokta varsayılan olarak deneme çalıştırması yapar. Kurtarmayı uygulamak için personelin her iki
GitHub sorumlusu arasındaki sürekliliği bağımsız olarak doğrulamasının ardından dryRun: false ve
confirmIdentityVerified: true gerekir. Hedef kullanıcının mevcut kişisel
yayıncısında skill'ler, paketler veya GitHub skill kaynakları varsa kurtarma güvenli biçimde başarısız olur.
Kurtarma ayrıca kurtarılan yayıncının skill'leri, skill slug takma adları, paketleri,
paket denetçisi uyarıları ve türetilmiş arama özeti satırlarındaki eski ownerUserId alanlarını taşır;
böylece doğrudan sahip yolları yeni yayıncı yetkisiyle uyumlu olur. Kurtarılan tanıtıcıya ait etkin bir
korumalı tanıtıcı ayırması da yedek kullanıcıya yeniden atanır; böylece sonraki
profil eşitlemesi eski kullanıcının rakip yetkisini geri yükleyemez. Her birincil tablo,
uygulama işlemi başına 100 satırla sınırlıdır; daha büyük kurtarmalarda önce sürdürülebilir bir sahip taşıması kullanılmalıdır.
GitHub skill kaynakları yayıncı kapsamındadır ve yeniden yazılmak yerine kontrol edilmiş olarak bildirilir.
- Gövde:
{ "handle": "gingiris", "nextUserHandle": "gingiris-1031", "previousGitHubProviderAccountId": "123", "nextGitHubProviderAccountId": "456", "reason": "Verified account continuity for issue #2555", "confirmIdentityVerified": true, "dryRun": false } - Yanıt:
{ "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" }
Sahip slug yönetimi uç noktaları
POST /api/v1/skills/{slug}/rename- Gövde:
{ "newSlug": "new-canonical-slug" } - Yanıt:
{ "ok": true, "slug": "new-canonical-slug", "previousSlug": "old-slug" }
- Gövde:
POST /api/v1/skills/{slug}/merge- Gövde:
{ "targetSlug": "canonical-target-slug" } - Yanıt:
{ "ok": true, "sourceSlug": "old-slug", "targetSlug": "canonical-target-slug" }
- Gövde:
Notlar:
- Her iki uç nokta da API belirteciyle kimlik doğrulaması gerektirir ve yalnızca skill sahibi için çalışır.
rename, önceki slug'ı yönlendirme takma adı olarak korur.merge, kaynak listesini gizler ve kaynak slug'ını hedef listeye yönlendirir.
Sahiplik devri uç noktaları
POST /api/v1/skills/{slug}/transfer- Gövde:
{ "toUserHandle": "target_handle", "message": "optional" } - Yanıt:
{ "ok": true, "transferId": "skillOwnershipTransfers:...", "toUserHandle": "target_handle", "expiresAt": 1730000000000 }
- Gövde:
POST /api/v1/skills/{slug}/transfer/acceptPOST /api/v1/skills/{slug}/transfer/rejectPOST /api/v1/skills/{slug}/transfer/cancel- Yanıt (kabul/ret/iptal):
{ "ok": true, "skillSlug": "demo-skill?" }
- Yanıt (kabul/ret/iptal):
GET /api/v1/transfers/incomingGET /api/v1/transfers/outgoing- Yanıt biçimi:
{ "transfers": [{ "_id": "...", "skill": { "slug": "demo", "displayName": "Demo" }, "fromUser"|"toUser": { "handle": "..." }, "message": "...", "requestedAt": 0, "expiresAt": 0 }] }
- Yanıt biçimi:
POST /api/v1/users/ban
Bir kullanıcıyı yasaklar ve sahip olduğu skill'leri kalıcı olarak siler (yalnızca moderatör/yönetici).
Gövde:
{ "handle": "user_handle", "reason": "isteğe bağlı yasaklama nedeni" }veya
{ "userId": "users_...", "reason": "isteğe bağlı yasaklama nedeni" }Yanıt:
{ "ok": true, "alreadyBanned": false, "deletedSkills": 3 }POST /api/v1/users/unban
Bir kullanıcının yasağını kaldırır ve uygun skill'leri geri yükler (yalnızca yönetici).
Gövde:
{ "handle": "user_handle", "reason": "isteğe bağlı yasak kaldırma nedeni" }veya
{ "userId": "users_...", "reason": "isteğe bağlı yasak kaldırma nedeni" }Yanıt:
{ "ok": true, "alreadyUnbanned": false, "restoredSkills": 3 }POST /api/v1/users/reclassify-ban
Yasağı kaldırmadan veya içeriği geri yüklemeden mevcut bir yasağın saklanan nedenini değiştirir
(yalnızca yönetici). dryRun, false olmadığı sürece varsayılan olarak deneme çalıştırması yapar.
Gövde:
{ "handle": "user_handle", "reason": "toplu yayımlama spam'i", "dryRun": true }veya
{ "userId": "users_...", "reason": "toplu yayımlama spam'i", "dryRun": false }Yanıt:
{ "ok": true, "dryRun": false, "userId": "users_...", "handle": "user_handle", "previousReason": "kötü amaçlı yazılım nedeniyle otomatik yasaklama", "nextReason": "toplu yayımlama spam'i", "changed": true}POST /api/v1/users/role
Bir kullanıcı rolünü değiştirir (yalnızca yönetici).
Gövde:
{ "handle": "user_handle", "role": "moderator" }veya
{ "userId": "users_...", "role": "admin" }Yanıt:
{ "ok": true, "role": "moderator" }GET /api/v1/users
Kullanıcıları listeler veya arar (yalnızca yönetici).
Sorgu parametreleri:
q(isteğe bağlı): arama sorgusuquery(isteğe bağlı):qiçin takma adlimit(isteğe bağlı): en fazla sonuç sayısı (varsayılan 20, en fazla 200)
Yanıt:
{ "items": [ { "userId": "users_...", "handle": "user_handle", "displayName": "Kullanıcı", "name": "Kullanıcı", "role": "moderator" } ], "total": 1}POST /api/v1/stars/{slug} / DELETE /api/v1/stars/{slug}
Bir Yer İşareti ekler/kaldırır. Eski stars rotası ve yanıt alanı adları
uyumluluk amacıyla korunur. Her iki uç nokta da eşgüçlüdür.
Yanıtlar:
{ "ok": true, "starred": true, "alreadyStarred": false }{ "ok": true, "unstarred": true, "alreadyUnstarred": false }Eski CLI uç noktaları (kullanımdan kaldırıldı)
Eski CLI sürümleri için hâlâ desteklenir:
GET /api/cli/whoamiPOST /api/cli/upload-urlPOST /api/cli/publishPOST /api/cli/telemetry/installPOST /api/cli/skill/deletePOST /api/cli/skill/undelete
Kaldırma planı için DEPRECATIONS.md bölümüne bakın.
POST /api/cli/upload-url, uploadUrl ve uploadTicket döndürür. Bir ClawPack tarball'ını
hazırlayan paket yayımları, elde edilen depolama kimliğini clawpack ve döndürülen bileti
clawpackUploadTicket olarak göndermelidir.
Kayıt defteri keşfi (/.well-known/clawhub.json)
CLI, kayıt defteri/kimlik doğrulama ayarlarını siteden keşfedebilir:
/.well-known/clawhub.json(JSON, tercih edilen)/.well-known/clawdhub.json(eski)
Şema:
{ "apiBase": "https://clawhub.ai", "authBase": "https://clawhub.ai", "minCliVersion": "0.0.5" }Kendi sunucunuzda barındırıyorsanız bu dosyayı sunun (veya CLAWHUB_REGISTRY değerini açıkça ayarlayın; eski CLAWDHUB_REGISTRY).