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
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
Method/Headers |
Value |
Method |
POST |
content-type |
multipart/form-data |
Name |
Type |
Notes |
firstName |
string |
|
lastName |
string |
|
email |
string |
Valid email address |
password |
string |
Min 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
Method/Headers |
Value |
Method |
POST |
content-type |
application/json |
Name |
Type |
Notes |
email |
string |
Valid email address |
password |
string |
|
Type |
Notes |
User |
User data |
JWT |
JSON web token |
POST
/api/v1/auth/user/{userId}
Method/Headers
Method/Headers |
Value |
Method |
POST |
content-type |
multipart/form-data |
Name |
Type |
Notes |
firstName |
string |
Optional |
lastName |
string |
Optional |
profileIame |
file |
Optional |
password |
string |
Required to change password |
newPassword |
string |
Required to change password |
Type |
Notes |
User |
Returns the updated user |
POST
/api/v1/auth/recovery/request
Method/Headers
Method/Headers |
Value |
Method |
POST |
content-type |
application/json |
Name |
Type |
Notes |
email |
string |
User's email |
Type |
Notes |
RecoveryToken |
Returns a recovery token if email found |
POST
/api/v1/auth/recovery/validate
Method/Headers
Method/Headers |
Value |
Method |
POST |
content-type |
application/json |
Name |
Type |
Notes |
recoveryToken |
string |
Token issued in /recovery/request |
Type |
Notes |
RecoveryToken |
Returns the recovery token |
POST
/api/v1/auth/recovery/reset
Method/Headers
Method/Headers |
Value |
Method |
POST |
content-type |
application/json |
Name |
Type |
Notes |
recoveryToken |
string |
Token issued returned by /recovery/validate |
password |
string |
User's new password` |
Type |
Notes |
User |
Returns the updated user |
GET
/api/v1/documents
Method/Headers
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
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
Method/Headers |
Value |
Method |
GET |
content-type |
application/json |
Type |
Notes |
Document |
Document with the id in the request parameter |
POST
/api/v1/document
Method/Headers
Method/Headers |
Value |
Method |
POST |
content-type |
multipart/form-data |
Name |
Type |
Notes |
Accepted Values |
fileData |
string |
The file to be uploaded |
|
fileName |
string |
Name of the file |
|
type |
string |
File type / extension |
|
fileDirectory |
string |
Directory where the file should go |
|
fileSize |
int |
Size of the file in bytes |
|
mimeType |
string |
MIME type of the file |
|
userId |
string |
UserId of current user |
|
Type |
Notes |
Document |
Returns newly created Document |
POST
/api/v1/document/delete/{fileId}
Method/Headers
Method/Headers |
Value |
Method |
POST |
content-type |
application/json |
Type |
Notes |
None |
No payload returned |
POST
/api/v1/document/edit/{fileId}
Method/Headers
Method/Headers |
Value |
Method |
POST |
content-type |
multipart/form-data |
Name |
Type |
Notes |
Accepted Values |
fileData |
string |
The file to be uploaded |
|
fileName |
string |
Name of the file |
|
type |
string |
File type / extension |
|
fileDirectory |
string |
Directory where the file should go |
|
fileSize |
int |
Size of the file in bytes |
|
mimeType |
string |
MIME type of the file |
|
userId |
string |
UserId of current user |
|
Type |
Notes |
Document |
Returns updated Document |
GET
/api/v1/datarooms
Method/Headers
Method/Headers |
Value |
Method |
GET |
content-type |
application/json |
Type |
Notes |
Array<DataRoom> |
Array of all datarooms |
GET
/api/v1/dataroom/{folderId}
Method/Headers
Method/Headers |
Value |
Method |
GET |
content-type |
application/json |
Type |
Notes |
DataRoom |
Single dataroom with the id in the request parameter |
POST
/api/v1/dataroom
Method/Headers
Method/Headers |
Value |
Method |
POST |
content-type |
application/json |
Name |
Type |
Notes |
Accepted Values |
folderName |
string |
Name of the file |
|
folderLocation |
string |
File type / extension |
|
userId |
string |
UserId of current user |
|
Type |
Notes |
DataRoom |
Returns newly created DataRoom |
POST
/api/v1/dataroom/delete/{folderId}
Method/Headers
Method/Headers |
Value |
Method |
POST |
content-type |
application/json |
Type |
Notes |
None |
No payload returned |
POST
/api/v1/dataroom/edit/{folderId}
Method/Headers
Method/Headers |
Value |
Method |
POST |
content-type |
application/json |
Name |
Type |
Notes |
Accepted Values |
folderName |
string |
Name of the file |
|
folderLocation |
string |
File type / extension |
|
userId |
string |
UserId of current user |
|
Type |
Notes |
DataRoom |
Returns updated DataRoom |
GET
/api/v1/links
Method/Headers
Method/Headers |
Value |
Method |
GET |
content-type |
application/json |
Type |
Notes |
Array<Links> |
Array of all links |
GET
/api/v1/link/{linkId}
Method/Headers
Method/Headers |
Value |
Method |
GET |
content-type |
application/json |
Type |
Notes |
Link |
Singe Link with the id in the request parameter |
POST
/api/v1/link
Method/Headers
Method/Headers |
Value |
Method |
POST |
content-type |
application/json |
Name |
Type |
Notes |
Accepted Values |
fileId |
string |
The fileId of the file the link is generated for |
|
linkName |
string |
Name of the link |
|
isPublic |
boolean |
Indicates if the link is public |
|
emailRequired |
boolean |
Indicates if email is required to download |
|
passwordRequired |
boolean |
Indicates if password is required to download |
|
linkPassword |
string |
Password required to download |
|
canExpire |
boolean |
Indicates if the link can expire |
|
expirationTime |
Date |
Date in which the link expires |
|
Type |
Notes |
Link |
Returns newly created Link |
POST
/api/v1/link/delete/{linkId}
Method/Headers
Method/Headers |
Value |
Method |
POST |
content-type |
application/json |
Type |
Notes |
None |
No payload returned |
POST
/api/v1/link/edit/{linkId}
Method/Headers
Method/Headers |
Value |
Method |
POST |
content-type |
application/json |
Name |
Type |
Notes |
Accepted Values |
linkName |
string |
Name of the link |
|
isPublic |
boolean |
Indicates if the link is public |
|
emailRequired |
boolean |
Indicates if email is required to download |
|
passwordRequired |
boolean |
Indicates if password is required to download |
|
linkPassword |
string |
Password required to download |
|
canExpire |
boolean |
Indicates if the link can expire |
|
expirationTime |
Date |
Date in which the link expires |
|
Type |
Notes |
Link |
Returns updated Link |