The spaces feature leverages independent storage units and makes them usable for personal and project folders
Properties
Name
Description
Required
Name
Space Name
✅
driveType
The type of the space. Currently personal or project
✅
driveAlias
The human readable alias for the space. It can be set by a template. Defaults are personal/username and project/name-lowercase-with-dashes
✅
id
Unique identifier for a space. Usually a uuidV4. For personal spaces we are using the user UUID
✅
description
Short description for the Space. Default empty.
owner
The file owner for all files inside the space. On personal spaces the user. On other spaces we have no real owner set. Other spaces have an invalid user type set which cannot log in. This userID is used for public link authentication
✅
quota
The limitiation for the disk usage. Example json "quota": {"remaining": 1000000000,"state": "normal","total": 1000000000,"used": 0 }, It is not mandatory.
root
This represents the root folder of a space.
✅
root.etag
Etag of the root folder. Used by clients.
✅
root.id
ID of the root folder. Same as the spaceID
✅
root.WebDavUrl
The WebDAV Endpoint to sync this space. It builds like /dav/spaces/{spaceID}
✅
permissions
This is a list of all users which have access to this space and their roles
✅
Spaces UI
Lifecycle
Creating a Space
To create a project space, users need to have the permission CreateSpace(ID: 79e13b30-3e22-11eb-bc51-0b9f0bad9a58). In the default config this permission is assigned to the roles Admin and SpaceAdmin.
During the creation of a project space, the following actions occur:
A Storage Space of type project is created
The Creating User is added to the space with the Manager Role
A .space folder is created with the content Readme.md
Space Administration
1) Users with the Manager Role can add and remove people to/from a space.
2) Users with the global Permission CanManageAllSpaceMembers can also manage the space members (PLANNED, NOT IMPLEMENTED)
Disabling and Deleting a space
1) Users with the Manager Role can disable/restore and delete a space (2 steps needed)
2) Users with the global Permission CanDeleteAllSpaces and CanRestoreAllSpaces can also disable, delete and restore the space (PLANNED, NOT IMPLEMENTED).
Consequence of a disabled space
Nobody can list the contents of the space anymore (404 Response on the PROPFIND)
The desktop client will delete the contents of that space locally
The space Image is not shown anymore (CURRENT STATE, CAN BE CHANGED)
Change Properties of the space
The following properties can be changed:
Name
Description
Space Role
Global Permission
quota
The limitation for the disk usage.
---
SetSpaceQuota
Name
Space Name
Manager
---
description
Short description for the Space. Default empty.
Manager
---
trashed
The trashed state.
Manager
PLANNED
driveAlias
The human readable alias for the space.
Manager, Editor
---
Readme
The human readable alias for the space.
Manager, Editor
---
Image
The human readable alias for the space.
Manager, Editor
---
Listing Spaces
All My Spaces
The normal user wants to list all spaces where he is a regular member of. The API provides an endpoint for this (me/drives) which supports filtering (type, owner, ID) and sorting (name, lastModifiedDateTime).
All Available spaces
The admin user with the global permission wants to list all available spaces. The API provides an endpoint for this (/drives) which supports filtering (type, owner, ID) and sorting (name, lastModifiedDateTime).
The admin user CAN NOT list the content of spaces where he is no regular member of. This is an important design principle.
The admin user should be able to manage spaces where he is not a regular member of.
1) The control over the available disk space is a primary admin task. This is reflected in the ability to set a Quota on all available spaces.
2) The admin user could be needed to help out when something goes wrong. Therefore he needs to be able to deactivate, delete and restore all available spaces and manage their members.
Shares and Membership
All Space members should see all collaborators in a project space. Project spaces are long-term collaboration areas. They should be completely transparent.
All members with the role Manager should be able to share sub items of a space via:
Description
This is the
for the Spaces Feature
What is the Spaces Feature
The spaces feature leverages independent storage units and makes them usable for
personal
andproject
foldersProperties
personal
orproject
personal/username
andproject/name-lowercase-with-dashes
json "quota": {"remaining": 1000000000,"state": "normal","total": 1000000000,"used": 0 },
It is not mandatory./dav/spaces/{spaceID}
Spaces UI
Lifecycle
Creating a Space
To create a project space, users need to have the permission
CreateSpace
(ID: 79e13b30-3e22-11eb-bc51-0b9f0bad9a58
). In the default config this permission is assigned to the rolesAdmin
andSpaceAdmin
.During the creation of a project space, the following actions occur:
project
is createdManager
Role.space
folder is created with the contentReadme.md
Space Administration
1) Users with the
Manager
Role can add and remove people to/from a space. 2) Users with the global PermissionCanManageAllSpaceMembers
can also manage the space members (PLANNED, NOT IMPLEMENTED)Disabling and Deleting a space
1) Users with the
Manager
Role can disable/restore and delete a space (2 steps needed) 2) Users with the global PermissionCanDeleteAllSpaces
andCanRestoreAllSpaces
can also disable, delete and restore the space (PLANNED, NOT IMPLEMENTED).Consequence of a disabled space
404
Response on thePROPFIND
)Change Properties of the space
The following properties can be changed:
SetSpaceQuota
Listing Spaces
All My Spaces
The normal user wants to list all spaces where he is a regular member of. The API provides an endpoint for this (
me/drives
) which supports filtering (type, owner, ID) and sorting (name, lastModifiedDateTime).All Available spaces
The admin user with the global permission wants to list all available spaces. The API provides an endpoint for this (
/drives
) which supports filtering (type, owner, ID) and sorting (name, lastModifiedDateTime).The admin user CAN NOT list the content of spaces where he is no regular member of. This is an important design principle.
The admin user should be able to manage spaces where he is not a regular member of.
1) The control over the available disk space is a primary admin task. This is reflected in the ability to set a Quota on all available spaces. 2) The admin user could be needed to help out when something goes wrong. Therefore he needs to be able to deactivate, delete and restore all available spaces and manage their members.
Shares and Membership
All Space members should see all collaborators in a project space. Project spaces are long-term collaboration areas. They should be completely transparent.
All members with the role
Manager
should be able to share sub items of a space via: