---
# System prepended metadata

title: Solid Containers

---

# Solid Containers


### Suggestion 1

```http
PUT /task-1
Link: </task-1>; anchor="/project-1";  rel="http:/pm.example/#hasTask" 
```

Where `project-1` uses shape tree which has reference between projects and tasks based on `ex:hasTask` predicate.

-----

With `/` 

```http
PUT /project-1/task-1
```

----


Does it violate PUT definition? If it does for both or for just one?


### Suggestion 2

```http
PUT /task-1
```

And add a link relation:

```http
LINK /project-1
Link: </task-1>; rel="http:/pm.example/#hasTask" 
```

```http
POST /project-1
Link: </task-1>; rel="http:/pm.example/#hasTask" 
```
POST? without body or

```http
POST /project-1

Link: </task-1>; rel="http:/pm.example/#hasTask" 
```

POST with body

```http
PATCH /project-1

....
```

Access, what if client/user not allowed make abritrary changes to `project-1` ?

https://datatracker.ietf.org/doc/html/draft-snell-link-method-12 (FYI TimBL proposed this https://www.w3.org/Protocols/HTTP/Methods/Link.html)

For a moment `task-1` is an orphan, also one might only be allowed to create tasks in `project-1`.

### Images with restricted access example

We do not want those without permissions to see images, eventhough they can read tasks.


```http
PUT /image-1
Link: </image-1>;  anchor="/project-1";  rel="http:/pm.example/#hasImage" 
```

How can we implement distinguishing access controls based on the predicate?
