Skip to Content

Pod API

Solidus Pod, kişisel veri egemenliği katmanıdır: her kullanıcı, Community Solid Server (CSS) 7.1.9 tarafından desteklenen, kontrolünün kendisinde olduğu gerçek bir Solid pod’u alır. Bu, gerçekten spesifikasyona uygun bir Solid sunucusudur — Linked Data Platform (LDP), Web Access Control (WAC), Solid-OIDC ve WebID’nin tümü CSS’in kendisi tarafından sunulur, Solidus tarafından yeniden uygulanmaz.

Solidus’un kendi kodu bunun önünde ince bir katmandır: yeni kimlik doğrulaması yapılmış bir did:solidus kullanıcısını gerçek bir pod’a dönüştüren, pod’u DID’lerine bağlayan bir WebID kartıyla tohumlanmış bir provizyonlama API’si.

Burada iki ayrı yüzey var — bunları birbirine karıştırmayın:

SurfaceWhat it isWho wrote it
pod.solidus.network/<slug>/*Solid pod’unun kendisi — LDP kaynakları, WAC, WebID, Solid-OIDCCommunity Solid Server (üçüncü taraf, upstream)
pod.solidus.network/v1/*Provizyonlama — bir did:solidus kullanıcısı için pod oluştururSolidus (pod/apps/backend)

Kimlik Doğrulama

Her yüzey için farklı bir kimlik doğrulama mekanizması vardır:

  • Pod’un kendisi (/<slug>/*) standart Solid-OIDC kullanır — CSS kendi erişim token’larını kendi hesap sistemine karşı basar ve doğrular. Okuma/yazma erişimi, Solidus’a özgü herhangi bir şey tarafından değil, WAC ACL kaynakları tarafından yönetilir.
  • Provizyonlama API’si (/v1/provision), çağıranın auth’un kendi JWKS’sine karşı doğrulanan, auth.solidus.network tarafından basılan Solid-OIDC erişim token’ı (Authorization: Bearer <token> veya DPoP <token>, ES256 JWT, aud: "solid") ile kimlik doğrulaması yapar. Pod slug’ı token’ın WebID’sinden türetilir — bir çağıran yalnızca kendi pod’unu provizyonlayabilir, başkasınınkini asla.

Rota dizini

Route groupPathAuth
Pod kaynakları (LDP/WAC)/<slug>/* — ör. /<slug>/profile/card, /<slug>/.aclSolid-OIDC + WAC (kaynak başına)
Well-known/.well-known/solid, /<slug>/.well-known/...Herkese açık (meta veri)
Provizyonlama durumuGET /v1/provisionSolid-OIDC bearer
Provizyonlama oluşturmaPOST /v1/provisionSolid-OIDC bearer
SağlıkGET /v1/healthYok

pod-api yalnızca provizyonlama içindir. Arka uç kaynak ağacında auth/files/credentials/shared/ apps için eski rota dosyaları mevcuttur ancak kullanımdan kaldırılmıştır ve kayıtlı değildir — pod arayüzü artık Solid pod’unu doğrudan @inrupt/solid-client üzerinden okuyup yazıyor ve Solid-OIDC ile giriş yapıyor, dolayısıyla bu REST katmanı çalışan uygulamaya hiç bağlanmadı. Bunlara karşı bir şey inşa etmeyin.


Solid yüzeyi

Ürünün bu kısmı standartların kendisidir, bu yüzden en iyi referans bir Solidus tarafından yazılmış rota tablosu değil, Solid protokol spesifikasyonu ve CSS’in kendi belgeleridir. pod.solidus.network’e karşı canlı olarak doğrulanmış birkaç şey:

curl -s -D - https://pod.solidus.network/.well-known/solid
HTTP/2 501 x-powered-by: Community Solid Server link: <https://pod.solidus.network/.well-known/solid.meta>; rel="describedby" link: <https://pod.solidus.network/.notifications/StreamingHTTPChannel2023/b0>; rel="http://www.w3.org/ns/solid/terms#updatesViaStreamingHttp2023" link: <https://pod.solidus.network/.well-known/solid.acl>; rel="acl" {"name":"NotImplementedHttpError","message":"Only supports descriptions of storage containers.","statusCode":501,"errorCode":"H501"}

501 gövdesi CSS’in kendi dürüst yanıtıdır — .well-known/solid keşfi, bu CSS sürümünde sunucu kökü değil, depolama konteynerleriyle sınırlıdır. İlginç olan kısım başlıklardır: gerçek rel="acl" ve rel="describedby" Link başlıkları ve gerçek bir StreamingHTTPChannel2023 bildirim-kanalı Link’i — bu canlı, spesifikasyona uygun bir Solid sunucusudur, bir taklit değil.

curl -s -D - -H "Accept: text/turtle" https://pod.solidus.network/<slug>/profile/card
HTTP/2 401 x-powered-by: Community Solid Server www-authenticate: Bearer scope="openid webid" link: <https://pod.solidus.network/<slug>/profile/card.meta>; rel="describedby" link: <https://pod.solidus.network/<slug>/profile/card.acl>; rel="acl"

Bu dağıtımda, WebID profil kartının kendisi kimlik doğrulaması yapılmış bir okuma gerektirir (token olmadan 401, WWW-Authenticate: Bearer scope="openid webid" meydan okumasıyla birlikte) — bu, bir Solidus API sözleşmesi değil, pod başına bir WAC politikasıdır ve pod’dan pod’a farklılık gösterebilir.


Provizyonlama API’si

Durum

curl https://pod.solidus.network/v1/provision \ -H "Authorization: Bearer <solid-oidc access token>"
// Response 200 { "provisioned": true, "webId": "https://pod.solidus.network/ada/profile/card#me", "did": "did:solidus:testnet:...", "podUrl": "https://pod.solidus.network/ada/", "slug": "ada" }
// Response 401 — missing/invalid token { "error": "unauthorized", "message": "missing Authorization header" }
// Response 400 — token's WebID isn't under this pod's base URL { "error": "bad_webid", "message": "WebID is not under the pod base" }

Bu uç noktanın, diğer Solidus arka uçlarının kullandığı RFC 7807 Problem Details biçimini kullanmadığını not edin — buradaki hatalar düz bir { error, message } nesnesidir.

Oluşturma

İdempotenttir — zaten provizyonlanmış bir pod üzerinde tekrar çağırmak hata vermek yerine alreadyProvisioned: true döndürür.

curl -X POST https://pod.solidus.network/v1/provision \ -H "Authorization: Bearer <solid-oidc access token>" \ -H "content-type: application/json" \ -d '{"displayName": "Ada"}'
// Response 200 — first provision { "ok": true, "alreadyProvisioned": false, "slug": "ada", "did": "did:solidus:testnet:...", "podUrl": "https://pod.solidus.network/ada/", "webId": "https://pod.solidus.network/ada/profile/card#me", "containers": [ "https://pod.solidus.network/ada/credentials/", "https://pod.solidus.network/ada/data/" ] }
// Response 200 — already provisioned { "ok": true, "alreadyProvisioned": true, "webId": "https://pod.solidus.network/ada/profile/card#me", "did": "did:solidus:testnet:...", "podUrl": "https://pod.solidus.network/ada/", "slug": "ada" }

Provizyonlama; bir CSS hesabı (kullanıcının hiçbir zaman gerçekte kullanmadığı bir giriş yöntemi — kullanıcı, CSS’in kendi parola girişini değil, her zaman auth.solidus.network Solid-OIDC’sini kullanarak kimlik doğrulaması yapar), pod’un kendisini oluşturur ve tohumlanan WebID kartının üzerine did:solidus ile köprülenmiş bir profil belgesi yazar — bir did:solidus DID’sinin ve bir Solid WebID’sinin aynı kimliğe çözümlenmesini sağlayan şey budur.

displayName isteğe bağlıdır, kırpılır ve 100 karakterle sınırlandırılır.

Sağlık

curl https://pod.solidus.network/v1/health
// Response 200 — measured live { "status": "ok", "service": "pod-backend", "timestamp": "2026-07-29T11:24:58.599Z" }

Bunun ne olmadığı

  • Solidus tarafından yazılmış bir depolama API’si değildir. Dosya yükleme/indirme, kaynak listeleme ve izin yönetimi, doğrudan CSS’e karşı standart Solid protokolü (LDP GET/PUT/POST/PATCH/DELETE, WAC .acl kaynakları) üzerinden gerçekleşir — bir pod.solidus.network/v1/files veya benzeri bir Solidus rotası yoktur. Pod URL’sine karşı bir Solid istemci kütüphanesi kullanın (ör. @inrupt/solid-client).
  • Özel bir izin motoru değildir. Erişim kontrolü, Solidus’a özgü bir yetkilendirme katmanı değil, CSS tarafından sunulan WAC’tır.
Last updated on