An open source DocSend alternative
BlueWave DataRoom is an open source DocSend alternative where you can share your files privately with anyone outside of your organization.
Currently, BlueWave DataRoom is in its early stage of development. The current designs and the style guide can be viewed here. Note that they are WIP.
- Uploading and editing files
- Sharing and link control
- Tracking and analytics
- Document viewer
- Company branding
User
| Name | Type | Notes |
|---|---|---|
userId |
string |
Primary Key. Unique ID for each user |
firstName |
string |
First name |
lastName |
string |
Last name |
email |
string |
Unique. User's email |
profilePicUrl |
string |
URL to User's picture |
isActive |
boolean |
Default: true |
isVerified |
boolean |
Default: false |
lastLogin |
Date |
Timestamp of the last login |
createdAt |
Date |
Not Null. Timestamp when the user was created |
updatedAt |
Date |
Not Null. Timestamp when the user was last updated |
Documents
| Name | Type | Notes |
|---|---|---|
fileId |
string |
Primary Key. Unique ID identifying the file |
parentFileId |
string |
Foreign Key. References Documents.fileId |
fileName |
string |
Name of the file |
type |
string |
File type / extension |
fileDirectory |
string |
Directory where the file is located |
fileSize |
int |
Size of the file in bytes |
mimeType |
string |
MIME type of the file |
createdBy |
string |
Foreign Key. References User.userId |
createdAt |
Date |
Not Null. Creation time |
updatedAt |
Date |
Not Null. Last update time |
updatedBy |
string |
Foreign Key. References User.userId |
totalViews |
int |
Total number of times the file was viewed |
uniqueViews |
int |
Number of unique viewers of the file |
Links
| Name | Type | Notes |
|---|---|---|
linkId |
string |
Primary Key. Unique ID for the link |
fileId |
string |
Foreign Key. References Documents.fileId |
linkName |
string |
Name of the link |
linkUrl |
string |
URL of the link |
isPublic |
boolean |
Indicates if the link is public |
emailRequired |
boolean |
Indicates if an email is required for download |
passwordRequired |
boolean |
Indicates if a password is required to view and download the file |
linkPassword |
string |
Password reqired to view and download the file |
linkUrl |
string |
URL of the link |
canExpire |
boolean |
Indicates if the link can expire |
expirationTime |
Date |
Expiration date of the link (nullable) |
updatedAt |
Date |
Not Null. Last update time |
createdAt |
Date |
Not Null. Creation time |
createdBy |
string |
Foreign Key. References User.userId |
DataRooms
| Name | Type | Notes |
|---|---|---|
folderId |
string |
Primary Key. Unique ID for the folder |
folderName |
string |
Name of the folder |
folderLocation |
string |
Location of the folder |
updatedAt |
Date |
Not Null. Last update time |
updatedBy |
string |
Foreign Key. References User.userId |
createdAt |
Date |
Not Null. Creation time |
createdBy |
string |
Foreign Key. References User.userId |
AccessLogs
| Name | Type | Notes |
|---|---|---|
logId |
string |
Primary Key. Unique ID for each access log |
linkId |
string |
Foreign Key. ID of the link accessed |
userId |
string |
Foreign Key. ID of the user who accessed the link |
accessTime |
Date |
Not Null. Timestamp when the link was accessed |
ipAddress |
string |
IP address of the user who accessed the link |
GET /api/v1/auth/users
Method/Headers Value Method GET content-type application/json
Type Notes Array<User>Returns an array containing all users
POST /api/v1/auth/register
Method/Headers Value Method POST content-type multipart/form-data
Name Type Notes firstName stringlastName stringstringValid email address password stringMin 8 chars, One Upper, one number, one special role Array<string>Array of user roles
Type Notes User User data JWT JSON web token
POST /api/v1/auth/login
Method/Headers Value Method POST content-type application/json
Name Type Notes stringValid email address password string
Type Notes User User data JWT JSON web token
POST /api/v1/auth/user/{userId}
Method/Headers Value Method POST content-type multipart/form-data
Name Type Notes firstName stringOptional lastName stringOptional profileIame fileOptional password stringRequired to change password newPassword stringRequired to change password
Type Notes UserReturns the updated user
POST /api/v1/auth/recovery/request
Method/Headers Value Method POST content-type application/json
Name Type Notes stringUser's email
Type Notes RecoveryTokenReturns a recovery token if email found
POST /api/v1/auth/recovery/validate
Method/Headers Value Method POST content-type application/json
Name Type Notes recoveryToken stringToken issued in /recovery/request
Type Notes RecoveryTokenReturns the recovery token
POST /api/v1/auth/recovery/reset
Method/Headers Value Method POST content-type application/json
Name Type Notes recoveryToken stringToken issued returned by /recovery/validatepassword stringUser's new password`
Type Notes UserReturns the updated user
GET /api/v1/documents
Method/Headers Value Method GET content-type application/json
Type Notes Array<Document>Array of all latest versions of documents
GET /api/v1/documents/versions/{documentId}
Method/Headers Value Method GET content-type application/json
Type Notes Array<Document>Array of all documents versions for the parent document
GET /api/v1/document/{documentId}
Method/Headers Value Method GET content-type application/json
Type Notes DocumentDocument with the id in the request parameter
POST /api/v1/document
Method/Headers Value Method POST content-type multipart/form-data
Name Type Notes Accepted Values fileDatastringThe file to be uploaded fileNamestringName of the file typestringFile type / extension fileDirectorystringDirectory where the file should go fileSizeintSize of the file in bytes mimeTypestringMIME type of the file userIdstringUserId of current user
Type Notes DocumentReturns newly created Document
POST /api/v1/document/delete/{fileId}
Method/Headers Value Method POST content-type application/json
Type Notes NoneNo payload returned
POST /api/v1/document/edit/{fileId}
Method/Headers Value Method POST content-type multipart/form-data
Name Type Notes Accepted Values fileDatastringThe file to be uploaded fileNamestringName of the file typestringFile type / extension fileDirectorystringDirectory where the file should go fileSizeintSize of the file in bytes mimeTypestringMIME type of the file userIdstringUserId of current user
Type Notes DocumentReturns updated Document
GET /api/v1/datarooms
Method/Headers Value Method GET content-type application/json
Type Notes Array<DataRoom>Array of all datarooms
GET /api/v1/dataroom/{folderId}
Method/Headers Value Method GET content-type application/json
Type Notes DataRoomSingle dataroom with the id in the request parameter
POST /api/v1/dataroom
Method/Headers Value Method POST content-type application/json
Name Type Notes Accepted Values folderNamestringName of the file folderLocationstringFile type / extension userIdstringUserId of current user
Type Notes DataRoomReturns newly created DataRoom
POST /api/v1/dataroom/delete/{folderId}
Method/Headers Value Method POST content-type application/json
Type Notes NoneNo payload returned
POST /api/v1/dataroom/edit/{folderId}
Method/Headers Value Method POST content-type application/json
Name Type Notes Accepted Values folderNamestringName of the file folderLocationstringFile type / extension userIdstringUserId of current user
Type Notes DataRoomReturns updated DataRoom
GET /api/v1/links
Method/Headers Value Method GET content-type application/json
Type Notes Array<Links>Array of all links
GET /api/v1/link/{linkId}
Method/Headers Value Method GET content-type application/json
Type Notes LinkSinge Link with the id in the request parameter
POST /api/v1/link
Method/Headers Value Method POST content-type application/json
Name Type Notes Accepted Values fileIdstringThe fileId of the file the link is generated for linkNamestringName of the link isPublicbooleanIndicates if the link is public emailRequiredbooleanIndicates if email is required to download passwordRequiredbooleanIndicates if password is required to download linkPasswordstringPassword required to download canExpirebooleanIndicates if the link can expire expirationTimeDateDate in which the link expires
Type Notes LinkReturns newly created Link
POST /api/v1/link/delete/{linkId}
Method/Headers Value Method POST content-type application/json
Type Notes NoneNo payload returned
POST /api/v1/link/edit/{linkId}
Method/Headers Value Method POST content-type application/json
Name Type Notes Accepted Values linkNamestringName of the link isPublicbooleanIndicates if the link is public emailRequiredbooleanIndicates if email is required to download passwordRequiredbooleanIndicates if password is required to download linkPasswordstringPassword required to download canExpirebooleanIndicates if the link can expire expirationTimeDateDate in which the link expires
Type Notes LinkReturns updated Link
