-
Notifications
You must be signed in to change notification settings - Fork 189
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[docs-only] Add draft of adr for spaces API. #1827
Conversation
Thanks for opening this pull request! The maintainers of this repository would appreciate it if you would create a changelog item based on your changes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As promised, here are my notes:
- semantically different/clearer API paths for "home" and "all spaces"?
/me/drive/home
/me/drive/all
- also clear structure for additional ones in the future, i.e.
/me/drive/pending
webUrl
->davPath
if always on the same host?- ability for users to organize/move spaces like OC10 shares? Add path attribute?
- eTag / cTag? -> to detect changes to favorites, share status, etc…
- mechanism to manage or at least identify space invites (pending/accepted attribute)?
- per-user metadata for spaces
related cs3org/reva#1568 |
Ci broken. |
Needs a rebase to get the golang 1.16 images for the docs build. |
d0c6f71
to
e6f8009
Compare
rebase done |
@felix-schwarz - thanks for your feedback
|
@micbar with regards to owners of a drive: https://docs.microsoft.com/en-us/graph/api/resources/drive?view=graph-rest-beta#properties lists:
Double checking with the graph explorer, the
so they combine not only the Anyway, in the list call with @micbar we found that a drilve with multiple owners would be represented by a group, because a group has a relationship with a (default) The same relationships ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good now.
docs/adr/0005-api-for-spaces.md
Outdated
|
||
The following *driveStatus* values are available: | ||
|
||
* **accepted**: The user has accepted the space and uses it |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These fields represents only a perspective on how shares could work.
As a user when I'm receiving a share I may want to check the contents of it before accepting it. Accepts has collateral effect that the share will be synchronised in the clients.
As a user you may want to access the shares (from the web) but not necessarily sync it.
@dragotin since this was opened there were 2 more ADR merged, Could you update the title / index to |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ability for users to organize/move spaces like OC10 shares? Add path attribute?
- No moving of the spaces is supported any more.
In the light of discussing the "bonus problem" of how a single folder could be shared into multiple spaces, I'd like to bring this up again.
Assuming that each shared folder shows up as a space of its own, wouldn't a mountPaths
attribute make sense here?
Like, f.ex. if I have one space C that I want to map into space A at /projectA/
and into space B at /contributions/felix/
, the contents of mountPaths
for space C could be {"[spaceA.id]:/projectA/", "[spaceB.id]:/contributions/felix/"}
.
Benefits:
- allows to map spaces into other spaces (incl. one space into multiple spaces)
- give clients a way to resolve path in space to the actual/origin space and path in that space, which would be the same across all locations an item is shared into (i.e.
[spaceA.id]:/projectA/README.md
and[spaceB.id]:/contributions/felix/README.md
would be directly mapped to[spaceC.id]:/README.md
in the client) - clients don't have to enumerate the same folder multiple times in different spaces (or even through different spaces), but instead can enumerate the source space directly and have up-to-date, consistent data across all locations the space is mapped/mounted at
- lightweight server implementation, since the server wouldn't need to return contents from other spaces within itself (or at all), propagate eTag/cTag changes, etc. … – the client would take care of mapping the space into the target space at the correct location
docs/adr/0005-api-for-spaces.md
Outdated
|
||
* **personal**: The users home space | ||
* **projectSpaces**: The project spaces available for the user (*) | ||
* **shares**: The share jail, contains all shares for the user (*) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This makes it sound as if all shares are mapped into this space, but the existence of driveStatus
suggests that each share would be represented by its own space.
If so, the value should probably use the singular share
(and likewise projectSpace
if one space is returned for each project space).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, this is now on the essentials about shares vs. spaces.
The SharesJail is just a collection of shares which does not include spaces (project folders)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
does the name SharesJail
imply that files there cannot be moved outside the jail?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, shares are always listed inside shares
. That does not necessarily mean that shares is a directory. It is up to the clients to render that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you update the title to 0007-api-for-spaces.md? and also the filename? 2 more ADR were merged since this is open :)
docs/adr/0005-api-for-spaces.md
Outdated
|
||
### API to Get Info about Spaces | ||
|
||
ownCloud servers provide an API to query for available spaces of an user. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ownCloud servers provide an API to query for available spaces of an user. | |
ownCloud servers provide an API to query for available spaces of a user. |
docs/adr/0005-api-for-spaces.md
Outdated
|
||
* **personal**: The users home space | ||
* **projectSpaces**: The project spaces available for the user (*) | ||
* **shares**: The share jail, contains all shares for the user (*) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
does the name SharesJail
imply that files there cannot be moved outside the jail?
It indicates the status if the user has accepted the space or if it is mandatory like shares or personal.
Co-authored-by: Jörn Friedrich Dreyer <[email protected]>
Co-authored-by: Jörn Friedrich Dreyer <[email protected]>
Co-authored-by: Jörn Friedrich Dreyer <[email protected]>
Co-authored-by: Jörn Friedrich Dreyer <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@felix-schwarz I think mount points should be managed by the clients. the could actually add an extended attribute to mark a folder as tho mount point for another storage space. no need for a dedicated api or special properties.
reva does have references that are used to implement shares. But the logic about 'plumbing together' a namespace out of a 'sea of storage space' is client specific. how you presend all incoming shares is up to the actual client. web might do it differently ...
I'd leave mount points out of this for now. storage spaces have types and we can aggregate them in lists for eg. 'shares', 'spaces', 'home' ...
4fd6674
to
3122239
Compare
Description
First draft of an API Spec for the spaces API that we want to implement on oCIS.
Drafted to give a get better understanding of client impact and implementation steps.
Related Issue
Jira OCIS-1683
Jira OCIS-1684