Introduction
Welcome to FileAgo v3.0 API.
This document assumes that a FileAgo installation is running on https://fileago.mydomain.com/, and the examples are also based on this host. You must modify the CURL commands so that you are referring to your FileAgo server.
Authentication
To authorize, use this code:
curl -X POST \
'https://fileago.mydomain.com/auth' \
-d '{"username":"<EMAIL ADDRESS>", "password": "<PASSWORD>"}'A successfull response will be like:
Status Code: 200 OK
{
"uuid": "a805ae1b-5bde-454d-9c2e-4b171aa04c17",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1Mzg3MDYwMjIsInVzZXJuYW1lIjoiam9obmRvZUBnbWFpbC5jb20iLCJ1dWlkIjoiYTgwNWFlMWItNWJkZS00NTRkLTljMmUtNGIxNzFhYTA0YzE3In0.fSYkeR4LBEp_Z2n7vIWvUIl_Y_EJd01MT9UFiziij-w",
"status": "success",
"msg": "Login successful.",
"is_admin": true,
"fullname": "Vimal Kumar",
"fileaccesskey": "6dba6924-ad66-42de-8ed2-8008f2c7c06e-3a18c571-2638-475f-ae4b-62211395cab3",
"avatar": "/images/default_avatar.png"
}The first step is to authenticate with the server, and grab the token and fileaccesskey. The token is valid for next 24 hours.
HTTP Request
POST /auth
POST Parameters
| Parameter | Description |
|---|---|
| username | Email address of the user, or admin (if admin is trying to login) |
| password | Password of the user |
HTTP Response
| Parameter | Description |
|---|---|
| uuid | UUID of the user |
| token | JWT token for this session. All subsequent API calls must contain this token in the Authorization header. Keep this handy |
| status | success when the authentication is successful |
| msg | Message |
| is_admin | true if the user has administrator privileges |
| fullname | Name of the user |
| fileaccesskey | This key is necessary for downloading files |
| avatar | URL of the avatar image of this user |
File Actions
Files & Folders Concepts
All files and folders has a unique identity (UUID) associated with it. In order to access details of a file or folder, the corresponding API call will almost always include this UUID.
Like files and folders, users and groups also has UUID associated to it. In order to access top level directories, the UUID of the owner (user or group) has to be included as well.
For example, if a user wants to access the top level directories of a group (UUID = 3d768c52-a685-4f15-a487-3b5fdaa333a4), then the values will be like:
| Folder | Value in API call |
|---|---|
| home | home:3d768c52-a685-4f15-a487-3b5fdaa333a4 |
| incoming | incoming:3d768c52-a685-4f15-a487-3b5fdaa333a4 |
| trash | trash:3d768c52-a685-4f15-a487-3b5fdaa333a4 |
| public_shares | public_shares:3d768c52-a685-4f15-a487-3b5fdaa333a4 |
| private_shares | private_shares:3d768c52-a685-4f15-a487-3b5fdaa333a4 |
| favorites | favorites:3d768c52-a685-4f15-a487-3b5fdaa333a4 |
| shared_with_you | shared_with_you:3d768c52-a685-4f15-a487-3b5fdaa333a4 |
Example API calls:
GET /api/nodes/home:3d768c52-a685-4f15-a487-3b5fdaa333a4
GET /api/nodes/trash:3d768c52-a685-4f15-a487-3b5fdaa333a4/dirlist
.. and so on. However, to access his own home or trash folder, a user does not need to include own user UUID in URL. For example,
GET /api/nodes/home
GET /api/nodes/trash/dirlist
.. is enough.
Create folder
To create a new folder, the API call will be like:
curl -X POST \
'https://fileago.mydomain.com/api/nodes/NODEUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"new_dir": DIRNAME
}'On success, the server returns:
Status Code: 204 No ContentPOST Parameters
| Parameter | Type | Description |
|---|---|---|
| NODEUUID | String | UUID of the folder in which new folder should be created |
| DIRNAME | String | Name of the new folder |
Get node access permissions
To retrieve access permissions for a node, use this API call:
curl 'https://fileago.mydomain.com/api/nodes/NODEUUID/myaccess' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'Successful response:
{
"status": "success",
"msg": "Details fetched successfully",
"data": [
"read",
"write",
"delete",
"download"
]
}Path Parameters
| Parameter | Type | Description |
|---|---|---|
| NODEUUID | String | UUID of the node to retrieve access permissions for |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| status | String | Operation status (“success” or “error”) |
| msg | String | Human-readable message describing the result |
| data | String[] | Array of access permissions available for the node (read, write, delete, download) |
Rename a node
To rename a node, the API call will be like:
curl -X POST \
'https://fileago.mydomain.com/api/nodes/NODEUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"new_name": NEWNAME
}'On success, the server returns:
Status Code: 204 No ContentPOST Parameters
| Parameter | Type | Description |
|---|---|---|
| NODEUUID | String | UUID of the folder or file |
| NEWNAME | String | New name to be set |
Delete a node
curl -X DELETE \
'https://fileago.mydomain.com/api/nodes/NODEUUID' \
-H 'Authorization: Bearer TOKEN'On success, the server returns:
Status Code: 204 No ContentRequest Parameters
| Parameter | Type | Description |
|---|---|---|
| NODEUUID | String | UUID of the folder or file which is to be deleted |
Mark as favorite
To mark a node as favorite, the API call will be like:
curl -X POST \
'https://fileago.mydomain.com/api/nodes/NODEUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"starred": BOOL
}'On success, the server returns:
Status Code: 204 No ContentPOST Parameters
| Parameter | Type | Description |
|---|---|---|
| NODEUUID | String | UUID of the folder or file |
| BOOL | Boolean | true will add the node to favorites list, while false will remove it from favorites |
Copy node to another folder
To copy a node to another folder, the API call will be like:
curl -X POST \
'https://fileago.mydomain.com/api/nodes/NODEUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"copy_to": TARGETNODEUUID
}'On success, the server returns:
Status Code: 204 No ContentPOST Parameters
| Parameter | Type | Description |
|---|---|---|
| NODEUUID | String | UUID of the folder or file |
| TARGETNODEUUID | String | UUID of the target folder |
Move node to another folder
To move a node to another folder, the API call will be like:
curl -X POST \
'https://fileago.mydomain.com/api/nodes/NODEUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"move_to": TARGETNODEUUID
}'On success, the server returns:
Status Code: 204 No ContentPOST Parameters
| Parameter | Type | Description |
|---|---|---|
| NODEUUID | String | UUID of the folder or file |
| TARGETNODEUUID | String | UUID of the target folder |
Share a copy of node with other users/groups
To share a copy of a node with other users or groups, the API call will be like:
curl -X POST \
'https://fileago.mydomain.com/api/nodes/NODEUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"share_copy_with": [TARGET]
}'On success, the server returns:
Status Code: 204 No ContentPOST Parameters
| Parameter | Type | Description |
|---|---|---|
| NODEUUID | String | UUID of the folder or file |
| TARGET | String | UUID of the target user or group. Mention more UUIDs within the list if the node is being shared with multiple users or groups, e.g.: [UUID_OF_USER1, UUID_OF_USER2, UUID_OF_GROUP1] |
Create new file
- Request an upload token
curl 'https://fileago.mydomain.com/api/nodes/NODEUUID/upload' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'On success, the server returns:
Status Code: 200 OK
{
"token":UPLOADTOKEN,
"status":"success",
"msg":"This token is valid for next 5 seconds only"
}
- Upload file using the upload endpoint
curl 'https://fileago.mydomain.com/upload/UPLOADTOKEN' \
-F 'file=@filename.txt'On success, the server returns:
Status Code: 200 OK
{
"status":"success",
"msg":"File(s) uploaded successfully"
}Creating a new file consists of 2 steps:
- GET an upload token for the target folder (which is valid for next 5 seconds)
Request Parameters
| Parameter | Type | Description |
|---|---|---|
| NODEUUID | String | UUID of the folder |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| token | String | Upload token |
- POST file content to the upload endpoint
/upload/UPLOADTOKEN
POST Parameters
| Parameter | Type | Description |
|---|---|---|
| UPLOADTOKEN | String | Upload token |
| file | String | Path of the filename to upload |
Create new file revision
- Request an upload token
curl 'https://fileago.mydomain.com/api/nodes/NODEUUID/upload' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'On success, the server returns:
Status Code: 200 OK
{
"token":UPLOADTOKEN,
"status":"success",
"msg":"This token is valid for next 5 seconds only"
}
- Upload file using the upload endpoint
curl 'https://fileago.mydomain.com/upload/UPLOADTOKEN' \
-F 'file=@filename.txt'On success, the server returns:
Status Code: 200 OK
{
"status":"success",
"msg":"File(s) uploaded successfully"
}Creating a new file revision consists of 2 steps:
- GET an upload token for the target file (which is valid for next 5 seconds)
Request Parameters
| Parameter | Type | Description |
|---|---|---|
| NODEUUID | String | UUID of the file |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| token | String | Upload token |
- POST file content to the upload endpoint
/upload/UPLOADTOKEN
POST Parameters
| Parameter | Type | Description |
|---|---|---|
| UPLOADTOKEN | String | Upload token |
| file | String | Path of the filename to upload |
View a file
To view a file, use this API call:
curl 'https://fileago.mydomain.com/resources/auth/view/FILEACCESSKEY/FILEUUID/VERSION/FILENAME'Successful response will return the file content with headers:
Status Code: 200 OK
<file binary content>Request Parameters
| Parameter | Type | Description |
|---|---|---|
| FILEACCESSKEY | String | File access key issued for the current session |
| FILEUUID | String | UUID of the specific file |
| VERSION | String | File version identifier (999999999999999 for latest version) |
| FILENAME | String | Name of the file for download |
Response Description
- Returns raw file content with appropriate Content-Type header
- Includes Content-Disposition header for browser view behavior
- Status code 200 indicates successful retrieval
Download a file
To download a file, use this API call:
curl 'https://fileago.mydomain.com/resources/auth/download/FILEACCESSKEY/FILEUUID/VERSION/FILENAME'Successful response will return the file content with headers:
Status Code: 200 OK
<file binary content>Request Parameters
| Parameter | Type | Description |
|---|---|---|
| FILEACCESSKEY | String | File access key issued for the current session |
| FILEUUID | String | UUID of the specific file |
| VERSION | String | File version identifier (999999999999999 for latest version) |
| FILENAME | String | Name of the file for download |
Response Description
- Returns raw file content with appropriate Content-Type header
- Includes Content-Disposition header for browser download behavior
- Status code 200 indicates successful retrieval
Get details of a node
To fetch the detail of a node, the API call will be like:
curl 'https://fileago.mydomain.com/api/nodes/NODEUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'On success, the server returns (example result given below):
Status Code: 200 OK
{
"status": "success",
"msg": "Node info fetched successfully",
"data": {
"name": "Misc",
"type": "Dir",
"uuid": "d27fd3e2-2a5e-40c2-abc3-74f6734b190f",
"owner_type": "User",
"owner_uuid": "db1990e6-519c-4596-8778-37fd2d959691",
"owner_fullname": "John Doe",
"created": 1503597685574,
"updated": 1533281990916
}
}Request Parameters
| Parameter | Type | Description |
|---|---|---|
| NODEUUID | String | UUID of the folder or file |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| status | String | success if no errors |
| msg | String | Message |
| name | String | Name of the node |
| type | String | Dir if the node is a folder, else File |
| uuid | String | UUID of the node |
| owner_type | String | User if the owner is a user, else Group |
| owner_uuid | String | UUID of the owner of the node |
| owner_fullname | String | Name of the owner |
| created | Integer | Created time in epoch (milliseconds) |
| updated | Integer | Updated time in epoch (milliseconds) |
Get path of a node
To find the path of a node, the API call will be like:
curl 'https://fileago.mydomain.com/api/nodes/NODEUUID/path' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'On success, the server returns (example result given below):
Status Code: 200 OK
{
"status":"success",
"msg":"Node path fetched successfully",
"data":[
{"name": "Home", "uuid": "home"},
{"name": "Misc", "uuid": "d27fd3e2-2a5e-40c2-abc3-74f6734b190f"}
]
}Request Parameters
| Parameter | Type | Description |
|---|---|---|
| NODEUUID | String | UUID of the folder or file |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| status | String | success if no errors |
| msg | String | Message |
| data | List | List of node names and its UUID starting from the top level directory |
List contents of a folder
To list the items inside a folder, the API call will be like:
curl 'https://fileago.mydomain.com/api/nodes/NODEUUID/dirlist' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'On success, the server returns (example result given below):
Status Code: 200 OK
{
"status": "success",
"msg": "Directory contents fetched successfully",
"data": [
{
"is_starred": false,
"public_shares": 0,
"name": "My Documents",
"size": 4,
"comment_count": 13,
"uuid": "50a3495d-9da5-469a-a971-57f2fe97a6fa",
"private_shares": 0,
"updated": 1522740152809,
"type": "Dir"
}, {
"is_starred": true,
"public_shares": 0,
"name": "Invoice.docx",
"size": 493135,
"comment_count": 0,
"uuid": "1339025b-d6e4-4c1e-9c62-85fc65ee0118",
"private_shares": 0,
"revision": 1,
"updated": 1538224353000,
"type": "File"
}
]
}Request Parameters
| Parameter | Type | Description |
|---|---|---|
| NODEUUID | String | UUID of the folder |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| status | String | success if no errors |
| msg | String | Message |
| data | List | List of nodes that are present in this folder |
User and Group Actions
The endpoints in this section are available to authenticated users. Some group endpoints require the authenticated user to be a member of the group, and some write operations require the user to be a group administrator.
All examples assume that the Authorization header contains the JWT token returned by the authentication API.
Common Headers
| Header | Description |
|---|---|
| Authorization | Bearer TOKEN |
| Content-Type | application/json for requests with a JSON body |
Permission Values
| Permission | Allowed Values |
|---|---|
| node_permissions | read, write, delete, download |
| tag_permissions | create, delete |
| share_permissions | public_create, public_delete, private_create, private_delete, upload_link_create, upload_link_delete |
Get current user profile
To fetch the profile of the authenticated user:
curl 'https://fileago.mydomain.com/api/user' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'Successful response:
{
"status": "success",
"msg": "User details fetched successfully",
"data": {
"uuid": "a805ae1b-5bde-454d-9c2e-4b171aa04c17",
"fullname": "John Doe",
"email": "john@example.com",
"is_active": true,
"is_admin": false,
"avatar": "/images/default_avatar.png",
"disk_quota": 1073741824,
"disk_used": 1048576,
"twofa": false,
"created": 1522740152809
}
}HTTP Request
GET /api/user
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| uuid | String | UUID of the authenticated user |
| fullname | String | Full name of the user |
| String | Email address of the user | |
| is_active | Boolean | Indicates whether the user account is active |
| is_admin | Boolean | Indicates whether the user has administrator privileges |
| avatar | String | Path to the user’s avatar |
| disk_quota | Integer | Disk quota in bytes. 0 means unlimited |
| disk_used | Integer | Disk space used in bytes |
| twofa | Boolean | Indicates whether two-factor authentication is enabled |
| created | Integer | Account creation timestamp in milliseconds |
| pass_expires | Integer | Password expiry timestamp, when local password expiry applies |
Update current user profile
To update the current user’s name, password, or avatar:
curl -X PUT 'https://fileago.mydomain.com/api/user' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"fullname": "John Doe",
"password": "Newpass123",
"avatar": ""
}'HTTP Request
PUT /api/user
PUT Parameters
| Parameter | Type | Description |
|---|---|---|
| fullname | String | Optional. New full name. Must be at least 3 characters |
| password | String | Optional. New password. Must be at least 8 characters and include lowercase, uppercase, and numeric characters |
| avatar | String | Optional. Base64 data URL for PNG/JPEG avatar. Pass an empty string to reset to the default avatar |
Get notification settings
To fetch notification settings for the authenticated user:
curl 'https://fileago.mydomain.com/api/user/notifications' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'Successful response:
{
"status": "success",
"msg": "User notification settings fetched successfully",
"data": {
"email_alert_owned": true,
"email_alert_group_owned": true,
"email_alert_shared_with_me": true,
"email_alert_shared_with_my_groups": true,
"realtime_alert_owned": true,
"realtime_alert_group_owned": true,
"realtime_alert_shared_with_me": true,
"realtime_alert_shared_with_my_groups": true
}
}HTTP Request
GET /api/user/notifications
Update notification settings
To update notification settings:
curl -X PUT 'https://fileago.mydomain.com/api/user/notifications' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"email_alert_owned": true,
"realtime_alert_shared_with_me": false
}'HTTP Request
PUT /api/user/notifications
PUT Parameters
| Parameter | Type | Description |
|---|---|---|
| email_alert_owned | Boolean | Email alerts for resources owned by the user |
| email_alert_group_owned | Boolean | Email alerts for resources owned by groups of the user |
| email_alert_shared_with_me | Boolean | Email alerts for resources shared with the user |
| email_alert_shared_with_my_groups | Boolean | Email alerts for resources shared with groups of the user |
| realtime_alert_owned | Boolean | Real-time alerts for resources owned by the user |
| realtime_alert_group_owned | Boolean | Real-time alerts for resources owned by groups of the user |
| realtime_alert_shared_with_me | Boolean | Real-time alerts for resources shared with the user |
| realtime_alert_shared_with_my_groups | Boolean | Real-time alerts for resources shared with groups of the user |
Get 2FA status
To check whether two-factor authentication is enabled:
curl 'https://fileago.mydomain.com/api/user/2fa' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'Successful response:
{
"status": "success",
"msg": "User 2FA details fetched successfully",
"data": {
"twofa": false
}
}HTTP Request
GET /api/user/2fa
Enable or disable 2FA
To enable two-factor authentication:
curl -X POST 'https://fileago.mydomain.com/api/user/2fa' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{"twofa": true}'When enabling 2FA, the server returns the TOTP secret:
{
"status": "success",
"msg": "User 2FA details fetched successfully",
"data": {
"twofa": true,
"secret_twofa": "JBSWY3DPEHPK3PXP"
}
}HTTP Request
POST /api/user/2fa
POST Parameters
| Parameter | Type | Description |
|---|---|---|
| twofa | Boolean | true to enable 2FA, false to disable 2FA |
Get login history
To fetch recent login and logout activity:
curl 'https://fileago.mydomain.com/api/user/login_history' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/user/login_history
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| action | String | login or logout |
| action_args | String | Additional event details |
| error_details | String | Error details, when present |
| ip_address | String | Client IP address |
| status | String | Event status |
| timestamp | Integer | Event timestamp in milliseconds |
Logout
To close the current API session:
curl 'https://fileago.mydomain.com/api/user/logout' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/user/logout
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| chat_token | String | Optional. Chat auth token to close the chat session also |
List users
To list users in the authenticated user’s organization:
curl 'https://fileago.mydomain.com/api/users' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/users
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| format | String | Optional. Use short for basic user fields or short_active for basic fields of active users only |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| status | String | Operation status |
| msg | String | Human-readable message |
| data | Object[] | List of user objects |
List groups
To list groups available to the authenticated user:
curl 'https://fileago.mydomain.com/api/groups' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'Successful response:
{
"status": "success",
"msg": "Details fetched successfully",
"data": [
{
"group_uuid": "e9b25524-a6ba-4649-b5ec-4a29b8cc8c03",
"group_name": "Sales",
"is_admin": true,
"node_permissions": ["read", "write", "delete", "download"],
"tag_permissions": ["create", "delete"],
"share_permissions": ["public_create", "public_delete", "private_create", "private_delete"],
"avatar": "/images/group_avatar.png"
}
]
}HTTP Request
GET /api/groups
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| show | String | Optional. Use all to list all groups in the organization when the server setting allows sharing with all groups |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| group_uuid | String | UUID of the group |
| group_name | String | Name of the group |
| is_admin | Boolean | Indicates whether the current user is an administrator of this group |
| node_permissions | String[] | Node permissions granted through this group |
| tag_permissions | String[] | Tag permissions granted through this group |
| share_permissions | String[] | Share permissions granted through this group |
| avatar | String | Path to the group avatar |
Get group details
To fetch details of a group that the authenticated user belongs to:
curl 'https://fileago.mydomain.com/api/groups/GROUPUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/groups/GROUPUUID
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| GROUPUUID | String | UUID of the group |
Update group details
Group administrators can update group profile fields:
curl -X PUT 'https://fileago.mydomain.com/api/groups/GROUPUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "Sales Team",
"description": "Sales team workspace",
"accept_incoming": "admins",
"private_shares_notify": "members"
}'HTTP Request
PUT /api/groups/GROUPUUID
PUT Parameters
| Parameter | Type | Description |
|---|---|---|
| name | String | Optional. New group name. Must be at least 3 characters |
| description | String | Optional. Description between 3 and 1024 characters |
| avatar | String | Optional. Base64 data URL for PNG/JPEG avatar. Pass an empty string to reset to the default avatar |
| broadcast_message | String | Optional. Message to email to group members. Requires email notifications to be enabled |
| accept_incoming | String | Optional. Who can accept incoming shares for the group: members or admins |
| private_shares_notify | String | Optional. Who should be notified for private shares: members or admins |
List group members
To list members of a group:
curl 'https://fileago.mydomain.com/api/groups/GROUPUUID/users' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/groups/GROUPUUID/users
Add a group member
Group administrators can add users to a group:
curl -X POST 'https://fileago.mydomain.com/api/groups/GROUPUUID/users' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"user": "USERUUID",
"permissions": {
"is_admin": false,
"node_permissions": ["read", "write", "download"],
"tag_permissions": ["create"],
"share_permissions": ["private_create", "private_delete"]
}
}'HTTP Request
POST /api/groups/GROUPUUID/users
POST Parameters
| Parameter | Type | Description |
|---|---|---|
| user | String | UUID of the user to add |
| permissions | Object | Permission object for the user’s membership in this group |
| is_admin | Boolean | Whether the user should be a group administrator |
| node_permissions | String[] | Node permissions |
| tag_permissions | String[] | Tag permissions |
| share_permissions | String[] | Share permissions |
Get group member permissions
To fetch one member’s permissions in a group:
curl 'https://fileago.mydomain.com/api/groups/GROUPUUID/users/USERUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/groups/GROUPUUID/users/USERUUID
Update group member permissions
Group administrators can update a member’s group permissions:
curl -X PUT 'https://fileago.mydomain.com/api/groups/GROUPUUID/users/USERUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"is_admin": true,
"node_permissions": ["read", "write", "delete", "download"],
"tag_permissions": ["create", "delete"],
"share_permissions": ["public_create", "public_delete", "private_create", "private_delete"]
}'HTTP Request
PUT /api/groups/GROUPUUID/users/USERUUID
Remove a group member
Group administrators can remove a member from a group:
curl -X DELETE 'https://fileago.mydomain.com/api/groups/GROUPUUID/users/USERUUID' \
-H 'Authorization: Bearer TOKEN'HTTP Request
DELETE /api/groups/GROUPUUID/users/USERUUID
List group tags
To list tags owned by a group:
curl 'https://fileago.mydomain.com/api/groups/GROUPUUID/tags' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/groups/GROUPUUID/tags
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| limit | Integer | Optional. Maximum number of tags to return. Use 0 or omit for the default behavior |
Create group tag
To create a tag owned by a group:
curl -X POST 'https://fileago.mydomain.com/api/groups/GROUPUUID/tags' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{"name": "Important", "class": "red"}'HTTP Request
POST /api/groups/GROUPUUID/tags
POST Parameters
| Parameter | Type | Description |
|---|---|---|
| name | String | Name of the tag |
| class | String | Tag class. Must be one of the server’s configured valid tag classes |
Configure user WebDrive endpoint
To create or replace the authenticated user’s WebDrive endpoint:
curl -X POST 'https://fileago.mydomain.com/api/user/webdrive' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{"endpoint": "johnhome"}'HTTP Requests
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/user/webdrive |
Get the current user’s WebDrive endpoint |
| POST | /api/user/webdrive |
Create or replace the current user’s WebDrive endpoint |
| DELETE | /api/user/webdrive |
Delete the current user’s WebDrive endpoint |
POST Parameters
| Parameter | Type | Description |
|---|---|---|
| endpoint | String | WebDrive endpoint name. Must be 3-10 lowercase alphanumeric characters |
Configure group WebDrive endpoint
Group administrators can create or replace a group’s WebDrive endpoint:
curl -X POST 'https://fileago.mydomain.com/api/groups/GROUPUUID/webdrive' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{"endpoint": "salesdocs", "show_url_to_group_members": true}'HTTP Requests
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/groups/GROUPUUID/webdrive |
Get the group’s WebDrive endpoint |
| POST | /api/groups/GROUPUUID/webdrive |
Create or replace the group’s WebDrive endpoint |
| DELETE | /api/groups/GROUPUUID/webdrive |
Delete the group’s WebDrive endpoint |
POST Parameters
| Parameter | Type | Description |
|---|---|---|
| endpoint | String | WebDrive endpoint name. Must be 3-10 lowercase alphanumeric characters |
| show_url_to_group_members | Boolean | Whether non-admin group members can view the WebDrive URL |
List pending incoming shares for current user
To list incoming shares waiting for the authenticated user to accept or reject:
curl 'https://fileago.mydomain.com/api/user/pending_incoming' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/user/pending_incoming
Accept or reject pending incoming share for current user
To accept a pending incoming share:
curl -X PUT 'https://fileago.mydomain.com/api/user/pending_incoming' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{"uuid": "NODEUUID", "action": "accept"}'HTTP Request
PUT /api/user/pending_incoming
PUT Parameters
| Parameter | Type | Description |
|---|---|---|
| uuid | String | UUID of the pending node returned by the list endpoint |
| action | String | accept or reject |
List pending incoming shares for a group
To list pending incoming shares for a group:
curl 'https://fileago.mydomain.com/api/groups/GROUPUUID/pending_incoming' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/groups/GROUPUUID/pending_incoming
Accept or reject pending incoming share for a group
To accept a pending incoming share for a group:
curl -X PUT 'https://fileago.mydomain.com/api/groups/GROUPUUID/pending_incoming' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{"uuid": "NODEUUID", "action": "accept"}'HTTP Request
PUT /api/groups/GROUPUUID/pending_incoming
PUT Parameters
| Parameter | Type | Description |
|---|---|---|
| uuid | String | UUID of the pending node returned by the list endpoint |
| action | String | accept or reject |
Admin User and Group Actions
The endpoints in this section require administrator privileges. The built-in admin user can operate on the default organization or pass org_id where supported. Other administrator users operate only inside their own organization.
List users as admin
To list users with their group memberships:
curl 'https://fileago.mydomain.com/api/admin/users' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/admin/users
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| org_id | String | Optional. Available to the built-in admin user to select an organization |
Create user
To create a new user:
curl -X POST 'https://fileago.mydomain.com/api/admin/users' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"fullname": "John Doe",
"email": "john@example.com",
"password": "Passw0rd123",
"disk_quota": 1073741824,
"is_active": true,
"is_admin": false,
"comment": "Created using API"
}'HTTP Request
POST /api/admin/users
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| org_id | String | Optional. Available to the built-in admin user to select an organization |
POST Parameters
| Parameter | Type | Description |
|---|---|---|
| fullname | String | Full name. Must be at least 3 characters and must not contain numbers |
| String | Email address. Must be unique | |
| password | String | Password. Must be at least 8 characters and include lowercase, uppercase, and numeric characters |
| disk_quota | Integer | Disk quota in bytes. Use 0 for unlimited or -1 where organization policy allows |
| is_active | Boolean | Whether the user account is active |
| is_admin | Boolean | Whether the user is an administrator |
| comment | String | Optional admin comment |
Get user as admin
To fetch details of a user:
curl 'https://fileago.mydomain.com/api/admin/users/USERUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/admin/users/USERUUID
Update user as admin
To update a user:
curl -X PUT 'https://fileago.mydomain.com/api/admin/users/USERUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"fullname": "John Doe",
"email": "john@example.com",
"disk_quota": 2147483648,
"is_active": true,
"is_admin": false,
"twofa": false,
"comment": "Updated using API"
}'HTTP Request
PUT /api/admin/users/USERUUID
PUT Parameters
| Parameter | Type | Description |
|---|---|---|
| fullname | String | Optional. Full name |
| String | Optional. New unique email address | |
| password | String | Optional. New password |
| disk_quota | Integer | Optional. Disk quota in bytes. Must be greater than current disk usage unless set to 0 |
| is_active | Boolean | Optional. Whether the user account is active |
| is_admin | Boolean | Optional. Whether the user is an administrator |
| twofa | Boolean | Optional. Pass false to disable 2FA for the user |
| comment | String | Optional admin comment |
Delete user
To delete a user:
curl -X DELETE 'https://fileago.mydomain.com/api/admin/users/USERUUID?confirm_delete=yes' \
-H 'Authorization: Bearer TOKEN'To delete a user and transfer owned data to another user or group:
curl -X DELETE 'https://fileago.mydomain.com/api/admin/users/USERUUID?confirm_delete=yes&transfer_data_to=TARGETUUID&delete_all_public_shares=true&delete_all_private_shares=true' \
-H 'Authorization: Bearer TOKEN'HTTP Request
DELETE /api/admin/users/USERUUID
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| confirm_delete | String | Required. Must be yes |
| transfer_data_to | String | Optional. UUID of the user or group that should receive owned data |
| delete_all_public_shares | Boolean | Optional. When transferring data, set to true to delete public shares on transferred nodes |
| delete_all_private_shares | Boolean | Optional. When transferring data, set to true to delete private shares on transferred nodes |
List groups of a user
To list groups assigned to a user:
curl 'https://fileago.mydomain.com/api/admin/users/USERUUID/groups' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/admin/users/USERUUID/groups
Set groups for a user
To assign one or more groups to a user:
curl -X POST 'https://fileago.mydomain.com/api/admin/users/USERUUID/groups' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"groups": {
"GROUPUUID": {
"is_admin": false,
"node_permissions": ["read", "write", "download"],
"tag_permissions": ["create"],
"share_permissions": ["private_create", "private_delete"]
}
}
}'HTTP Request
POST /api/admin/users/USERUUID/groups
POST Parameters
| Parameter | Type | Description |
|---|---|---|
| groups | Object | Object keyed by group UUID. Each value contains the permissions for that group membership |
List groups as admin
To list groups:
curl 'https://fileago.mydomain.com/api/admin/groups' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/admin/groups
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| org_id | String | Optional. Available to the built-in admin user to select an organization |
Create group
To create a group:
curl -X POST 'https://fileago.mydomain.com/api/admin/groups' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{"name": "Sales", "disk_quota": 1073741824}'HTTP Request
POST /api/admin/groups
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| org_id | String | Optional. Available to the built-in admin user to select an organization |
POST Parameters
| Parameter | Type | Description |
|---|---|---|
| name | String | Group name. Must be at least 3 characters |
| disk_quota | Integer | Disk quota in bytes. Use 0 for unlimited |
Get group as admin
To fetch group details:
curl 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/admin/groups/GROUPUUID
Update group as admin
To update group details:
curl -X PUT 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "Sales Team",
"description": "Sales workspace",
"disk_quota": 2147483648
}'HTTP Request
PUT /api/admin/groups/GROUPUUID
PUT Parameters
| Parameter | Type | Description |
|---|---|---|
| name | String | Optional. Group name |
| description | String | Optional. Description between 3 and 1024 characters |
| disk_quota | Integer | Optional. Disk quota in bytes. Must be greater than current disk usage unless set to 0 |
Delete group
To delete a group:
curl -X DELETE 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID?confirm_delete=yes' \
-H 'Authorization: Bearer TOKEN'To delete a group and transfer owned data to another user or group:
curl -X DELETE 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID?confirm_delete=yes&transfer_data_to=TARGETUUID&delete_all_public_shares=true&delete_all_private_shares=true' \
-H 'Authorization: Bearer TOKEN'HTTP Request
DELETE /api/admin/groups/GROUPUUID
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| confirm_delete | String | Required. Must be yes |
| transfer_data_to | String | Optional. UUID of the user or group that should receive owned data |
| delete_all_public_shares | Boolean | Optional. When transferring data, set to true to delete public shares on transferred nodes |
| delete_all_private_shares | Boolean | Optional. When transferring data, set to true to delete private shares on transferred nodes |
List group members as admin
To list members of a group:
curl 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/users' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/admin/groups/GROUPUUID/users
Add group member as admin
To add a user to a group:
curl -X POST 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/users' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"user": "USERUUID",
"permissions": {
"is_admin": false,
"node_permissions": ["read", "write", "download"],
"tag_permissions": ["create"],
"share_permissions": ["private_create", "private_delete"]
}
}'HTTP Request
POST /api/admin/groups/GROUPUUID/users
Get group member as admin
To get one member’s group permissions:
curl 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/users/USERUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/admin/groups/GROUPUUID/users/USERUUID
Update group member as admin
To update a member’s group permissions:
curl -X PUT 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/users/USERUUID' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"is_admin": true,
"node_permissions": ["read", "write", "delete", "download"],
"tag_permissions": ["create", "delete"],
"share_permissions": ["public_create", "public_delete", "private_create", "private_delete"]
}'HTTP Request
PUT /api/admin/groups/GROUPUUID/users/USERUUID
Remove group member as admin
To remove a user from a group:
curl -X DELETE 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/users/USERUUID' \
-H 'Authorization: Bearer TOKEN'HTTP Request
DELETE /api/admin/groups/GROUPUUID/users/USERUUID
Share Approval Actions
List approvers for a user workspace
To list approvers configured for a user’s workspace:
curl 'https://fileago.mydomain.com/api/admin/users/USERUUID/approvers' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/admin/users/USERUUID/approvers
Add approver for a user workspace
To add an approver:
curl -X POST 'https://fileago.mydomain.com/api/admin/users/USERUUID/approvers' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{"approver_id": "APPROVERUSERUUID", "share_type": "public"}'HTTP Request
POST /api/admin/users/USERUUID/approvers
Remove approver from a user workspace
To remove an approver:
curl -X DELETE 'https://fileago.mydomain.com/api/admin/users/USERUUID/approvers/APPROVERUSERUUID/public' \
-H 'Authorization: Bearer TOKEN'HTTP Request
DELETE /api/admin/users/USERUUID/approvers/APPROVERUSERUUID/TYPE
List approvers for a group workspace
To list approvers configured for a group’s workspace:
curl 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/approvers' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/admin/groups/GROUPUUID/approvers
Add approver for a group workspace
To add an approver:
curl -X POST 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/approvers' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{"approver_id": "APPROVERUSERUUID", "share_type": "private"}'HTTP Request
POST /api/admin/groups/GROUPUUID/approvers
Remove approver from a group workspace
To remove an approver:
curl -X DELETE 'https://fileago.mydomain.com/api/admin/groups/GROUPUUID/approvers/APPROVERUSERUUID/private' \
-H 'Authorization: Bearer TOKEN'HTTP Request
DELETE /api/admin/groups/GROUPUUID/approvers/APPROVERUSERUUID/TYPE
Parameters
| Parameter | Type | Description |
|---|---|---|
| approver_id | String | UUID of the user who can approve shares |
| share_type | String | public, private, upload, or share_copy |
| TYPE | String | Share type in the delete URL: public, private, upload, or share_copy |
List shares pending my approval
To list pending share requests that the authenticated user can approve:
curl 'https://fileago.mydomain.com/api/pending_shares' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/pending_shares
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| pending_uuid | String | UUID of the pending approval request |
| workspace_id | String | UUID of the user or group workspace |
| workspace_name | String | Name of the workspace |
| share_type | String | public, private, upload, or share_copy |
| requested_at | Integer | Request timestamp in milliseconds |
| comment | String | Comment supplied by the requester |
| share_info | Object | Share-type specific details |
Approve or reject pending share
To approve a pending share request:
curl -X PUT 'https://fileago.mydomain.com/api/pending_shares/PENDINGUUID/approval' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{"status": "approved", "comment": "Approved"}'To reject a pending share request:
curl -X PUT 'https://fileago.mydomain.com/api/pending_shares/PENDINGUUID/approval' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json' \
-d '{"status": "rejected", "comment": "Rejected"}'HTTP Request
PUT /api/pending_shares/PENDINGUUID/approval
PUT Parameters
| Parameter | Type | Description |
|---|---|---|
| status | String | approved or rejected |
| comment | String | Optional approval or rejection comment |
List my submitted pending shares
To list pending share requests created by the authenticated user:
curl 'https://fileago.mydomain.com/api/my_pending_shares' \
-H 'Authorization: Bearer TOKEN' \
-H 'Content-Type: application/json'HTTP Request
GET /api/my_pending_shares
Withdraw a submitted pending share
To withdraw a pending share request:
curl -X DELETE 'https://fileago.mydomain.com/api/my_pending_shares/PENDINGUUID' \
-H 'Authorization: Bearer TOKEN'HTTP Request
DELETE /api/my_pending_shares/PENDINGUUID