Email or username:

Password:

Forgot your password?
bouncepaw 🍄

It's not easy to find docs on how what API #Solid pods use. I looked in the specs and found nothing. What is the endpoint? How do you give it the triplets?

9 comments
JG10

@bouncepaw

Hi! To start with it's a REST CRUD interface on each individual resource, e.g. you can do
PUT https:// my.pod/my-resource
DELETE https:// my.pod/my-resource

There's also
PATCH using an "N3 Patch" format
solidproject.org/TR/protocol#n

In practice, developers use libraries that abstract this out. See e.g.
timea.solidcommunity.net/Hello

bouncepaw 🍄

@jg10 Thank you! The REST CRUD part is unclear to me. Does Solid support not just storing the triplets, but also something like files? This part is very similar to more classic web servers, am I understanding correctly?

N3 Patches are what I was looking for, thank you! I send an N3 Patch document to the pod, it handles it, and all's good.

Libraries are not particularly helpful, I would need a Go library, and I haven't found one. Looking up Go solid library yields some OOP-related guides :-(

JG10

@bouncepaw

That's right - the principle of #SolidProject is to enable the read-write web - an authenticated user can write anything to their server, not just RDF.
However if a resource is written in RDF, then patching is possible too.

A library is most needed for authentication, using the solid-oidc spec. It does look like someone has started something in go:
github.com/jlewi/solid-golang
solidproject.org/TR/oidc-prime

bouncepaw 🍄

@jg10 I see now, thank you! A flash drive on steroids. But how are permissions handled? Does every application reserve some prefix or what?

The library is too immature, to be honest. If I ever get to serious Soliding, I'll make my own. The OIDC spec is long, but looks quite implementable, I think.

Vincent Tunru

@bouncepaw @jg10 Permissions are a bit of a mess, unfortunately, as there are (so far) two competing standards for that, so different servers might implement different standards. Solid doesn't mandate a particular one, so it's even possible that additional ones arise in the future.

The two specs are:

- Web Access Control: solidproject.org/TR/wac
- Access Control Policies: solidproject.org/TR/acp

bouncepaw 🍄

@VincentTunru @jg10 Sad.

WAC has received a new version this year, while ACP only in 2022. I suppose the specwriters are more focused on WAC?

Vincent Tunru

@bouncepaw @jg10

ACP has been mostly pushed by Inrupt, the company Tim Berners-Lee founded around Solid, and which is mostly focusing on enterprise customers. (Disclosure: I used to work there a couple of years ago.) It's the method their Solid instance pod.inrupt.com uses.

WAC was the initial access control spec for Solid, and is still used by the main community-used server, solidcommunity.net.

So they're both the main focus for an important cohort of people, unfortunately...

JG10

@bouncepaw @VincentTunru

In general it's important to note that the Solid specifications are still in flux - but I don't think permissions is a major issue at this time - WAC and ACP are sufficiently similar that two possible solutions include having client libraries interoperate across both or updating WAC to include missing features
github.com/solid/specification

Go Up