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:
| Surface | What it is | Who wrote it |
|---|---|---|
pod.solidus.network/<slug>/* | Solid pod’unun kendisi — LDP kaynakları, WAC, WebID, Solid-OIDC | Community Solid Server (üçüncü taraf, upstream) |
pod.solidus.network/v1/* | Provizyonlama — bir did:solidus kullanıcısı için pod oluşturur | Solidus (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ınauth’un kendi JWKS’sine karşı doğrulanan,auth.solidus.networktarafından basılan Solid-OIDC erişim token’ı (Authorization: Bearer <token>veyaDPoP <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 group | Path | Auth |
|---|---|---|
| Pod kaynakları (LDP/WAC) | /<slug>/* — ör. /<slug>/profile/card, /<slug>/.acl | Solid-OIDC + WAC (kaynak başına) |
| Well-known | /.well-known/solid, /<slug>/.well-known/... | Herkese açık (meta veri) |
| Provizyonlama durumu | GET /v1/provision | Solid-OIDC bearer |
| Provizyonlama oluşturma | POST /v1/provision | Solid-OIDC bearer |
| Sağlık | GET /v1/health | Yok |
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/solidHTTP/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/cardHTTP/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.aclkaynakları) üzerinden gerçekleşir — birpod.solidus.network/v1/filesveya 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.